Partial fraction decomposition
collapse all in page
Syntax
partfrac(expr,var)
partfrac(expr,var,Name,Value)
Description
example
partfrac(expr,var)
finds the partial fraction decomposition of expr
with respect to var
. If you do not specify var
, then partfrac
uses the variable determined by symvar
.
example
partfrac(expr,var,Name,Value)
finds the partial fraction decomposition using additional options specified by one or more Name,Value
pair arguments.
Examples
Partial Fraction Decomposition of Symbolic Expressions
Find partial fraction decomposition of univariate and multivariate expressions.
First, find partial fraction decomposition of univariate expressions. For expressions with one variable, you can omit specifying the variable.
syms xpartfrac(x^2/(x^3 - 3*x + 2))
ans =5/(9*(x - 1)) + 1/(3*(x - 1)^2) + 4/(9*(x + 2))
Find partial fraction decomposition of a multivariate expression with respect to a particular variable.
syms a bpartfrac(a^2/(a^2 - b^2),a)
ans =b/(2*(a - b)) - b/(2*(a + b)) + 1
partfrac(a^2/(a^2 - b^2),b)
ans =a/(2*(a + b)) + a/(2*(a - b))
If you do not specify the variable, then partfrac
computes partial fraction decomposition with respect to a variable determined by symvar
.
symvar(a^2/(a^2 - b^2),1)partfrac(a^2/(a^2 - b^2))
ans =b ans =a/(2*(a + b)) + a/(2*(a - b))
Factorization Modes
Choose a particular factorization mode by using the FactorMode
input.
Find the partial fraction decomposition without specifying the factorization mode. By default, partfrac
uses factorization over rational numbers. In this mode, partfrac
keeps numbers in their exact symbolic form.
syms xf = 1/(x^3 + 2);partfrac(f,x)
ans =1/(x^3 + 2)
Repeat the decomposition with numeric factorization over real numbers. In this mode, partfrac
factors the denominator into linear and quadratic irreducible polynomials with real coefficients. This mode converts all numeric values to floating-point numbers.
partfrac(f,x,'FactorMode','real')
ans =0.2099868416491455274612017678797/(x + 1.2599210498948731647672106072782) -...(0.2099868416491455274612017678797*x - 0.52913368398939982491723521309077)/(x^2 -...1.2599210498948731647672106072782*x + 1.5874010519681994747517056392723)
Repeat the decomposition with factorization over complex numbers. In this mode, partfrac
reduces quadratic polynomials in the denominator to linear expressions with complex coefficients. This mode converts all numbers to floating point.
partfrac(f,x,'FactorMode','complex')
ans =0.2099868416491455274612017678797/(x + 1.2599210498948731647672106072782) +...(- 0.10499342082457276373060088393985 - 0.18185393932862023392667876903163i)/...(x - 0.62996052494743658238360530363911 - 1.0911236359717214035600726141898i) +...(- 0.10499342082457276373060088393985 + 0.18185393932862023392667876903163i)/...(x - 0.62996052494743658238360530363911 + 1.0911236359717214035600726141898i)
Find the partial fraction decomposition of this expression using the full factorization mode. In this mode, partfrac
factors the denominator into linear expressions, reducing quadratic polynomials to linear expressions with complex coefficients. This mode keeps numbers in their exact symbolic form.
pfFull = partfrac(f,x,'FactorMode','full')
pfFull =2^(1/3)/(6*(x + 2^(1/3))) +...(2^(1/3)*((3^(1/2)*1i)/2 - 1/2))/(6*(x + 2^(1/3)*((3^(1/2)*1i)/2 - 1/2))) -...(2^(1/3)*((3^(1/2)*1i)/2 + 1/2))/(6*(x - 2^(1/3)*((3^(1/2)*1i)/2 + 1/2)))
Approximate the result with floating-point numbers by using vpa
. Because the expression does not contain any symbolic parameters besides the variable x
, the result is the same as in complex factorization mode.
vpa(pfFull)
ans =0.2099868416491455274612017678797/(x + 1.2599210498948731647672106072782) +...(- 0.10499342082457276373060088393985 - 0.18185393932862023392667876903163i)/...(x - 0.62996052494743658238360530363911 - 1.0911236359717214035600726141898i) +...(- 0.10499342082457276373060088393985 + 0.18185393932862023392667876903163i)/...(x - 0.62996052494743658238360530363911 + 1.0911236359717214035600726141898i)
In the complex mode, partfrac
factors only those expressions in the denominator whose coefficients can be converted to floating-point numbers. Show this by replacing 2
in f
with a symbolic variable and find the partial fraction decomposition in complex mode. partfrac
returns the expression unchanged.
syms af = subs(f,2,a);partfrac(f,x,'FactorMode','complex')
ans =1/(x^3 + a)
When you use the full factorization mode, partfrac
factors expressions in the denominator symbolically. Thus, partfrac
in the full factorization mode factors the expression.
partfrac(1/(x^3 + a), x, 'FactorMode', 'full')
ans =1/(3*(-a)^(2/3)*(x - (-a)^(1/3))) -...((3^(1/2)*1i)/2 + 1/2)/(3*(-a)^(2/3)*(x + (-a)^(1/3)*((3^(1/2)*1i)/2 + 1/2))) +...((3^(1/2)*1i)/2 - 1/2)/(3*(-a)^(2/3)*(x - (-a)^(1/3)*((3^(1/2)*1i)/2 - 1/2)))
Full Factorization Mode Returns root
In full factorization mode, partfrac
represents coefficients using root
when it is not mathematically possible to find the coefficients as exact symbolic numbers. Show this behavior.
syms xs = partfrac(1/(x^3 + x - 3), x, 'FactorMode','full')
s =symsum(-((6*root(z^3 + z - 3, z, k)^2)/247 +... (27*root(z^3 + z - 3, z, k))/247 +... 4/247)/(root(z^3 + z - 3, z, k) - x), k, 1, 3)
Approximate the result with floating-point numbers by using vpa
.
vpa(s)
ans =0.1846004942289254798185772017286/(x - 1.2134116627622296341321313773815) +...(- 0.092300247114462739909288600864302 + 0.11581130283490645120989658654914i)/...(x + 0.60670583138111481706606568869074 - 1.450612249188441526515442203395i) +...(- 0.092300247114462739909288600864302 - 0.11581130283490645120989658654914i)/...(x + 0.60670583138111481706606568869074 + 1.450612249188441526515442203395i)
Numerators and Denominators of Partial Fraction Decomposition
Return a vector of numerators and a vector of denominators of the partial fraction decomposition.
First, find the partial fraction decomposition of the expression.
syms xP = partfrac(x^2/(x^3 - 3*x + 2), x)
P =5/(9*(x - 1)) + 1/(3*(x - 1)^2) + 4/(9*(x + 2))
Partial fraction decomposition is a sum of fractions. Use the children function to return a vector containing the terms of that sum. Then, use numden to extract the numerators and denominators of the terms.
C = children(P);C = [C{:}];[N,D] = numden(C)
N =[ 5, 1, 4] D =[ 9*x - 9, 3*(x - 1)^2, 9*x + 18]
Reconstruct the partial fraction decomposition from the vectors of numerators and denominators.
P1 = sum(N./D)
P1 =1/(3*(x - 1)^2) + 5/(9*x - 9) + 4/(9*x + 18)
Verify that the reconstructed expression, P1
, is equivalent to the original partial fraction decomposition, P
.
isAlways(P1 == P)
ans = logical 1
Input Arguments
collapse all
expr
— Rational expression
symbolic expression | symbolic function
Rational expression, specified as a symbolic expression or function.
var
— Variable of interest
symbolic variable
Variable of interest, specified as a symbolic variable.
Name-Value Arguments
Specify optional pairs of arguments as Name1=Value1,...,NameN=ValueN
, where Name
is the argument name and Value
is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.
Before R2021a, use commas to separate each name and value, and enclose Name
in quotes.
Example: partfrac(1/(x^3 - 2),x,'FactorMode','real')
FactorMode
— Factorization mode
'rational'
(default) | 'real'
| 'complex'
| 'full'
Factorization mode, specified as the comma-separated pair consisting of 'FactorMode'
and one of these character vectors.
'rational' | Factorization over rational numbers. |
'real' | Factorization into linear and quadratic polynomials with real coefficients. The coefficients of the input must be convertible to real floating-point numbers. |
'complex' | Factorization into linear polynomials whose coefficients are floating-point numbers. The coefficients of the input must be convertible to floating-point numbers. |
'full' | Factorization into linear polynomials with exact symbolic coefficients. If partfrac cannot calculate coefficients as exact symbolic numbers, then partfrac represents coefficients by using symsum ranging over a root . |
More About
collapse all
Partial Fraction Decomposition
Partial fraction decomposition is an operation on rational expressions.
Where the denominator of the expression can be written as , the partial fraction decomposition is an expression of this form.
Here, the denominators are irreducible polynomials or powers of irreducible polynomials. The numerators are polynomials of smaller degrees than the corresponding denominators .
Partial fraction decomposition can simplify integration by integrating each term of the returned expression separately.
Version History
Introduced in R2015a
See Also
children | coeffs | collect | combine | compose | divisors | expand | factor | horner | numden | rewrite | simplify | simplifyFraction
Topics
- Choose Function to Rearrange Expression
MATLAB-Befehl
Sie haben auf einen Link geklickt, der diesem MATLAB-Befehl entspricht:
Führen Sie den Befehl durch Eingabe in das MATLAB-Befehlsfenster aus. Webbrowser unterstützen keine MATLAB-Befehle.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- Deutsch
- English
- Français
- United Kingdom (English)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本 (日本語)
- 한국 (한국어)
Contact your local office