본문 바로가기
공부/파이썬 Python

sympy 심파이 튜토리얼

by 혼밥맨 2022. 5. 21.
반응형

sympy 튜토리얼 

 

SymPy는 심볼 계산을 위한 오픈 소스 파이썬 라이브러리입니다. 독립 실행형 애플리케이션, 다른 애플리케이션의 라이브러리 또는 SymPy Live 또는 SymPy Gamma로 웹에서 라이브로 컴퓨터 대수 기능을 제공합니다. SymPy는 Python을 사용하여 심볼릭 수학적 조작을 수행합니다. 이와 같은 종류의 다른 것과 마찬가지로, 그것은 대수 방정식과 미분 방정식을 풀 수 있고, 식을 단순화하고, 삼각 항등식을 적용하고, 미분하고, 적분할 수 있습니다. Sympy는 단위 테스트 및 일부 코드 생성을 위한 기준 값을 생성하는 데 사용됩니다. Python의 양자 프로그래밍입니다.

sympy library import

1
2
3
import sympy
import math
from sympy import symbols
cs

 

01. Tutorial

변수생성 

1
2
= symbols("x")
= symbols("y")
cs

x라는 변수에 미지수 x를 인식할 수 있도록 선언합니다.

y라는 변수에 미지수 y를 인식할 수 있도록 선언합니다.

1
2
3
expression = 2 * x + y         #2x + y
 
print(expression)
cs

식 "2x + y"을 expression이라는 변수에 저장합니다. 이 변수를 출력하면 "2*x + y"를 출력합니다. 변수로 식을 표현할 수 있게 됐습니다.

1
2
print(expression - x)        # x+y
print(expression - y)        # 2x
cs

expression은 "2x + y"을 저장하고 있고, 이 식에서 x를 빼면, "x+y"가 됩니다. 

expression은 "2x + y"을 저장하고 있고, 이 식에서 y를 빼면, "2x"가 됩니다. 

 

약간 복잡한 식을 만듭니다. x^2 + (x*y)을 expression에 저장해봅니다. 그리고 출력까지 해봅니다.

1
2
3
4
5
6
7
8
9
10
import sympy
import math
from sympy import symbols, factor, expand
 
 
= symbols("x")
= symbols("y")
 
expression = x ** 2 + x * y            # x^2 + (x*y)
print(factor(expression))            # x * (x + y)
cs

이번에는 자동으로 표현식을 간단하게 만들 수 있는 factor를 했습니다. 반대로 표현식을 최대한으로 확장하는 expand도 쓸 수 있습니다. expression을 expand하면 "x * x + x * y" 이렇게 표현합니다.

미분

1
2
3
4
5
6
7
8
9
10
import sympy
import math
from sympy import symbols, factor, expand, diff, integrate, limit, oo
 
 
= symbols("x")
= symbols("y")
 
# x에 대하여 x^2 + y^2를 미분
print(diff(x ** 2 + y ** 2, x))
cs

"x^2 + y^2"을 x에 대하여 미분합니다. 출력물은 "2*x"가 됩니다. 

 

더 어려운 삼각함수의 미적분도 가능합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
import sympy
import math
from sympy import symbols, factor, expand, diff, integrate, limit, oo
 
 
= symbols("x")
= symbols("y")
 
formula = x*2
 
print(diff(sympy.exp(x)))
print(diff(sympy.sin(x) + sympy.cos(x)))
print(integrate((formula)))
cs

단순 적분뿐만 아니라 구간을 설정한 부분 적분도 가능합니다.

1
2
3
4
formula = x**2
 
print(integrate(sympy.sin(x**2), (x, -oo, oo)))     #sqrt(2)*sqrt(pi)/2
print(integrate(1 / (x ** 4 + 1), (x, 0, oo)))      #sqrt(2)*pi/4
cs

방정식 풀이

1
2
3
4
5
6
7
8
9
import sympy
import math
from sympy import symbols, factor, expand, diff, integrate, limit, oo, Eq, solve
 
 
= symbols("x")
= symbols("y")
 
print(solve(2 * x + x + 5))
cs

solve(2 * x + x + 5)의 의미는 방정식 " 2 * x + x + 5"가 0일 때의 해를 찾습니다.

즉, "2x + x + 5 = 0"일 때 x의 값을 찾습니다.

답은 [-5/3]을 출력하겠네요.

1
2
3
4
5
6
7
8
9
import sympy
import math
from sympy import symbols, factor, expand, diff, integrate, limit, oo, Eq, solve
 
 
= symbols("x")
= symbols("y")
 
print(solve(Eq(x**316)))
cs

solve 기능을 사용할 x^3 = 16일 때 x의 값을 찾을 수도 있습니다. 

x는 아래와 같다고 하네요.

 

반응형

댓글