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