파이썬에서 심볼릭 (symbolic) 수학을 지원하는 sympy 라는 모듈이 있다. winPython을 사용한다면 기본적으로 설치되어 있으므로 사용하고 싶다면
>>> import sympy as sp |
라고 하면 된다. 흥미로운 것은 수학 계산식을 LaTex 스타일로 깔끔하게 표시할 수 있다. 이를 위해서는 다음과 같은 이 모듈 내의 함수를 호출하면 된다.
>>> sp.init_printing() # 수식을 LaTex 스타일로 표시한다. |
만약 배경색을 검은 색으로 사용하고 있다면 다음과 같이 글자색을 흰색으로 지정해 줄 수 있다.
>>> sp.init_printing(forecolor='White') |
이 함수를 맨 처음 실행시킬 때는 별도의 패키지를 인스톨하라는 대화창이 뜨며 한 번만 인스톨해주면 된다. 이렇게 하면 이후에 수학식이 LaTex 스타일로 굉장히 깔끔하게 표시된다. 예를 들면 아래와 같다.
유니코드를 사용하여 수식을 표시하는 함수로 pprint()가 있다. 만약 아스키코드로만 표시하고 싶다면 use_unicode = False 옵션을 주면 된다.
>>> expr = sp.sqrt(x/(x**2+1))+sp.pi>>> sp.pprint(expr) # 유니코드를 이용하여 수식 표시________╱ x╱ ────── + π╱ 2╲╱ x + 1>>> sp.pprint(expr,use_unicode=False) #아스키코드로 수식 표시________/ x/ ------ + pi/ 2\/ x + 1 |
그런데 sympy 에는 init_session() 이라는 함수가 있는데 이 함수의 옵션으로 ipython=True 를 주면 sympy 모듈이 전역 공간으로 임포트되며 LaTeX 모드가 활성화된다.
init_session()함수를 호출하면 내부에서 from sympy import * 가 수행되므로 이 모듈의 모든 함수/변수가 전역 공간에 올라온다. 따라서 이후에는 ipython 콘솔을 sympy 위주의 쉘로 활용할 수 있다.
다른 방법으로 위와 같이 명령어로 입력하지 않고 설정창에서 지정해 줄 수 있다.
만약 sympy 위주로 쉘을 사용하고 싶다면 이 옵션을 지정해 주는 것도 좋을 것이다.
하지만 sympy 도 다른 모듈들(numpy 등)과 구분하여 사용하고 싶다면 맨 처음에 소개한 명령어를 사용하는 것이 좋다.
>>> import sympy as sp>>> sp.init_printing() # LaTex 스타일로 수식 표시 |
ipython의 매직 명령어인 %matplotlib inline 이라고 하면 ipython 창에 그래프를 그려준다.
>>> %matplotlib [gui] |
여기서 [gui] 옵션으로 inline, gtk4, qt4 등을 줄 수 있으며 inline 을 주면 ipython 창 내부에 그래프를 도시해 준다. 이후에 예를 들어 sympy.plot() 함수 등을 사용하면 ipython 내부 창에 그래프를 띄워준다.
만약 초기에 이러한 설정으로 시작하고 싶다면 옵션으로 지정하여 ipython 창이 생성될 때 자동으로 설정되도록 할 수 있다. 아래 그림과 같이 Support for graphics (Matplotlib) 항목 내의 Active support 를 체크하면 ipython 이 시작될 때 그래프 기능을 활성화시킨다.
단 이 옵션은 자동으로 numpy 와 matplotlib.pyplot 모듈을 np, plt 이름으로 임포트시킨다. 이것은 dir() 명령으로 확인할 수 있다.
두 번째 항목인 automatically load pylab 은 비활성화시키기를 권장한다. pylab 은 내부에서 numpy와 matplotlib.pyplot 등의 모듈들을 전역공간으로 임포트하여 함수들을 관리하는데 혼동을 주기 때문이다.
'프로그래밍언어.Lib > sympy' 카테고리의 다른 글
심파이(sympy)를 이용한 미분방정식 풀이 1 (0) | 2015.06.03 |
---|---|
심파이(sympy) 선형대수 4 : 선형대수 연산 (1) | 2015.06.03 |
심파이(sympy) 선형 대수 3 : 행렬의 연산 (0) | 2015.06.03 |
심파이(sympy) 선형대수 2 : 행렬의 indexing/slicing (0) | 2015.06.03 |
심파이(sympy) 실행 환경 (0) | 2015.06.03 |