Feature request



This is good but backwards.

Why is there no commute command?  I would like to

commute(b*y^2+d*x*y+a*x^2);

and get 

a*x^2+d*x*y+b*y^2

It is an axiom B+A=A+B, why can't I use it to reverse the result this way, if I choose?  Also there is no associate command either.  There is factor and expand for the distribute law.

Rich



 ------------Original Message------------
From: "S. Newhouse" <sen1 at math.msu.edu>
To: "Richard Hennessy" <rvh2007 at comcast.net>
Cc: "Harald Geyer" <harald at lefant.net>, "Maxima List" <maxima at math.utexas.edu>
Date: Mon, Apr-21-2008 1:32 PM
Subject: Re: [Maxima] Feature request

Richard Hennessy wrote:
> I wanted something like this so thanks.  The only thing is the degree of the polynomials.  I used the quadratic case as an example but really the reason I asked about this is that I have a power series in x and y and I needed to keep a lot of terms for accuracy.  In one case to get sufficient accuracy I used 500 terms.
>
> Rich
>
>
>
>
>
>  ------------Original Message------------
> From: Harald Geyer <harald at lefant.net>
> To: "Richard Hennessy" <rvh2007 at comcast.net>
> Cc: "Maxima List" <maxima at math.utexas.edu>
> Date: Mon, Apr-21-2008 12:01 PM
> Subject: Re: [Maxima] Feature request
>
> Hi Richard.
>
>   
>>  I would really like it if you could have some control over the order
>> of terms in a polynomial by using some external package which could be
>> loaded when needed.
>>     
>
> I don't think that needs an extra package. All you need to do is keep
> the core simplifier from reordering terms. Perhaps the following
> is able to give you some ideas, how to do that. The important
> part ist the "simp:false" statement - but be careful, maxima heavily
> depends on it's core simplifier...
>
> myprint(expr, pred):=block([simp:false],
>         print(apply("+", sort(subst("[", "+", expr), pred))));
> (%i31) expr:y+x^2+x+b+a;
> (%i32) myprint(expr, lambda([u,v], orderlessp(u,v)))$
> a+b+x+x^2+y
> (%i33) myprint(expr, lambda([u,v], orderlessp(v,u)))$
> y+x^2+x+b+a
> (%o34) mypred(x,y):=if atom(x) and not atom(y) then true
>         else (if not atom(x) and atom(y) then false
>                 else orderlessp(x,y))
> (%i35) myprint(expr, mypred)$
> a+b+x+y+x^2
>
> Of course you can invent any other predicate you like...
>
> HTH,
> Harald
>
>
>
>
>
> _______________________________________________
> Maxima mailing list
> Maxima at math.utexas.edu
> http://www.math.utexas.edu/mailman/listinfo/maxima
> .
>
>   
You can get the terms of order n easily as follows: 

I will suppress the outputs since the exponents get shifted in the 'cut 
and paste'

Try the following commands.

(%i12) p: a*x^2 + b*y^2 + d*x*y + e*x + f*y + g;

(%i13) t1: taylor(p,[x,y],0,2);

(%i14) part(t1,3);

(%i14) p1: taylor(x*exp(x+y),[x,y],0,5);

(%i15) part(p1,5);   


HTH,
 -sen