partfrac

Частичное разложение дроби

Описание

пример

partfrac(expr,var) находит частичное разложение дроби expr относительно var. Если вы не задаете var, затем partfrac использует переменную, определенную как symvar.

пример

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 в f с символьной переменной и найти частичное разложение дроби в комплексном режиме. 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 извлечь числители и знаменатели терминов.

[N,D] = numden(children(P))
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

Входные параметры

свернуть все

Рациональное выражение, заданное как символическое выражение или функция.

Интересующая переменная, заданная как символьная переменная.

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: partfrac(1/(x^3 - 2),x,'FactorMode','real')

Режим факторизации, заданный как разделенная разделенными запятой парами, состоящая из 'FactorMode' и один из этих векторов символов.

'rational'Факторизация по рациональным числам.
'real'Факторизация в линейный и квадратичный полиномы с вещественными коэффициентами. Коэффициенты входа должны быть преобразованы в действительные числа с плавающей запятой.
'complex'Факторизация в линейные полиномы, коэффициенты которых являются числами с плавающей запятой. Коэффициенты входа должны быть преобразованы в числа с плавающей запятой.
'full'Факторизация в линейные полиномы с точными символьными коэффициентами. Если partfrac невозможно вычислить коэффициенты как точные символьные числа, тогда partfrac представляет коэффициенты при помощи symsum наведение диапазона по root.

Подробнее о

свернуть все

Частичное разложение дроби

Частичное разложение дроби является операцией на рациональных выражениях.

f(x)=g(x)+p(x)q(x),

Где знаменатель выражения может быть записан как q(x)=q1(x)q2(x), частичное разложение дроби является выражением этой формы.

f(x)=g(x)+jpj(x)qj(x)

Здесь, знаменатели qj(x) являются неприводимыми полиномами или степенями неприводимых полиномов. Нумераторы pj(x)являются полиномами меньших степеней, чем соответствующие знаменатели qj(x).

Частичное разложение дроби может упростить интегрирование путем интегрирования каждого члена возвращаемого выражения отдельно.

Введенный в R2015a