Re: Factorize parts of sums?
- To: mathgroup at christensen.cybernetics.net
- Subject: [mg1687] Re: Factorize parts of sums?
- From: Bob Hanlon <hanlonbo at sgate.com>
- Date: Mon, 17 Jul 1995 01:24:20 -0400
Following is a general approach.
Bob Hanlon
_______________
For forms as simple as (x^2 + 2x + 1 + p), factoring is straightforward
x^2 + 2x + 1 + p
(% - p // Factor) + p
2
1 + p + 2 x + x
2
p + (1 + x)
For less obvious cases, an automated approach is desired.
subFactor::usage = "subFactor[poly, var] factors an n-th order
polynomial into the form (a (x + b)^n + c), when possible.";
subFactor[poly_, var_] :=
Module[{coef = CoefficientList[poly, var], polyOrder,
a, b, c, thePoly, subst},
a = Last[coef]; polyOrder = Length[coef] - 1;
thePoly = Which[
polyOrder == 0, a, polyOrder == 1, a var + c,
True, a (var + b)^polyOrder + c ];
subst = Solve[
CoefficientList[thePoly, var] == coef,
Take[ {c, b}, Min[ polyOrder, 2 ] ] ];
If[ subst == {}, poly, (thePoly /. subst)[[1]] ] ];
Examples:
subFactor[a x^2 + b x + c, x]
2
-b + 4 a c b 2
----------- + a (--- + x)
4 a 2 a
% // Expand (* verification *)
2
c + b x + a x
subFactor[x^2 + 2x + 1 + p, x]
2
p + (1 + x)
subFactor[E^(2x) - 2E^x + 1 + p, E^x]
x 2
(-1 + E ) + p
y (2x + 3y)^6 + p // Expand
6 5 2 4 3 3 4 2 5
p + 64 x y + 576 x y + 2160 x y + 4320 x y + 4860 x y +
6 7
2916 x y + 729 y
subFactor[%, x]
3 y 6
p + 64 y (x + ---)
2
If the polynomial cannot be expressed in the form (a (x + b)^n + c), the
original polynomial is returned:
subFactor[a x^3 + b x^2 + c x + d , x]
2 3
d + c x + b x + a x
> From: moellney at michi.bota.uni-bonn.de (Michael Moellney)
> Newsgroups: comp.soft-sys.math.mathematica
> Subject: Factorize parts of sums?
> Date: 7 Jul 1995 01:20:49 GMT
>
> Hi!
>
> Has anybody any idea, how I might get
>
> a^2 + 2*a + 1 + p
>
> become
>
> (a+1)^2 + p
>
> with a Command in Maple V R2 or Mathematika (or Derive)?
>
> Something like
>
> ShowMePretty(a^2 + 2*a + 1 + p) ????
>
> Thank you very much...
>
> Michael
>
> PLEASE: send me E-Mail: moellney at michi.bota.uni-bonn.de