'dsolve'에 해당되는 글 1건

  1. 2015.06.03 심파이(sympy)를 이용한 미분방정식 풀이 1

 만약 x, y가 심볼로 등록이 되어 있다면 함수 y(x)의 x에 대한 미분은 sympy에서 다음과 같이 표현할 수 있다.


  • y(x) : 독립 변수 x에 대한 함수 y

  • y(x).diff() 혹은 y(x).diff(x,1) : 1차 미분

  • y(x).diff(x,2) : 2차 미분

  • y(x).diff(x,3) : 3차 미분


이것을 이용하면 상미분식을 표현할 수 있다. 예를 들면 다음과 같다.


[표 1] 미분식의 심파이 표현식 예

수식

심파이 표현식

y(x).diff() - cos(x)

y(x).diff(x,2) + 9*y(x) - exp(-2*x)

y(x).diff()-1-y(x)**2


함수를 표현할 때 y(x)와 같이 독립변수도 반드시 표기해야 함을 유의하자.


 dsolve()함수는 미분방정식을 풀어주는 sympy의 기본 함수이다. 첫 번째 인자로 미분식을, 두 번째 인자로 구할 함수를 적어주면 된다. 예를 들어서 다음과 같은 1차 상미방을 푼다고 가정하자.



이 미분방정식의 우변을 0으로 만들면 다음과 같다.



이제 dsolve 함수의 첫 번째 인자로 위 식의 좌변을 넣어주고 두 번째 인자로 y(x)를 인가하면 된다.



여기서 C1은 상수이다.  다른 미분 방정식을 풀어보자.



이 방정식도 우변을 먼저 0으로 만들어야 한다.



이제 이 식의 좌변을 dsolve()함수의 첫 번째 인자로 넣어준다.



2차 미분방정식도 입력할 수 있다. 예를 들어



을 풀려면 다음과 같이 하면 된다.



만약 함수의 미분표현식을 매번 입력하기 번거롭다면 다음과 같이 새로 정의하여 사용하면 된다.



이렇게 정의해 놓으면 이후부터는 y(x).diff() 대신 dy를, y(x).diff(x,2) 와 같이 긴 표현식 대신 ddy를 사용하면된다.



여기서 C1과 C2는 상수이다. 이것이 dsolve()함수를 이용한 미분방정식을 푸는 가장 기본적인 방법이다.



Posted by 살레시오

댓글을 달아 주세요