[sympy] 파이썬으로 미분방정식 해 구하기(증명 필요없음)
- 수학
- 2022. 6. 23.
파이썬으로 미분방정식 해 구하는 방법입니다. 수학적 증명이 필요없이 간단하게 코딩을 이용해 해를 구할 수 있습니다. 코딩이 할 줄만 알면 참 좋은 것 같습니다.
numpy로 미분방정식을 구하는 걸 기대할 수 있으나 numpy는 행렬과 데이터 벡터화에 특화된 모듈이기 때문에 미분방정식의 해를 직접 구하는 건 불가능합니다. 행렬 형태로 이루어진 쟈코스키 같은 특수한 상황에서나 가능합니다.
그렇다고 아예 불가능한 것은 아닙니다. 미분방정식의 해를 구하는 수학적 원리를 잘 모르더라도 파이썬으로 해를 구하실 수 있습니다.
sympy를 이용한 미분방정식 해 구하기
sympy를 이용하면 미분방정식 해를 구할 수 있는데 그 이유는 sympy는 실제 수학처럼 변수를 지정이 가능하고 방정식을 인식을 하기 때문에 미분방정식도 인식을 할 수 있습니다.
그리고 이미 해를 구하는 방식을 구현해놔서 간단하게 해를 구할 수 있습니다.
y''+3y-1=0 라는 미분방정식을 풀어보겠습니다.
변수 지정, 식 만들기
먼저 변수를 지정합니다.
import sympy as sy
x = sy.symbols('x')
f = sy.symbols('f',cls=sy.Function)
y = f(x)
eq = sy.Eq(sy.diff(y,x,2)+3*y-1,0)
y 는 x의 함수로써 작용하므로 f(x)로 정의했습니다.
eq를 출력해보면 미분방정식이 잘 정의된 것을 볼 수 있습니다.
eq
해 구하기
바로 해를 구합니다. 아주 간단합니다.
sy.dsolve(eq,y) 입니다. dsolve는 미분방정식을 풀때 쓰는 함수로 미분방정식에 알맞는 풀이를 하게 됩니다.
sy.dsolve(eq,y)
초기조건 설정
미분방정식을 풀 때 초기조건을 설정해서 조건에 맞는 해를 구하는데 파이썬을 통해서도 가능합니다.
초기조건 1개 y(1)=2를 설정해보겠습니다.
sy.dsolve(eq,y,ics={f(1):2})
이계 미분방정식이므로 초기조건 2개 적용해보겠습니다.
y(0)=0, y'(0)=0 으로 초기조건을 두겠습니다.
sy.dsovle(eq,y,ics={f(0):0, sy.diff(y,x).subs(x,0):0})
subs는 해당변수에 해당값을 넣겠다는 함수입니다. 딕셔너리 방식으로 subs에 넣어도 가능합니다. 이에 해당하는 내용은 다음 포스팅에서 확인해보시기 바랍니다.
[Sympy] 파이썬으로 미분하기
마치며
간단하게 미분방정식 해를 구해보았습니다.
수학적 증명이나 원리에 관심이 있으신 분들은 미분방정식 해 구하는 방법은 책을 통해서나 강의를 통해서 공부해보시는 걸 추천합니다.
관련 포스팅
'수학' 카테고리의 다른 글
[파이썬] 사분위수(Quantiles)란? (0) | 2022.11.07 |
---|---|
파이썬으로 정규분포 그리기 (0) | 2022.10.06 |
수학 기호 입력 사이트들 (0) | 2022.06.17 |
[sympy] 파이썬으로 함수 그래프 그리기 (0) | 2022.04.11 |
[선형대] 정규방정식(Normal equation) (0) | 2021.12.15 |