9.29 FullPartialFractionExpansion
The domain FullPartialFractionExpansion implements
factor-free conversion of quotients to full partial fractions.
Our examples will all involve quotients of univariate polynomials
with rational number coefficients.
Fx := FRAC UP(x, FRAC INT)
|
Type: Domain
Here is a simple-looking rational function.
f : Fx := 36 / (x^5-2*x^4-2*x^3+4*x^2+x-2)
Type: Fraction UnivariatePolynomial(x,Fraction Integer)
We use fullPartialFractionfullPartialFractionFullPartialFractionExpansion
to convert it to an object of type FullPartialFractionExpansion.
g := fullPartialFraction f
|
Type: FullPartialFractionExpansion(Fraction Integer,UnivariatePolynomial(x,Fraction Integer))
Use a coercion to change it back into a quotient.
Type: Fraction UnivariatePolynomial(x,Fraction Integer)
Full partial fractions differentiate faster than rational functions.
|
Type: FullPartialFractionExpansion(Fraction Integer,UnivariatePolynomial(x,Fraction Integer))
|
Type: Fraction UnivariatePolynomial(x,Fraction Integer)
We can check that the two forms represent the same function.
Type: Fraction UnivariatePolynomial(x,Fraction Integer)
Here are some examples that are more complicated.
f : Fx := (x^5 * (x-1)) / ((x^2 + x + 1)^2 * (x-2)^3)
|
Type: Fraction UnivariatePolynomial(x,Fraction Integer)
g := fullPartialFraction f
|
Type: FullPartialFractionExpansion(Fraction Integer,UnivariatePolynomial(x,Fraction Integer))
Type: Fraction UnivariatePolynomial(x,Fraction Integer)
f : Fx := (2*x^7-7*x^5+26*x^3+8*x) / (x^8-5*x^6+6*x^4+4*x^2-8)
|
Type: Fraction UnivariatePolynomial(x,Fraction Integer)
g := fullPartialFraction f
|
Type: FullPartialFractionExpansion(Fraction Integer,UnivariatePolynomial(x,Fraction Integer))
Type: Fraction UnivariatePolynomial(x,Fraction Integer)
f:Fx := x^3 / (x^21 + 2*x^20 + 4*x^19 + 7*x^18 + 10*x^17 + 17*x^16 + 22*x^15 + 30*x^14 + 36*x^13 + 40*x^12 + 47*x^11 + 46*x^10 + 49*x^9 + 43*x^8 + 38*x^7 + 32*x^6 + 23*x^5 + 19*x^4 + 10*x^3 + 7*x^2 + 2*x + 1)
|
Type: Fraction UnivariatePolynomial(x,Fraction Integer)
g := fullPartialFraction f
|
Type: FullPartialFractionExpansion(Fraction Integer,UnivariatePolynomial(x,Fraction Integer))
This verification takes much longer than the conversion to
partial fractions.
Type: Fraction UnivariatePolynomial(x,Fraction Integer)
For more information, see the paper: Bronstein, M and Salvy, B.
Full Partial Fraction Decomposition of Rational Functions,
Proceedings of ISSAC'93, Kiev, ACM Press. All see
PartialFractionXmpPage
for standard partial fraction decompositions.