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