[MATLAB] 방정식 해 구하기, solve 함수

간단한 방정식의 경우 눈으로, 또 손으로 쉽게 풀어낼 수 있지만, 왠만한 고차원의 방정식은 계산하기 쉽지 않다. 그렇다면 매트랩으로 방정식의 해를 구해보자.

먼저 간단한 예를 들어보겠다. $x^2 + 2x + 1 = 0$ 의 해는 중근으로 -1임을 우리는 쉽게 알 수 있다. 이것을 매트랩을 구현하면, 아래와 같다.



먼저 방정식의 변수를 syms 명령어를 이용해서 설정해주고, 그 다음 방정식을 입력해준다. solve 함수에 방정식과 변수를 입력해주면 방정식의 해가 출력된다.

간단한 예를 하나 더 들겠다. $x^3 - 6x^2 + 11x - 6 =0$의 해는 무엇일까? 이 방정식 역시 그렇게 해를 구하기가 어려운 것은 아니지만, 매트랩을 통해 풀어보자.


이 방정식의 해는 1, 2, 3이라고 solve 함수가 알려주었다. 혹시 의심가시는 분은 손으로 계산해보시면 됩니다.^^

마지막으로 손으로 풀기 정말 귀찮은 방정식을 하나 풀어보자.

 

$z^2 + 3.898z + 1.1794 = 0$

물론 그 유명한 근의 공식을 사용하면 누구든 풀 수 있다. 단지 오래걸릴 뿐. 인간은 도구를 활용할 수 있지 않은가? 매트랩으로 풀어보자. 



왜인지는 잘 모르겠지만, 이런 형태로 해가 출력되었다. 하지만 하나씩 복사해서 그대로 command window에 입력하면, 계산된 결과를 볼 수 있다.

 


결국 이 방정식의 해는 -3.5674, -0.3306임을 알게 되었다.

그리고 간혹 방정식의 해를 위와 같은 방식으로 구했는데 root라는 것이 포함된 어떠한 식으로 표현될 때가 있다.

 

 

당혹스럽다. 그러나 이에 대한 설명을 매트랩 측에서 다음과 같이 해주고 있다. 

 

결론만 말하자면 이런 경우에는 vpa함수를 활용하라는 것이다. 

 

해를 구하고 보니 6개의 해가 모두 복소수였다. (그런데 거의 허수부분은 모두 0에 가깝다. $10^{-38}$, $10^{-39}$이 붙어있기 때문이다.)

 



제가 이해한 것을 바탕으로 설명한 것이기 때문에, 혹시 틀린 부분이 있을수도 있습니다. 그런 부분 있다면, 저에게 한수 가르쳐주시길 부탁드리며 글을 마칩니다.^^

댓글()