Main Content

partfrac

부분 분수 분해

설명

예제

partfrac(expr,var)var에 대해 expr의 부분 분수 분해를 구합니다. var을 지정하지 않으면 partfracsymvar에 의해 결정된 변수를 사용합니다.

예제

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

변수를 지정하지 않으면 partfracsymvar에 의해 결정된 변수에 대해 부분 분수 분해를 계산합니다.

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는 분모를 실수 계수를 갖는 1차 및 2차 기약 다항식으로 인수분해합니다. 이 모드는 모든 숫자형 값을 부동소수점 숫자로 변환합니다.

partfrac(f,x,'FactorMode','real')
ans =
0.2099868416491455274612017678797/(x + 1.2599210498948731647672106072782) -...
(0.2099868416491455274612017678797*x - 0.52913368398939982491723521309077)/(x^2 -...
1.2599210498948731647672106072782*x + 1.5874010519681994747517056392723)

복소수에 대한 인수분해로 분해를 반복합니다. 이 모드에서 partfrac는 분모의 2차 다항식을 복소수 계수가 있는 1차 표현식으로 축약합니다. 이 모드는 모든 숫자를 부동소수점으로 변환합니다.

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는 분모를 1차 표현식으로 인수분해하여 2차 다항식을 복소수 계수가 있는 1차 표현식으로 줄입니다. 이 모드는 숫자를 정확한 기호 형식으로 유지합니다.

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는 분모에서 계수가 부동소수점 숫자로 변환될 수 있는 표현식만 인수분해합니다. f2를 기호 변수로 바꾸어서 이를 확인하고, 복소수 모드에서 부분 분수 분해를 구합니다. 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

입력 인수

모두 축소

유리식으로, 기호 표현식 또는 기호 함수로 지정됩니다.

필요한 변수로, 기호 변수로 지정됩니다.

이름-값 인수

선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.

R2021a 이전 버전에서는 쉼표를 사용하여 각 이름과 값을 구분하고 따옴표로 Name을 묶으십시오.

예: partfrac(1/(x^3 - 2),x,'FactorMode','real')

인수분해 모드로, 'FactorMode'와 다음 중 하나의 문자형 벡터가 쉼표로 구분된 쌍으로 지정됩니다.

'rational'유리수에 대한 인수분해.
'real'실수 계수를 갖는 1차 및 2차 다항식으로의 인수분해. 입력값의 계수가 실수 부동소수점 숫자로 변환 가능해야 합니다.
'complex'계수가 부동소수점 숫자인 1차 다항식으로의 인수분해. 입력값의 계수가 부동소수점 숫자로 변환 가능해야 합니다.
'full'정확한 기호 계수를 갖는 1차 다항식으로의 인수분해. partfrac가 계수를 정확한 기호 숫자로 계산할 수 없는 경우 partfracroot에 대해 symsum을 사용하여 계수를 나타냅니다.

세부 정보

모두 축소

부분 분수 분해

부분 분수 분해는 유리식에 대한 연산입니다.

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에 개발됨