주요 콘텐츠

root

R2026b

다항식의 근 표현하기

설명

r = root(p,x)는 x에 대한 기호 다항식 p의 번호가 매겨진 근으로 구성된 열 벡터를 반환합니다. 근을 구하기 위해 높은 차수 다항식을 기호적으로 푸는 것은 복잡할 수 있으며 모든 다항식을 해석적으로 풀 수는 없습니다. 이 경우 Symbolic Math Toolbox™는 root 함수를 사용하여 다항식의 근을 표현합니다.

예제

r = root(p,x,k)는 x에 대한 기호 다항식 p의 k번째 근을 표현합니다.

예제

예제

모두 축소

root를 사용하여 다항식 x3+1의 근을 표현합니다. root 함수는 열 벡터를 반환합니다. 이 벡터의 요소는 다항식의 근 3개를 표현합니다.

syms x
p = x^3 + 1;
root(p,x)
ans = 

(root(x3+1,x,1)root(x3+1,x,2)root(x3+1,x,3))

root(x3+1,x,1)은 p의 첫 번째 근을 표현하고 root(x3+1,x,2)는 두 번째 근을 표현하는 식입니다. 높은 차수 다항식의 근을 표현하려면 이 구문을 사용하십시오.

2차 다항식 x2-x-1의 근을 구합니다. root 함수를 사용하여 이러한 근을 표현할 수 있습니다.

syms x
p = x^2 - x - 1;
r = root(p,x)
r = 

(root(x2-x-1,x,1)root(x2-x-1,x,2))

이러한 근을 고정밀도 부동소수점 숫자로 변환하기 위해 vpa를 사용할 수 있습니다.

rVpa = vpa(r)
rVpa = 

(-0.618033988749894848204586834365641.6180339887498948482045868343656)

높은 차수 다항식을 풀 때 solve는 root를 사용하여 근을 표현합니다. 또는 MaxDegree 옵션을 사용하여 양함수 해를 반환하거나 vpa를 사용하여 수치 결과를 반환할 수 있습니다.

x^3 + 3*x - 16의 근을 구합니다.

syms x
p = x^3 + 3*x - 16;
R = solve(p,x)
R = 

(root(z3+3 z-16,z,1)root(z3+3 z-16,z,2)root(z3+3 z-16,z,3))

MaxDegree 옵션을 다항식 차수로 설정하여 근을 명시적으로 구합니다. 4보다 높은 차수의 다항식은 양함수 해를 갖지 않습니다.

Rexplicit = solve(p,x,"MaxDegree",3)
Rexplicit = 

(σ1-1σ112 σ1-σ12-3 1σ1+σ1 i212 σ1-σ12+3 1σ1+σ1 i2)where  σ1=65+81/3

vpa를 사용해 R을 고정밀도 부동소수점으로 변환하여 근을 수치적으로 계산합니다.

Rnumeric = vpa(R)
Rnumeric = 

(2.1267693318103912337456401562601-1.0633846659051956168728200781301-2.5283118563671914055545884653776 i-1.0633846659051956168728200781301+2.5283118563671914055545884653776 i)

root에 대한 호출에 파라미터가 포함된 경우 vpa를 호출하기 전에 subs를 사용하여 파라미터에 숫자를 대입합니다.

root 함수를 simplify, subs, diff와 같은 Symbolic Math Toolbox 함수에 대한 입력값으로 사용할 수 있습니다.

simplify 함수를 사용하여 root를 포함하는 표현식을 단순화합니다.

syms x
r = root(x^6 + x, x, 1);
simplify(sin(r)^2 + cos(r)^2)
ans = 1

subs를 사용하여 root의 파라미터에 숫자를 대입합니다.

syms b
subs(root(x^2 + b*x, x, 1), b, 5)
ans = root(x2+5 x,x,1)

vpa를 사용하여 root를 숫자형으로 변환하기 전에 subs를 사용하여 파라미터에 값을 대입해야 합니다.

diff를 사용하여 파라미터에 대한 root를 포함하는 표현식을 미분합니다.

diff(root(x^2 + b*x, x, 1), b)
ans = 

root(x2+b x,x,1)b

ilaplace를 사용하여 두 다항식의 비에 대한 라플라스 역변환을 구합니다. 라플라스 역변환은 root에 대한 식으로 반환됩니다.

syms s
G = (s^3 + 1)/(s^6 + s^5 + s^2);
H = ilaplace(G)
H = 

t-∑k=14et root(z4+z3+1,z,k)4 root(z4+z3+1,z,k)+3

출력값으로 root 함수를 받는 경우 이후 기호 계산에서 root 함수를 입력값으로 사용할 수 있습니다. 하지만 수치 결과가 필요한 경우에는 vpa를 사용하여 root 함수를 고정밀도 수치 결과로 변환해야 합니다.

vpa를 사용하여 라플라스 역변환을 숫자형으로 변환합니다.

H_vpa = simplify(vpa(H))
H_vpa = t+0.30881178580997278695808136329347 e-1.0189127943851558447865795886366 t cos(0.60256541999859902604398442197193 t)-0.30881178580997278695808136329347 e0.5189127943851558447865795886366 t cos(0.666609844932018579153758800733 t)-0.6919689479355443779463355813596 e-1.0189127943851558447865795886366 t sin(0.60256541999859902604398442197193 t)-0.16223098826244593894459034019473 e0.5189127943851558447865795886366 t sin(0.666609844932018579153758800733 t)

입력 인수

모두 축소

기호 다항식으로, 기호 표현식으로 지정됩니다.

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

다항식 근의 번호로, 숫자, 벡터, 행렬, 다차원 배열, 또는 기호 숫자, 기호 벡터, 기호 행렬 또는 기호 다차원 배열로 지정됩니다. k가 비 스칼라이면 root는 k에 대해 요소별로 작동합니다.

예: root(f,x,3)은 f의 세 번째 근을 표현합니다.

팁

  • 가변 정밀도 기호 숫자를 반환하기 위해 vpa를 사용하여 root 함수를 포함하는 기호 표현식을 수치적으로 근사할 수 있습니다. R2023a부터 matlabFunction을 사용하여 표현식을 Symbolic Math Toolbox 없이 사용 가능한 MATLAB® 함수로 변환할 수 있습니다. 생성된 파일은 double형 숫자에 대해 연산을 수행하는 roots 함수를 사용합니다.

버전 내역

R2015b에 개발됨

참고 항목

| |