[sympy] 파이썬으로 미분방정식 해 구하기(증명 필요없음)

반응형
    반응형

    파이썬으로 미분방정식 해 구하는 방법입니다. 수학적 증명이 필요없이 간단하게 코딩을 이용해 해를 구할 수 있습니다. 코딩이 할 줄만 알면 참 좋은 것 같습니다.


    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})

    미분방정식 초기조건 1개

    이계 미분방정식이므로 초기조건 2개 적용해보겠습니다.
    y(0)=0, y'(0)=0 으로 초기조건을 두겠습니다.

    sy.dsovle(eq,y,ics={f(0):0, sy.diff(y,x).subs(x,0):0})

     

    미분방정식 초기조건 2개

     

    subs는 해당변수에 해당값을 넣겠다는 함수입니다. 딕셔너리 방식으로 subs에 넣어도 가능합니다. 이에 해당하는 내용은 다음 포스팅에서 확인해보시기 바랍니다.
    [Sympy] 파이썬으로 미분하기

     

    [Sympy] 파이썬으로 미분하기

    파이썬으로 미분할 때 Sympy를 사용하면 아주 편리합니다. 정의대로 미분 먼저 정의대로 되는지 구해보겠습니다. 미분의 정의는 순간속력을 알아내기 위한 방법으로 고안했습니다. 속력 = 거리/

    seong6496.tistory.com

    마치며

    간단하게 미분방정식 해를 구해보았습니다.
    수학적 증명이나 원리에 관심이 있으신 분들은 미분방정식 해 구하는 방법은 책을 통해서나 강의를 통해서 공부해보시는 걸 추천합니다.

     

     

     

    관련 포스팅

    [Sympy] 파이썬으로 수학식 만들기(기초연산)

    댓글

    Designed by JB FACTORY

    ....