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
- References:
- Simplification to Partial Fraction
- From: "Jon Palmer" <Jonathan.palmer@new.ox.ac.uk>
- Simplification to Partial Fraction