만약 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()함수를 이용한 미분방정식을 푸는 가장 기본적인 방법이다.
'프로그래밍언어.Lib > sympy' 카테고리의 다른 글
winPython 에서 ipython 의 sympy 설정 (0) | 2015.06.22 |
---|---|
심파이(sympy) 선형대수 4 : 선형대수 연산 (1) | 2015.06.03 |
심파이(sympy) 선형 대수 3 : 행렬의 연산 (0) | 2015.06.03 |
심파이(sympy) 선형대수 2 : 행렬의 indexing/slicing (0) | 2015.06.03 |
심파이(sympy) 실행 환경 (0) | 2015.06.03 |