It would be nice if you could supply a *minimal reproducible example *of
the problem you're reporting. There's a lot going on in your code, and
it's unreasonable to expect that we will guess what you intended.
That said, are you sure you understand the semantics of f[j](x):=...
correctly? The effect of that definition does *not* depend on the current
value of j. For example:
for i thru 2 do if i=1 then f[i](x):=23 else f[i](x):=45
does *not *leave you with f[1](x):=23 and f[2](x):=45:
dispfun(f) => f[i](x):=45
f[1] => lambda([x],45)
f[2] => lambda([x],45)
Maybe you want something like
for i thru 2 do if i=1 then f[i]:funmake('lambda,[ '[x], 23 ] ) else
f[i]:funmake('lambda,[ '[x], 45 ] )
? Just guessing...
-s
On Thu, Jul 18, 2013 at 3:59 AM, Pyotr Ivanshin <pivanshin at gmail.com> wrote:
> The output of this program is simply wrong.
>
> f[0](z,t):=rw5*z^k+rw5*t^k;
> S:"ddc";
> M[0]:5;
> for j:1 thru slength(S) step 1 do (if charat(S, j)="a" then
> (M[j]:M[j-1]-2, h[j](z,t):=(M[j]
> +1)*(M[j]+2)*integrate(f[j-1](z,t), t)/2, f[j](z,
> t):=-(1/4)*integrate(h[j](z, t)
> -h[j](t,
> z), z))
> elseif charat(S, j)="b" then (M[j]:M[j-1]-2, h[j](z,t):=Mu*(M[j]
> +1)*(M[j]+2)*integrate(f[j-1](z,t), t)/2, f[j](z,
> t):=(h[j](z,t)+h[j](t,z))/2)
> elseif charat(S, j)="c" then (M[j]:M[j-1]-1, f[j](z,
> t):=(-1/2)*(M[j]+1)*integrate(f[j
> -1](z,t), z))
> elseif charat(S, j)="d" then (M[j]:M[j-1]-2, f[j](z,
> t):=-(M[j]+1)*(M[j]+2)*integrate(integrate(f[j
> -1](z,t), z), t))
> elseif charat(S, j)="e" then (M[j]:M[j-1]-1, f[j](z,
> t):=-Mu*(M[j]+1)*f[j-1](z, t))
> elseif charat(S, j)="f" then (M[j]:M[j-1]-1, f[j](z,
> t):=(M[j]+1)*integrate(integrate(f[j
> -1](z,t), z), t)/Mu)
> );
>
> Even f[1] (z, t) equals wrong expression.
>
>
> Would anybody be so kind as to show me my mistake?
> _______________________________________________
> Maxima mailing list
> Maxima at math.utexas.edu
> http://www.math.utexas.edu/mailman/listinfo/maxima
>