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 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 извлекать числители и знаменатели условий.

[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')

Режим Factorization в виде разделенной запятой пары, состоящей из '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