define a sequence



Wonderful
It does work, the problem was to define u[0], now i got it, thanks a lot. (pfuuuu, today dead line to choose between Maxima and Mupad... I got to bring the proof we can use it for everything with our students)
Why it doesn't appear clearly in the manual? It's something we use a lot.
Anyway, thanks for the very very fast answer!
Bye
Eric

On Tue, 7 Sep 2004 13:41:51 -0400
Stavros Macrakis <macrakis@gmail.com> wrote:

> > Is there a way to define a sequence in maxima by recurrence?
> 
> u[0]: 5$
> u[n] := 3*u[n-1]+2$
> 
> u[4] => 485
> 
> Note that individual elements are defined by *setting* them using the
> ":" operator, and calculation rules are defined by *defining* them
> using the ":=" operator in the form u[n]:=... and not u[n+1]:=....
> 
> A few more examples:
> 
> v[0]:0$
> v[n]:=v[n-1]^2*x+1
> 
> u[-5] => ... error (infinite recursion)
> 
> u[0.0] => ... error (infinite recursion)
>       Maxima tests for exact identity, not equality
> 
> Maxima *caches* intermediate results, so:
> 
> t[0]:1$
> t[1]:1$
> t[n]:=t[n-1]+t[n-2]$
> 
> Calculating t[n] takes O(n) time, not O(2^n) time, so t[100] is
> calculated quickly.
> 
> But beware!:  This means that if you want to change the definition of
> t, you must first "kill" it so that Maxima forgets the cached results.
> 
> w[0]:0$
> w[n]:=w[n-1]^3+1$
> w[3] => 9    OK
> 
> Now try changing w[0]
> 
> w[0]:1$
> 
> w[3] => 9    Oops!
> 
> kill(w)$
> w[n]:=w[n-1]^3+1$
> w[0]:1$
> w[3] => 730  OK
> 
> The calculations can be symbolic as well as numeric:
> 
> q[0]:1$ q[1]:1$
> q[n]:=q[n-1]*a+q[n-2]*b$
> q[3] => a*(b+a)+b
> q[5] => a*(a*(a*(b+a)+b)+b*(b+a))+b*(a*(b+a)+b)
> 
> ratsimp(q[5]) => (2*a+1)*b^2+(a^3+3*a^2)*b+a^4
> expand(q[5]) =>  2*a*b^2+b^2+a^3*b+3*a^2*b+a^4
> 
> Or even:
> 
> q[0]:0$ q[a]:a0$ q[b]:b0$
> q[x]:=q[divide(x,a)[1]]*q[divide(x,b)[1]]+1;
> q[a^3+b^3] => 2
> q[a^3+b^3*(a+1)] => (a0+1)*(b0+2)+1
> q[(a+b)^3] => 26
> q[(a+b)^4] => 677