2014. 8. 7. 10:03 - 성돌

[Mathematica] 미분방정식 풀기!



Mathematica로 미분방정식을 푸는 방법에 대해서 알아보자. 

미분방정식을 푸는 방법은 DSolve라는 기능을 이용한다. 사용법은 아래와 같다.

1
DSolve[{미분방정식, 초기조건}, 풀고자 하는 함수, 풀고자 하는 함수의 변수]

에서 초기조건은 입력해도 되고, 안해도 된다. 
단, 초기조건을 입력하지 않을 때에는 적분상수가 해(solution)에 등장한다.

초기조건을 사용하지 않는 경우의 예를 보자. 
예를 들어, y'(x)+y(x)=asin(x)라는 미분방정식을 푸는 경우, 아래와 같이하면 미분방정식이 풀린다.

1
DSolve[y'[x] + y[x] == a Sin[x], y[x], x]

에서 a Sin[x]사이에 공간이 있음은 곱셈을 의미한다.
(물론, *이나 팔레트를 이용해 곱셈기호를 사용할 수도 있다)

또한 방정식을 적을 때, '='가 아닌 '=='을 적음에 주목하자. 
이는 이 둘이 항상 같은 것이 아니라, 어쩌다 같은 경우에 대해서 방정식을 풀기에 그렇다.

해로는 아래와 같이 구해진다.
리스트의 형태로 해가 주어지기에 {{}}안에 해가 위치한 것을 볼 수 있다.


초기조건을 입력하지 않았기에, 적분상수인 C[1]가 해에 나타난 것을 볼 수 있다. 

이 해를 ySol이라는 변수에 저장하고 싶다면, 
위에서 보이듯이 해가 괄호안 첫번째에서 다시 한번 괄호안에 첫번째에서 두번째에 위치하기에
아래와 같이 [[1,1,2]]를 붙여주면 된다.

1
ySol = DSolve[y'[x] + y[x] == a Sin[x], y[x], x][[1, 1, 2]]




초기조건을 사용한 경우의 예를 보자. 


예를 들어, 위의 미분 방정식을 y(0)=0의 초기조건으로 푸는 경우 
아래와 같이 하면 미분방정식이 풀린다.

1
DSolve[{y'[x] + y[x] == a Sin[x], y[0] == 0}, y[x], x]

아래는 구해진 해를 보여준다.