Mathematica 9 is now available
Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2006
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2006

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Factoring

  • To: mathgroup at smc.vnet.net
  • Subject: [mg65117] Re: [mg65069] Factoring
  • From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
  • Date: Wed, 15 Mar 2006 06:28:33 -0500 (EST)
  • References: <200603141059.FAA24051@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

On 14 Mar 2006, at 11:59, Matt wrote:

> Hello Mathgroup,
>   I'm sure that I've overlooked something obvious, but for the past  
> two
> and a half hours, I've been trying to figure out how to use built-in
> Mathematica functions to just factor the imaginary number 'I' out of
> this:
>
> 4*I*r^2*Sin[2*θ] + I*r^5*Sin[5*θ]
>
> using Factor[] gives me I*r^2*(4*Sin[2*θ] + r^3*Sin[5*θ])
>
> using FactorTerms[] gives me I*(4*r^2*Sin[2*θ] + r^5*Sin[5*θ]) which
> is what I want, but as soon as I add in a common numerical factor, it
> also factors that out as well,
>
> e.g. 4*I*r^2*Sin[2*θ] + 8*I*r^5*Sin[5*θ]
>
> I finally just decided to divide the whole thing by 'I', and do some
> reconstruction of my expression, but I have the distinct feeling I've
> totally missed something very simple.  As an additional example, what
> if I just wanted to extract 2*x*I out of the following:
>
> 4*x*I*Sin[t] + 28*x^3*I*Cos[t]
>
> how would I do that?  In general, I'm looking for a function that says
> "Given an expression 'expr' and another expression 'sub' that is  
> common
> to all additive terms of 'expr', give a result that is the product of
> 'sub' and the result of factoring 'sub' out of 'expr'".
>
> Thanks,
>
> Matt
>


I think dividing out and then multiplying is the right thing to do,  
although "algebraic division" will probably work better than  
"arithmetical" one. Here is one way:



FactorOut[expr_, subexpr_] /;
    PolynomialReduce[expr,
       subexpr][[2]] == 0 :=
   PolynomialReduce[expr,
      subexpr][[1,1]]*subexpr

Now, taking your example:


FactorOut[28*I*Cos[t]*x^3 +
    4*I*Sin[t]*x, x*I*2]


2*I*x*(14*Cos[t]*x^2 +
    2*Sin[t])

while


FactorOut[28*I*Cos[t]*x^3 +
    4*I*Sin[t]*x, x^2]


FactorOut[28*I*Cos[t]*x^3 +
    4*I*Sin[t]*x, x^2]

returns the original input. Of course one could change the latter  
behaviour if a different one was desired.

Andrzej Kozlowski


  • References:
    • Factoring
      • From: "Matt" <anonmous69@netscape.net>
  • Prev by Date: Re: laplace transform
  • Next by Date: Re: Factoring
  • Previous by thread: Factoring
  • Next by thread: Re: Factoring