본문 바로가기
지식공학/Matlab

매트랩 방정식 풀기(미분, 적분)

by Eric87 2020. 11. 4.
반응형

안녕하세요 공학도 eric입니다. 이번에 알아볼 matlab 내용은 방정식의 해를 구하는 방법과 미분과 적분하는 방법입니다. 2차 방정식의 근을 구하기 위해서는 다들 근의 공식을 이용한다는 것을 알고 있을 것입니다. matlab에서는 수식을 입력하고 solve라는 명령어를 통해 해를 구할 수 있습니다. 그럼 수식을 입력하는 법과 근을 구하는 법 직접해보겠습니다.

일반 방정식의 해 구하기

$$x^2-5x+6=0$$위 식의 해는 인수분해 후 $$(x-2)(x-3)=0$$해는 2와 3이 됩니다. 이것을 매트랩에 넣어보겠습니다.

>> syms x
>> eqn = x^2-5*x+6==0;
>> solve(eqn)
 
ans =
 
2
3
 
>> 

이번 포스트에서 다양한 함수를 표현할 때 사용했던 syms를 기용하면 됩니다. eqn이나 다른 명칭으로 식을 넣어주면 x에 대한 방정식으로 인식을 하게 됩니다. 그리고 solve를 이용해 해당 방정식을 입력하면 근을 찾아줍니다. 좀더 어려운 방정식을 해보겠습니다.

>> eqn = x^2-7*x+2==0;
>> solve(eqn)
 
ans =
 
7/2 - 41^(1/2)/2
41^(1/2)/2 + 7/2
 
>> 

$$x^2-7*x+2=0$$위 2차 방정식을 근의 공식으로 대입하여 해를 구하면 $$x=\frac{7\pm \sqrt{41}}2$$같게 나오는 것을 확인 할 수 있습니다. 이처럼 2차 방정식 뿐만아니라 고차 방정식의 해를 solve를 이용해서 구할 수 있습니다.


미분 방정식

이번에는 미분을 해보겠습니다.$$y = (x+c)e^{x}, \ y(0) = 0.5$$위 식을 미분하여 도함수를 구해보도록 하겠습니다. 위 식의 미분방정식정도는 손으로 구할 수 있습니다. $$y' = e^{x} + (x+c)e^{x}$$입니다. 매트랩에도 넣어보겠습니다.

>> syms x c
>> y=(x+c)*exp(x);
>> diff(y)
 
ans =
 
exp(x) + exp(x)*(c + x)
 
>> 

diff의 명령어를 이용해서 동일한 미분방정식이 유도되는 것을 확인 할 수 있습니다. 여기서 초기 조건 y(0)=0.5가 주어졌으므로 c=0.5이겠죠? 위의 값은 1차 미분을 한 것입니다. 만약 2차 미분 방정식을 구하고 싶으면 diff(y,2)를 입력하면 됩니다.

>> diff(y,2)
 
ans =
 
2*exp(x) + exp(x)*(c + x)
 
>> 

미분방정식의 일반 해 및 특수 해를 구하기 위해서는 문제에서 도함수와 초기 조건이 주어집니다. $$y'\tan x =2y-8, \ y(\frac{\boldsymbol{\pi }}2)=0$$위의 문제를 풀어보도록 하겠습니다.

syms y(x)
eqn = diff(y)*tan(x) == 2*y-8;
s = dsolve(eqn)
 
s =
 
C1*sin(x)^2 + 4

위 코드는 초기 조건을 적용하지 않은 미분 방정식의 일반 해를 dsolve라는 명령어를 통해 구했습니다. 초기 조건을 적용하면 아래와 같습니다.

>> syms y(x)
eqn = diff(y)*tan(x) == 2*y-8;
cond = y(pi/2) == 0;
s = dsolve(eqn,cond)
 
s =
 
4 - 4*sin(x)^2

이와 같은 방법으로 미분방정식을 알고 초기 값을 알면 해를 구할 수 있습니다.


다음은 적분을 해보겠습니다. 가장 간단한 일차함수의 적분을 구하는 방법입니다.

>> syms x
f=x;
int(f)
 
ans =
 
x^2/2

적분을 하기 위해서는 int라는 명령어를 사용합니다. 적분을 하게 되면 적분 구간을 설정해 줍니다. 위 코드에서 1부터 4까지 적분 구간을 설정하여 적분 값을 구해보겠습니다.

>> int(f,1,4)

ans =
 
15/2

이렇게 매틀랩을 통해 방정식의 해와 미분, 적분하는 방법을 알아보았습니다.

반응형

댓글