rearranging and collecting terms



Mario Maio a ?crit :
>
> Thank you so much Ted and Valery for the solutions found. Unfortunately
> they presuppose that I know in advance the exact form of the expressions
> resulting from the computation, which is not my case (sorry if I was not
> clear enough). 
This might be the most difficult step : to precise clearly what you want 
in general, not on a particular case.

In fact, factor((3*cos(d1)^3-3*cos(d2)^3)*x) doesn't lead to 
trigonometric expansion, it only factors a polynomial in cos(d1) and 
cos(d2).

In the expression 3*u^3-3^v^3, why do you want to factor out the 
constant 3 and not the polynomial factor (u-v) ?
Which is simpler, 3*(u^3-v^3)*x or 3*(u-v)*(v^2+u*v+u^2)*x ? It depends 
on your needs, the first is easier to read, the second more precise for 
drawing or numerical evaluation for instance.

If you want to get the expression of minimal length, the problem is 
certainly very expensive in general : how to guess that (x+2)*(x^2+x+1) 
may also be written as (x+1)^3+1 without trying all expressions of 
length and coefficients smaller than something ?

If you want to factor out only visible (i.e. readable) common 
subexpressions, you'll simplify 3*(u-v)*u+3*(u-v)*v  to 3*(u-v)*(u+v) 
but also simplify (2+1)*(u^2-v^2) to 3*(u^2-v^2), although all four 
polynomials are equal. Your answer is not canonical.

How do you want to simplify (1-x)+x*(1-x) ? expand or factor ? etc.

> The solution I look for should work for any kind of
> expression, trigonometric (cos 2x, cos^2, sin^4, tan^3, and so on) or not.
> Basically I need to pull out a number or variable factor 
is (u-v) a variable factor, or do you accept only single symbols ?
> from an expression
> without incurring in trigonometric or other kind of expansion; a very simple
> operation to do by hand (in these cases), but difficult for Maxima, it seems
> (I'd like Maxima to do it in order to avoid manual steps that could lead to
> errors).
Depending on the amount of computation you need, you may want to make 
Maxima compute and verify step by step, giving it some hints to display 
results as you want in each case. For instance, if p:3*u^2-3*v^2; and 
you guess 3 being a factor of p, then you may compute p1:3*expand(p/3); 
and then radcan(p-p1); to verify your guess.

This may not help you answering your question, but I hope it helps 
understanding why the question is non trivial, without confusing you too 
much.

Eric Reyssat