Разложение элементарной дроби
partfrac(
находит разложение элементарной дроби с помощью дополнительных опций, заданных одним или несколькими expr
,var
,Name,Value
)Name,Value
парные аргументы.
Найдите разложение элементарной дроби одномерных и многомерных выражений.
Во-первых, найдите разложение элементарной дроби одномерных выражений. Для выражений с одной переменной можно не использовать определение переменной.
syms x partfrac(x^2/(x^3 - 3*x + 2))
ans = 5/(9*(x - 1)) + 1/(3*(x - 1)^2) + 4/(9*(x + 2))
Найдите разложение элементарной дроби многомерного выражения относительно конкретной переменной.
syms a b partfrac(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))
Если вы не задаете переменную, то partfrac
вычисляет разложение элементарной дроби относительно переменной, определенной 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))
Выберите конкретный режим факторизации при помощи FactorMode
входной параметр.
Найдите разложение элементарной дроби, не задавая режим факторизации. По умолчанию, partfrac
факторизация использования по рациональным числам. В этом режиме, partfrac
сохраняет числа в их точной символьной форме.
syms x f = 1/(x^3 + 2); partfrac(f,x)
ans = 1/(x^3 + 2)
Повторите разложение с числовой факторизацией по вещественным числам. В этом режиме, partfrac
включает знаменатель в линейные и квадратичные неприводимые полиномы с действительными коэффициентами. Этот режим преобразует все числовые значения в числа с плавающей запятой.
partfrac(f,x,'FactorMode','real')
ans = 0.2099868416491455274612017678797/(x + 1.2599210498948731647672106072782) -... (0.2099868416491455274612017678797*x - 0.52913368398939982491723521309077)/(x^2 -... 1.2599210498948731647672106072782*x + 1.5874010519681994747517056392723)
Повторите разложение с факторизацией по комплексным числам. В этом режиме, partfrac
уменьшает квадратичные полиномы в знаменателе к линейным выражениям с комплексными коэффициентами. Этот режим преобразует все числа в плавающую точку.
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)
Найдите разложение элементарной дроби этого выражения с помощью полного режима факторизации. В этом режиме, partfrac
включает знаменатель в линейные выражения, уменьшая квадратичные полиномы до линейных выражений с комплексными коэффициентами. Этот режим сохраняет числа в их точной символьной форме.
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)))
Аппроксимируйте результат числами с плавающей запятой при помощи vpa
. Поскольку выражение не содержит символьных параметров помимо переменной x
, результат эквивалентен в комплексном режиме факторизации.
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)
В комплексном режиме, partfrac
факторы только те выражения в знаменателе, коэффициенты которого могут быть преобразованы в числа с плавающей запятой. Покажите это, заменив 2
inf
с символьной переменной и находят разложение элементарной дроби в комплексном режиме. partfrac
возвращает неизменное выражение.
syms a f = subs(f,2,a); partfrac(f,x,'FactorMode','complex')
ans = 1/(x^3 + a)
Когда вы используете полный режим факторизации, partfrac
выражения факторов в знаменателе символически. Таким образом, partfrac
в полной факторизации режим учитывает выражение.
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)))
root
В полном режиме факторизации, partfrac
представляет коэффициенты с помощью root
когда не математически возможно найти коэффициенты как точные символьные числа. Покажите это поведение.
syms x s = 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)
Аппроксимируйте результат числами с плавающей запятой при помощи 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)
Возвратите вектор из числителей и вектор из знаменателей разложения элементарной дроби.
Во-первых, найдите разложение элементарной дроби выражения.
syms x P = partfrac(x^2/(x^3 - 3*x + 2), x)
P = 5/(9*(x - 1)) + 1/(3*(x - 1)^2) + 4/(9*(x + 2))
Разложение элементарной дроби является суммой частей. Используйте children
функционируйте, чтобы возвратить вектор, содержащий термины той суммы. Затем используйте numden
извлекать числители и знаменатели терминов.
C = children(P); C = [C{:}]; [N,D] = numden(C)
N = [ 5, 1, 4] D = [ 9*x - 9, 3*(x - 1)^2, 9*x + 18]
Восстановите разложение элементарной дроби от векторов из числителей и знаменателей.
P1 = sum(N./D)
P1 = 1/(3*(x - 1)^2) + 5/(9*x - 9) + 4/(9*x + 18)
Проверьте что восстановленное выражение, P1
, эквивалентно исходному разложению элементарной дроби, P
.
isAlways(P1 == P)
ans = logical 1
children
| coeffs
| collect
| combine
| compose
| divisors
| expand
| factor
| horner
| numden
| rewrite
| simplify
| simplifyFraction