본문 바로가기
Python

파이썬 Sympy, 방정식 풀이 방법 및 코드 공유 (Python)

by 무적물리 2020. 3. 21.

파이썬을 여러 문제에 적용하면서 가끔 방정식 풀이를 필요로 할 때가 있습니다. 파이썬에서 제공하는 다양한 패키지 중 방정식을 풀이해주는 패키지가 있습니다. 해당 패키지의 이름은 'Sympy' 입니다. 오늘은 해당 패키지를 사용하여 간단하게 방정식 풀이를 할 수 있는 코드를 여러분과 공유하고자합니다.




방정식 풀이 예제

이번 포스팅에서 다루고자 하는 연립방정식 예제는 아래와 같습니다. 두개의 방정식인 연립방정식으로 이루어져 있습니다. 변수가 2개이고, 방정식이 2개이니 변수를 쉽고 간단하게 구할 수 있지만, 파이썬을 이용해서 구해보겠습니다. 차후에 어려운 문제를 풀 때 도움이 됩니다.


# 방정식

x + 2y = 3 

3x - y = -2


# 해

x = -1/7, y = 11/7


패키지 선언

방정식 풀이를 위한 패키지는 'Sympy' 입니다. 아시는 바와 같이 pip로 설치해서 사용하시면 됩니다. Sympy 패키지 중 변수를 선언할 Symbol 함수와 방정식을 풀어줄 solve 함수를 호출하겠습니다.



from sympy import Symbol, solve


변수 및 방정식 선언

방정식 풀이를 위한 변수와 방정식을 선언해 주어야합니다. 이번 포스팅에서 다루어 볼 예제는 연립방정식 풀이입니다. 실제로 변수가 1개인 방정식은 간단하게 구현이 가능하지면 연립방정식의 풀이는 복잡한 수식을 써야하기 때문에 Sympy 패키지를 활용하면 빠르고 간결하게 방정식을 풀 수 있습니다.


방정식을 풀기 위해서는 방정식의 한쪽을 0으로 만들어 주도록 이항시켜줘야 합니다. 다음으로 0이 된 항을 변수화해주면 됩니다. 말로 설명하자니 어렵네요. 아래 코드를 보시면 이해가 잘 될겁니다.


x = Symbol('x')

y = Symbol('y')


equation1 = x + 2*y - 3

equation2 = 3*x - y + 2


방정식 풀이 및 출력

방정식을 풀기 위해서 Sympy에 내장된 solve 함수를 사용해야합니다. solve 함수 안에는 위에서 선언한 equation을 차례로 입력해주면 됩니다. 출력을 위해 여러분이 잘 아시는 print문을 사용했습니다.


Result = solve((equation1, equation2), dict=True)

print(Result)



방정식 풀이 전체 코드

위에서 설명한 코드를 하나로 합치면 아래와 같습니다. 이렇게 붙여넣고 Run을 하면 자동으로 해가 구해져서 출력됩니다.


from sympy import Symbol, solve


x = Symbol('x')

y = Symbol('y')


equation1 = x + 2*y - 3

equation2 = 3*x - y + 2


Result = solve((equation1, equation2), dict=True)

print(Result)


방정식 풀이 결과

위와 같은 연립방정식을 풀게 되면 누구나 알아볼 수 있도록 방정식 풀이 결과가 아래와 같이 출력됩니다. 이를 적절히 가공해서 사용하시거나 값 자체를 사용하시면 됩니다. 방정식 풀이 결과는 방정식 풀이 예제의 결과와 동일한 것을 확인하실 수 있습니다.


[{x: -1/7, y: 11/7}]


마무리

다양한 파이썬 패키지 중 하나인 Sympy를 사용해서 방정식 풀이를 해보았습니다. 실제로 간간히 회사에서 문제를 풀기위해 사용되는 패키지이며, 방정식 풀이 방법입니다. 2차 연립 방정식은 다른 방법으로 풀면되지만, 3차 부터는 행렬 연산이나 위와 같은 패키지를 통해서 풀어야합니다. 위와 같은 코드를 기반으로 변수와 방정식 개수를 확장해서 적용해보시면 재미있습니다.


댓글