sympy와 scipy는 수학 식 관련해서 쓰기에 좋을 것 같다.
sympy : http://docs.sympy.org/dev/modules/solvers/solvers.html
scipy : http://www.scipy.org/
두개의 방정식이 있을때 그것의 해를 파이썬으로 어떻게 구하느냐. 가 목적이어서 찾았는데 스택오버플로우에 이런 좋은 예시가 있었다.
http://stackoverflow.com/questions/8739227/how-to-solve-a-pair-of-nonlinear-equations-using-python
혹시 모르니 예제도 복사해놓음.
scipy예제.
x+y^2 = 4
e^x+ xy = 3
from scipy.optimize import fsolve import math def equations(p): x, y = p return (x+y**2-4, math.exp(x) + x*y - 3) x, y = fsolve(equations, (1, 1)) print equations((x, y))
sympy예제.
미지수가 두개인 일차방정식
# -*- encoding: cp949 -*- from sympy import Matrix, solve_linear_system from sympy.abc import x, y #Solve the following system: # x + 4 y == 2 #-2 x + y == 14 system = Matrix(( (1, 4, 2), (-2, 1, 14))) print solve_linear_system(system, x, y)
대충 여러번 삽질해보고 에러메시지를 보면.... scipy의 fsolve는 http://qkqhxla1.tistory.com/159 요기서 했던 것과 마찬가지로 역행렬 방법을 이용해서 식의 값을 구하는것 같다.(종종 싱귤러행렬 에러가 뜨는걸로봐서..) sympy는 scipy의 예제에서는 싱귤러 행렬 에러가 났던것이, sympy의 예제에서는 에러가 안 나는걸로 보아 역행렬 방법이 아니라 다른 방법을 이용하는것 같다.
대충 결과들을 도출해보면 해를 근사값으로 구할 경우에는(1.234234~처럼) scipy의 역행렬을 이용한 방법을 해야 할것 같고, 단순히 미지수가 여러개인 1차방정식이면 아래의 sympy의 예제를 이용하면 될것같다. 역시 수학 관련된 모듈은 잘 안써봐서 잘 이해했는지는 모르겠다. 수정할점이나 추가할점은 나중에 추가 예정.
numpy도 있는데 이건 행렬에 특화된 모듈같다.
'Python > 2.7 information' 카테고리의 다른 글
지도 모듈 (구글맵, folium 등등.) (0) | 2015.12.24 |
---|---|
Hello world 난독화하기.(번역) (1) | 2015.11.28 |
poster module (upload image or file) (0) | 2015.08.24 |
pyexiv2 module (read and modify exif) (0) | 2015.08.23 |
selenium (0) | 2015.08.09 |