On 2013-11-10, Jon Robinson <jonwrobinson at verizon.net> wrote:
> Eq01: %rho[rta](%lambda):='product(%rho[j](%lambda),j,1,4);
> Eq02: %rho[ham](%theta,%lambda):=rho[5](%lambda)*RVS(%theta,B);
> Eq03: %rho[aft](%lambda):='product(%rho[j](%lambda),j,6,N[op]);
> Eq04a: %rho[sys](%theta,%lambda):=('product(rho[j](%lambda),j,1,N[op]))*RVS(%theta,B);
> Eq04b: %rho[fix](%lambda):=%rho[5](%lambda)*%rho[aft](%lambda)*%rho[rta](%lambda);
> Eq04c: %rho[sys](%theta,%lambda):=rho[fix](%lambda)*RVS(%theta,B);
Jon, thanks for your interest in Maxima, and your perseverence.
I think I see the problem here. When you write function definitions
foo[bar](x) := ... foo[baz](x) := ..., Maxima assumes that these are all
members of a family of functions which all take the same number of
subscripts and all take the same number of arguments. So you can't write
foo[bar](x) := ... and foo[baz, quux](x) := ... (different number of
subscripts) and you can't write foo[bar](x) := and foo[baz](x, y) := ...
(different number of arguments). I think you're bumping into the second
scenario. There is no strong reason for it -- that is just how it is
implemented. I have to admit also that the error message isn't very
enlightening.
I suppose as a workaround you can write %rho[foo](x) for the
two-argument functions and supply a list of two elements. I'll try to
think of something more elegant.
I see that you've used rho in some places and %rho in others -- I'm not
sure if these are treated the same. (Certainly not in command-line
Maxima, but maybe wxMaxima is different in that respect.)
best
Robert Dodier