exponenta event banner

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