84. 파이썬 sympy 외부 라이브러리

  • 네이버 블로그 공유하기
  • 카카오톡 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기

지난 포스팅에서는 파이썬 외부 라이브러리 Faker 를 통해 테스트 데이터를 대량으로 만들어 보는 방법에 대해 알아 보았습니다.
이번 포스팅에서는 sympy 파이썬 외부 라이브러리에 대해 공부해 보도록 하겠습니다.

파이썬 외부 라이브러리

sympy

sympy 는 방정식 기호 symbol 을 사용하게 해주는 외부 라이브러리입니다.
이전 포스팅에서와 마찬가지로 pip install 을 사용해 설치가 가능합니다.

Python
(py_study_31010) D:\Dropbox\02.My_Job\80.Study\01.Python\00.study_python_3.11.0\01.TEST>pip install sympy
Collecting sympy
  Downloading sympy-1.11.1-py3-none-any.whl (6.5 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 6.5/6.5 MB 45.8 MB/s eta 0:00:00
Collecting mpmath>=0.19
  Downloading mpmath-1.3.0-py3-none-any.whl (536 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 536.2/536.2 kB 32.9 MB/s eta 0:00:00
Installing collected packages: mpmath, sympy
Successfully installed mpmath-1.3.0 sympy-1.11.1

이전에 설명 드렸듯이 sympy 패키지를 설치하면서 함께 mpmath 패키지가 설치되는 걸 확인 할 수 있습니다.

sympy 사용해 보기

또치라는 어린이가 가진 돈의 2/5 로 장난감을 샀다고 합니다. 이 때 장난감을 사는 데 쓴 돈이 1,760 원 이라면 남은 돈은 얼마가 될까요?
이 문제는 일차 방정식 문제입니다.
파이썬에서는 sympy 를 사용해서 방정식을 쉽게 풀어 볼 수 있습니다.
fractions 모듈과 sympy 모듈이 함께 필요합니다.

Python
>>> from fractions import Fraction
>>> import sympy
>>> x = sympy.symbols("x")
>>>

또치 어린이가 가진 돈을 x 라고 했을 때 sympy 모듈을 사용하면 위처럼 x = sympy.symbols(“x”) 으로 표현 할 수 있습니다.
sympy.symbols() 는 x 처럼 방정식에 사용하는 미지수를 나타내는 기호를 생성할 때 사용됩니다.

여러 개의 기호 사용하기

만약 두 개의 미지수가 필요하다면 아래와 같이 사용 할 수 있습니다.

Python
x, y = sympy.symbols('x y')

또치가 가진 돈의 2/5 가 1,760 원
이것은 일차 방정식 x * (2/5) = 1760 이 됩니다.
이를 코드로 표현해 보겠습니다.

Python
>>> f = sympy.Eq(x*Fraction('2/5'), 1760)
>>> result = sympy.solve(f)
>>> result
[4400]
>>>

위 코드 에서 처럼 f 라는 방정식을 세웠으므로 sympy.solve(f) 로 x 에 해당되는 값을 구할 수가 있습니다.
결과는 또치라는 어린이는 4,400원을 가지고 있음이 확인이 되었습니다.
여기에서 사용한 돈 1,760 원을 빼면 남은 돈이 됩니다.

Python
>>> remains = result[0] - 1760
>>> remains
2640
>>>

fractions.Fraction
Python
>>> from fractions import Fraction

파이썬에서 유리수 연산을 정확하게 하기 위해서 fractions.Fraction 을 사용을 합니다

유리수의 경우 아래처럼 Fraction(분자, 분모) 형태로 만들 수 있습니다.

Python
>>> a = Fraction(1, 5)
>>> a
Fraction(1, 5)
>>>

Fraction(‘분자/분모’) 의 형태로 문자열로도 만들 수 있습니다.

Python
>>> a = Fraction('1/5')
>>> a
Fraction(1, 5)
>>>

위 내용을 종합 풀이를 해보겠습니다.

Python
# Fraction_test.py
from fractions import Fraction
import sympy

# 가지고 있던 돈은 x 입니다.
x = sympy.symbols("x")

# 가지고 있던 돈의 2/5가 1760원이므로 방정식은 x * (2 / 5) = 1760 입니다.
f = sympy.Eq(x*Fraction('2/5'), 1760)

# 방정식을 만족하는 값 result 를 구합니다.
result = sympy.solve(f)

# 남은 돈은 가지고 있던 돈에서 1760 원을 빼면 됩니다
remains = result[0] - 1760

print('남은 돈은 {} 원 입니다.'.format(remains))

결과는 아래와 같습니다.

Python
(py_study_31010) D:\Dropbox\02.My_Job\80.Study\01.Python\00.study_python_3.11.0\01.TEST>python Fraction_test.py
남은 돈은 2640 원 입니다.

sympy 활용

이차방정식의 해 구하기

x2 = 1 과 같은 이차방정식의 해를 구해보도록 하겠습니다.

Python
>>> import sympy
>>> x = sympy.symbols("x")
>>> f = sympy.Eq(x**2, 1)
>>> sympy.solve(f)
[-1, 1]
>>>

연립방정식의 해 구하기

아래의 연립방정식의 해를 구해 보겠습니다.

Python
x + y = 10
x - y = 4

미지수가 2개 이상이라면 결과값이 리스트가 아닌 딕셔너리가 됩니다.

Python
>>> import sympy
>>> x, y = sympy.symbols('x y')
>>> f1 = sympy.Eq(x+y, 10)
>>> f2 = sympy.Eq(x-y, 4)
>>> sympy.solve([f1, f2])
{x: 7, y: 3}
>>>

  • 이 포스팅은 ‘위키독스’ 의 ‘점프 투 파이썬‘ 전자책을 구매하여 독학하기 위한 자료로 작성했습니다.
84. 파이썬 sympy 외부 라이브러리

Leave a Comment