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

```

• Prev by Date: Re: Reverse order terms and 0-origin array.
• Next by Date: Re: stat package
• Previous by thread: Factorize parts of sums?
• Next by thread: Does Mma solve INTEGER Problems