partfrac
부분 분수 분해
설명
예제
기호 표현식의 부분 분수 분해
일변량 및 다변량 표현식의 부분 분수 분해를 구합니다.
먼저 일변량 표현식의 부분 분수 분해를 구합니다. 변수가 하나인 표현식의 경우 변수 지정을 생략할 수 있습니다.
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
는 분모를 실수 계수를 갖는 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
는 분모에서 계수가 부동소수점 숫자로 변환될 수 있는 표현식만 인수분해합니다. f
의 2
를 기호 변수로 바꾸어서 이를 확인하고, 복소수 모드에서 부분 분수 분해를 구합니다. 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
입력 인수
세부 정보
버전 내역
R2015a에 개발됨