MathGroup Archive 2005

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

Search the Archive

Re: Simplification to Partial Fraction

  • To: mathgroup at smc.vnet.net
  • Subject: [mg59706] Re: [mg59679] Simplification to Partial Fraction
  • From: Daniel Lichtblau <danl at wolfram.com>
  • Date: Thu, 18 Aug 2005 00:16:37 -0400 (EDT)
  • References: <200508170800.EAA24842@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

Jon Palmer wrote:
> I was wondering if someone can help with a Partial Fraction problem.
> 
> I have a calculated expression, u, which is a quotient of two polynomials in
> three variables x, y & z.
> 
> 
> u = P(x,y,z)/Q(x,y,z)
> 
> 
> I know that the quotient, when simplified, is a sum of partial fractions of
> the form
> 
> u = R(x,y,z) + S(x,y,z)/(x^2 +y^2)  + T(x,y,z)/(y^2 +z^2) + U(x,y,z)/(z^2
> +x^2)
> 
> 
> Is there a way to simplify the expression into the parial fraction form?
> 
> I have tried various combinations of Simplify, Apart, Collect etc. and can't
> find a method that works. Any help would be much appreciated.
> 
> Thanks
> Jon Palmer
> 


Here are a few possibilities. I like the last one best. As a 
preprocessing step, first put the whole thing into an explicit rational 
function form using Together. Obtain numerator and denominator.

For example:
ee = x^3+x*y+z^2+x/(y^2+z^2) + y^2/(x^2+z^2) + x*y*z/(x^2+y^2)
This is constructed so that we can see clearly what is the expected result.

ff = Together[ee]
{num,den} = {Numerator[ff],Denominator[ff]}

(1)
With a certain amount of effort the desired breakup can be done by 
iterations of

Developer`PolynomialDivision[num,den,var]

where var is one of {x,y,z}. You get a pair of the form 
{quotient,remainder}. Each quotient will need to be further split by 
polynomial division so as to get quotients with respect to all three 
variables. Likewise remainders from one division will need to be further 
divided by denominators with respect to remaining variables.

(2)
Do
{{poly},rem} = PolynomialReduce[num, den]
to get polynomial part and remainder. For the latter, try
Apart[rem,den,x]
to get a partial fraction decomposition. You may need to further split 
pieces and do Apart on them with respect to {y,z}.

(3)
Again get the polynomial part using PolynomialReduce.
{{poly},rem} = PolynomialReduce[num, den]
Now work on the parts involving a fraction over (x^2+y^2).
{{pz},dz} = PolynomialReduce[rem*(x^2+y^2), den, z]
We recover the fraction as pz/(x^2+y^2). Now remove the (x^2+y^2) factor 
from dz and recover the part over (x^2+z^2).
{{py},dy} = PolynomialReduce[dz*(x^2+z^2)/(x^2+y^2), den, y]
It will be py/(x^2+y^2). Now remove the (x^2+y^2) factor from the 
remainder and recover the fractional part over (x^2+z^2).
{{px},dx} = PolynomialReduce[dy*(y^2+z^2)/(x^2+z^2), den, x]
At this point, if you've been living a just life, the remainder should 
be zero.

For our example above:
In[94]:= InputForm[result = {poly,pz/(x^2+y^2),py/(x^2+z^2),px/(y^2+z^2)}]
Out[94]//InputForm=
{x^3 + x*y + z^2, (x*y*z)/(x^2 + y^2), y^2/(x^2 + z^2), x/(y^2 + z^2)}

In[95]:= dx===0
Out[95]= True


Daniel Lichtblau
Wolfram Research


  • Prev by Date: Re: Problem behavior with FindMaximum
  • Next by Date: Re: Simplification to Partial Fractions
  • Previous by thread: Simplification to Partial Fraction
  • Next by thread: Re: Simplification to Partial Fraction