Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

대수 방정식 풀기

Symbolic Math Toolbox™는 기호 방정식 솔버 및 수치 방정식 솔버를 모두 제공합니다. 여기에서는 기호 솔버 solve를 사용하여 방정식을 기호적으로 푸는 방법을 보여줍니다. 기호 솔버와 수치 솔버를 비교하려면 수치 솔버 또는 기호 솔버 선택하기 항목을 참조하십시오.

방정식 풀기

eqn이 방정식인 경우 solve(eqn, x)는 기호 변수 x에 대해 eqn을 풉니다.

== 연산자를 사용하여 익숙한 2차 방정식을 지정하고 solve를 사용하여 계산합니다.

syms a b c x
eqn = a*x^2 + b*x + c == 0;
solx = solve(eqn, x)
solx =
 -(b + (b^2 - 4*a*c)^(1/2))/(2*a)
 -(b - (b^2 - 4*a*c)^(1/2))/(2*a)

solx는 2차 방정식의 두 해를 포함하는 기호 벡터입니다. 입력 eqn이 방정식이 아니고 표현식인 경우 solve는 방정식 eqn == 0을 풉니다.

x 이외의 변수에 대해 해를 구하려면 그 변수를 대신 지정하십시오. 예를 들어, b에 대해 eqn을 풀어 보겠습니다.

solb = solve(eqn, b)
solb =
-(a*x^2 + c)/x

변수를 지정하지 않으면 solvesymvar을 사용하여 어떤 변수에 대해 해를 구할지 선택합니다. 예를 들어, solve(eqn)x에 대해 eqn을 계산합니다.

방정식에 대한 전체 해 반환하기

solve는 방정식의 전체 해를 자동으로 반환하지 않습니다. 방정식 cos(x) == -sin(x)를 풉니다. solve 함수는 많은 해 중 하나를 반환합니다.

syms x
solx = solve(cos(x) == -sin(x), x)
solx =
-pi/4

해의 파라미터 및 해의 조건과 함께 모든 해를 반환하려면 ReturnConditions 옵션을 true로 설정하십시오. 동일한 방정식을 풀어 전체 해를 구합니다. x의 해, 해의 파라미터, 해의 조건 등 세 가지 출력 변수를 입력하십시오.

syms x
[solx, param, cond] = solve(cos(x) == -sin(x), x, 'ReturnConditions', true)
solx =
pi*k - pi/4
param =
k
cond =
in(k, 'integer')

solxx의 해인 pi*k - pi/4를 포함합니다. param 변수는 해의 파라미터인 k를 지정합니다. cond 변수는 해에서 in(k, 'integer') 조건을 지정합니다. 이는 k가 정수여야 함을 의미합니다. 따라서 solvepi/4부터 시작하여 pi*k의 간격으로 반복되는 주기적 해를 반환하며 여기서 k는 정수입니다.

solve에서 반환한 전체 해, 파라미터 및 조건을 사용하여 작업하기

solve에서 반환한 해, 파라미터 및 조건을 사용하여 어떤 구간이나 추가 조건에 맞는 해를 구할 수 있습니다.

-2*pi<x<2*pi 구간 내의 x의 값을 구하려면 k에 대해 해당 구간 내에서 조건 cond에 맞는 solx를 계산하십시오. assume을 사용하여 조건 cond를 가정합니다.

assume(cond)
solk = solve(-2*pi<solx, solx<2*pi, param)
solk =
 -1
  0
  1
  2

이러한 k 값에 대응하는 x의 값을 구하려면 subs를 사용하여 solxk에 값을 대입하십시오.

xvalues = subs(solx, solk)
xvalues =
 -(5*pi)/4
     -pi/4
  (3*pi)/4
  (7*pi)/4

이러한 기호 값을 수치 계산에 사용하기 위해 숫자형 값으로 변환하려면 vpa를 사용하십시오.

xvalues = vpa(xvalues)
xvalues =
  -3.9269908169872415480783042290994
 -0.78539816339744830961566084581988
   2.3561944901923449288469825374596
   5.4977871437821381673096259207391

solve에서 반환한 해 시각화 및 플로팅하기

이전 섹션에서는 solve를 사용하여 방정식 cos(x) == -sin(x)를 풀었습니다. 이 방정식에 대한 해는 fplotscatter와 같은 플로팅 함수를 사용하여 시각화할 수 있습니다.

방정식 cos(x) == -sin(x)의 좌변 및 우변을 다 플로팅합니다.

fplot(cos(x))
hold on
grid on
fplot(-sin(x))
title('Both sides of equation cos(x) = -sin(x)')
legend('cos(x)','-sin(x)','Location','best','AutoUpdate','off')

Figure contains an axes object. The axes object with title Both sides of equation cos(x) = -sin(x) contains 2 objects of type functionline. These objects represent cos(x), -sin(x).

x 값에서의 함수의 값을 계산하고 scatter를 사용하여 해를 점으로 겹쳐 놓습니다.

yvalues = cos(xvalues)
yvalues = 

(-0.707106781186547524400844362104850.70710678118654752440084436210485-0.707106781186547524400844362104850.70710678118654752440084436210485)

scatter(xvalues, yvalues)

Figure contains an axes object. The axes object with title Both sides of equation cos(x) = -sin(x) contains 3 objects of type functionline, scatter. These objects represent cos(x), -sin(x).

예상대로 두 플롯의 교차점에 해가 나타납니다.

복잡한 결과 단순화 및 성능 향상시키기

결과가 복잡하거나, solve가 멈추거나, 성능을 향상시키려는 경우 solve 함수로 방정식 해를 구할 때 발생하는 문제 해결하기 항목을 참조하십시오.

관련 항목