공부한 내용/파이썬 문법

[파이썬] Sympy 기초

Silver Shoes 2021. 7. 24. 23:38

0. Sympy가 필요한 이유

-변수를 정할 수 있음

 

 

1. Special Symbols

① sympy.pi: 파이

② sympy.E: 자연상수 e

③ sympy.EulerGamma: Euler's constant

④ sympy.I: The imaginary unit

⑤ sympy.oo: 무한대

 

 

2. Simplifying Expressions (변수 표현)

import sympy
x = sympy.Symbol("x")
y = sympy.Symbol("y")
Z = sympy.Matrix(sympy.symbols("x_1, x_2"))

expr1 = 2 * (x**2 - x) - x * (x+1)
expr2 = 2 * sympy.cos(x) * sympy.sin(x)
expr3 = sympy.exp(x) * sympy.exp(y)
expr4 = 1 / (x**2 -1) + 1 / (x+1)

#simplify() 함수를 쓰면 함수를 더 단순하게 표현 가능
sympy.simplify(expr1)
#> x(x-3)

 

 

3. Functions and Methods on Matrices

① transpose / T: 행렬의 transpose

② adjoint / H: 행렬의 adjoint

③ trace: 행렬의 trace

④ det: 행렬의 determinant

⑤ inv: 행렬의 inverse

⑥ LUdecomposition: 행렬의 LU decomposition

⑦ LUsolve: LU factorization을 사용하여 Mx=b 선형방정식에 대한 해를 구함

⑧ QRdecomposition: 행렬의 QR decomposition

⑨ QRsolve: QR factorization을 사용하여 Mx=b 선형방정식에 대한 해를 구함

⑩ diagonalize: 행렬의 대각화

⑪ norm: 행렬의 norm

⑫ nullspace: 행렬의 null space를 span하는 벡터집합

⑬ rank: 행렬의 rank

⑭ singular_values: 행렬의 singular values(특이값)

⑮ solve: Mx=b 선형방정식에 대한 해를 구함

a, b, c, d = sympy.symbols("a, b, c, d")
M = sympy.Matrix([[a, b], [c, d]])

x = sympy.Matrix(sympy.symbols("x_1, x_2"))
q = sympy.Matrix(sympy.symbols("q_1,q_2"))
x = M.inv()*q
sympy.solve(M*x - q,x)

sympy.transpose(M)
sympy.adjoint(M)
sympy.trace(M)
sympy.det(M)
M.inv()

N = sympy.Matrix([[-4, 2], [6, 7]])
P = sympy.Matrix([[3, 2], [3, 2]])

N.LUdecomposition()
N.QRdecomposition()
N.diagonalize()
N.rank()
sympy.Matrix(P.nullspace())
P.singular_values()