심피
SymPy| 개발자 | SymPy 개발팀 |
|---|---|
| 초기 릴리즈 | 2007; 전 |
| 안정적 해제 | 1.8[1] / 2021년 4월 10일; 전 |
| 리포지토리 | |
| 기록 위치 | 파이톤 |
| 운영 체제 | 크로스 플랫폼 |
| 유형 | 컴퓨터 대수 체계 |
| 면허증 | 새 BSD 라이센스 |
| 웹사이트 | www |
SymPy는 심볼 연산용 오픈 소스 파이썬 라이브러리다. 컴퓨터 대수 기능을 독립형 애플리케이션으로, 다른 애플리케이션에 대한 라이브러리로서, 또는 SymPy[2] Live 또는 SymPy Gamma로 웹 상에서 라이브로 제공한다.[3] SymPy는 의존성이 거의 없는 Python으로 전적으로 작성되기 때문에 설치와 검사가 간단하다.[4][5][6] 이러한 접근 용이성은 잘 알려진 언어의 단순하고 확장 가능한 코드 기반과 결합되어 SymPy를 비교적 진입 장벽이 낮은 컴퓨터 대수 시스템으로 만든다.
SymPy는 기초 기호 산술부터 미적분학, 대수학, 이산수학, 양자물리학에 이르는 특징을 포함한다. 연산 결과를 LaTeX 코드로 포맷할 수 있다.[4][5]
SymPy는 무료 소프트웨어로 New BSD 라이선스에 따라 라이센스를 받는다. 주요 개발자는 Ondřej Chertik과 Aaron Meurer이다. 2005년에 Ondjej Chertik에 의해 시작되었다.[7]
특징들
SymPy 라이브러리는 많은 선택적 모듈이 있는 코어로 분할된다.
현재 SymPy의 코드는[8] 약 26만 회선(종합적인 자가 테스트 세트도 포함, 버전 0.7.5 현재 350개 파일에 10만 회선 이상 포함)이며, 그 기능은 다음과 같다.[4][5][9][10][11]
핵심 기능
- 기본 산술: *, /, +, -, **
- 단순화
- 팽창
- 함수: 삼각함수, 쌍곡선, 지수, 뿌리, 로그, 절대값, 구형 고조파, 요인 및 감마함수, 제타함수, 다항식, 초기하계, 특수함수 등
- 대체
- 임의의 정밀 정수, 이성 및 부동액
- 비확정 기호
- 패턴 매칭
다항식
미적분학.
풀림 방정식
- 선형 방정식의 체계
- 래디컬로 해결할 수 있는 대수 방정식의 시스템
- 미분 방정식
- 차이 방정식
이산수학
행렬
기하학
플로팅
참고로 플로팅에는 외부 매트릭리브 또는 Pyglet 모듈이 필요하다.
- 좌표 모형
- 기하학적 도면요소
- 2D 및 3D
- 인터랙티브 인터페이스
- 컬러스
- 애니메이션
물리학
통계
콤비네이터틱스
인쇄
관련 프로젝트
- SageMath: Mathematica, Maphica, MATLAB, Magma에 대한 오픈 소스 대안(SymPy는 Sage에 포함됨)
- SymEngine: 성능을 향상시키기 위해 SymPy의 핵심을 C++로 다시 썼다. SymEngine도 Sage의 기본 엔진으로 만들기 위한 작업이 현재 진행[as of?] 중이다.[14]
- mpmath: 임의의 정밀 부동 소수점 산술용[15] Python 라이브러리
- SimpyCore: 또 다른 파이썬 컴퓨터 대수 체계[16]
- SfePy: 1D, 2D, 3D의 유한요소법에 의한 결합 부분 미분방정식(PDE)의 시스템 해결을 위한 소프트웨어.[17]
- GAlgebra: 기하 대수 모듈(이전에는 동정.galgebra).[18]
- 콰이몬: 파이썬의 양자 몬테 카를로.[19]
- Lcapy:[20] 선형 회로 분석을 가르치는 실험용 파이썬 패키지.
- LaTeX 표현 프로젝트: 간단한 LaTeX 형식 자동 치환 및 결과 계산으로 기호 형태의 대수식 유형 설정.[21]
- 심볼 통계 모델링: 복잡한 물리적 모델에 통계 연산 추가.[22]
- 디오판트: 세르게이 B 키르피체프가[23] 시작한 SymPy의 포크
종속성
버전 1.0 이후, SymPy는 종속성으로 mpmath 패키지를 가지고 있다.
그 기능을 향상시킬 수 있는 몇 가지 선택적 종속성이 있다.
- gmpy: gmpy가 설치되면 SymPy의 다항식 모듈이 자동으로 gmpy를 사용해 보다 빠른 접지형을 구현한다. 이것은 특정 운영의 성능을 몇 배 향상시킬 수 있다.
- 매트릭리브: matplotlib가 설치된 경우 SymPy는 이를 플로팅에 사용할 수 있다.
- 파이글릿: 대체 플롯 패키지.
사용 예제
프리티 프린팅
Simpyy는 다음을 통해 출력을 더욱 매력적인 형식으로 포맷할 수 있도록 한다. pprint 기능을 하다 또는, init_printing() 방법은 꽤 쉽게 가능해질 것이다, 그래서 pprint 부르지 않아도 된다 프리티 프린트는 현재 환경에서 사용할 수 있을 때 유니코드 기호를 사용하며 그렇지 않으면 다시 ASCII 문자로 되돌아간다.
>>> 로부터 동정심이 많은 수입하다 지문을 찍다, init_nit, 기호, 죄를 짓다, cas, 생략하다, sqrt, 시리즈, 적분, 함수 >>> >>> x = 기호("x") >>> y = 기호("Y") >>> f = 함수('f') >>> # 사용 가능한 경우 pprint가 유니코드로 기본 설정됨 >>> 지문을 찍다( x**생략하다(x) ) ⎛ x⎞ ⎝ℯ ⎠ x >>> # 유니코드가 없는 출력 >>> 지문을 찍다(적분(f(x), x), use_voode=거짓의) / f(x) dx / >>> # 같은 식과 비교하지만 이 시간 유니코드가 활성화됨 >>> 지문을 찍다(적분(f(x), x), use_voode=진실의) ⌠ ⎮ f(x) dx ⌡ >>> # 또는 pprint 기능 없이 init_printing()을 한 번 불러 예쁜 인쇄를 할 수 있다. >>> init_nit() >>> sqrt(sqrt(생략하다(x))) ____ 4 x x ╲╱ ℯ >>> (1/cas(x)).시리즈(x, 0, 10) 2 4 6 8 x 5⋅x 61⋅x 277⋅x ⎞ 10⎞ 1 + - + ---- + ---- --------- + O⎝x ⎠ 2 24 720 8064 팽창
>>> 로부터 동정심이 많은 수입하다 init_nit, 기호, 확대하다 >>> init_nit() >>> >>> a = 기호('a') >>> b = 기호('b') >>> e = (a + b)**3 >>> e (a + b)³ >>> e.확대하다() a³ + 3⋅a²⋅b + 3aa⋅b² + b³ 임의정밀 예제
>>> 로부터 동정심이 많은 수입하다 이성적, 지문을 찍다 >>> e = 2**50 / 이성적(10)**50 >>> 지문을 찍다(e) 1/88817841970012523233890533447265625 차별화
>>> 로부터 동정심이 많은 수입하다 init_nit, 기호, ln, 산산이 흩어지다 >>> init_nit() >>> x, y = 기호('x y') >>> f = x**2 / y + 2 * x - ln(y) >>> 산산이 흩어지다(f, x) 2입방 ─── + 2 y >>> 산산이 흩어지다(f, y) 2 x 1 - ── - ─ 2y y >>> 산산이 흩어지다(산산이 흩어지다(f, x), y) -2⋅x ──── 2 y 플로팅
>>> 로부터 동정심이 많은 수입하다 기호, cas >>> 로부터 동정심이 많은 수입하다 플롯3d >>> x, y = 기호('x y') >>> 플롯3d(cas(x*3)*cas(y*5)-y, (x, -1, 1), (y, -1, 1)) <sympy.plotting.plot.0x3b6d0d0>에서 객체 플롯 한계
>>> 로부터 동정심이 많은 수입하다 init_nit, 기호, 한도를 정하다, sqrt, ㅇㅇ >>> init_nit() >>> >>> x = 기호('x') >>> 한도를 정하다(sqrt(x**2 - 5*x + 6) - x, x, ㅇㅇ) -5/2 >>> 한도를 정하다(x*(sqrt(x**2 + 1) - x), x, ㅇㅇ) 1/2 >>> 한도를 정하다(1/x**2, x, 0) ∞ >>> 한도를 정하다(((x - 1)/(x + 1))**x, x, ㅇㅇ) -2 ℯ 미분 방정식
>>> 로부터 동정심이 많은 수입하다 init_nit, 기호, 함수, 이크, 덤블링하다, 죄를 짓다, 산산이 흩어지다 >>> init_nit() >>> >>> x = 기호("x") >>> f = 함수("f") >>> >>> eq = 이크(f(x).산산이 흩어지다(x), f(x)) >>> eq d -(f(x) = f(x) dx >>> >>> 덤블링하다(eq, f(x)) x f(x) = C₁⋅ℯℯ >>> >>> eq = 이크(x**2*f(x).산산이 흩어지다(x), -3*x*f(x) + 죄를 짓다(x)/x) >>> eq 2d sin(x) x ⋅--(f(x) = -3⋅x⋅f(x) + ----- dx x >>> >>> 덤블링하다(eq, f(x)) C₁ - cos(x) f(x) = ------------- x³ 통합.
>>> 로부터 동정심이 많은 수입하다 init_nit, 통합하다, 기호, 생략하다, cas, 에프 >>> init_nit() >>> x = 기호('x') >>> # 다항식 함수 >>> f = x**2 + x + 1 >>> f 2 x + x + 1 >>> 통합하다(f,x) 3 2 x x x - + - + x 3 2 >>> # 합리적인 기능 >>> f = x/(x**2+2*x+1) >>> f x ──────────── 2 x + 2입방 + 1 >>> 통합하다(f, x) 1 로그(x + 1) + ---- x + 1 >>> # 지수-폴리놈 함수 >>> f = x**2 * 생략하다(x) * cas(x) >>> f 2배 x ⋅ℯ ⋅cos(x) >>> 통합하다(f, x) 2 x 2 x x x x x ⋅ℯ ⋅sin(x) x ⋅cos(x) x ℯsin(x) x ℯsin(x) ℯcos(x) -------------------------------------------------------------------------------------------- 2 2 2 2 >>> # 비원소 적분 >>> f = 생략하다(-x**2) * 에프(x) >>> f 2 -x ℯ ererf(x) >>> 통합하다(f, x) ___ 2 ╲╱ π ererf (x) ───────────── 4 시리즈
>>> 로부터 동정심이 많은 수입하다 기호, cas, 죄를 짓다, 지문을 찍다 >>> x = 기호('x') >>> e = 1/cas(x) >>> 지문을 찍다(e) 1 ────── cos(x) >>> 지문을 찍다(e.시리즈(x, 0, 10)) 2 4 6 8 x 5⋅x 61⋅x 277⋅x ⎞ 10⎞ 1 + - + ---- + ---- --------- + O⎝x ⎠ 2 24 720 8064 >>> e = 1/죄를 짓다(x) >>> 지문을 찍다(e) 1 ────── 죄(x) >>> 지문을 찍다(e.시리즈(x, 0, 4)) 3 1 x 7⋅x ⎛ 4⎞ ─ + ─ + ──── + O⎝x ⎠ x 6 360 논리 추리
예 1
>>> 로부터 동정심이 많은 수입하다 * >>> x = 기호('x') >>> y = 기호('Y') >>> 사실들 = Q.양성의(x), Q.양성의(y) >>> 와 함께 가정하여(*사실들): ... 인쇄하다(물어보다(Q.양성의(2 * x + y))) 진실의 예 2
>>> 로부터 동정심이 많은 수입하다 * >>> x = 기호('x') >>> # x에 대한 가정 >>> 사실의 = [Q.전성기의(x)] >>> 와 함께 가정하여(*사실의): ... 인쇄하다(물어보다(Q.이성적인(1 / x))) 진실의 참고 항목
참조
- ^ "Releases - sympy/sympy". Retrieved 10 April 2021 – via GitHub.
- ^ "SymPy Live". live.sympy.org. Retrieved 2021-08-25.
- ^ "SymPy Gamma". www.sympygamma.com. Retrieved 2021-08-25.
- ^ a b c "SymPy homepage". Retrieved 2014-10-13.
- ^ a b c Joyner, David; Čertík, Ondřej; Meurer, Aaron; Granger, Brian E. (2012). "Open source computer algebra systems: SymPy". ACM Communications in Computer Algebra. 45 (3/4): 225–234. doi:10.1145/2110170.2110185. S2CID 44862851.
- ^ Meurer, Aaron; Smith, Christopher P.; Paprocki, Mateusz; Čertík, Ondřej; Kirpichev, Sergey B.; Rocklin, Matthew; Kumar, AMiT; Ivanov, Sergiu; Moore, Jason K. (2017-01-02). "SymPy: symbolic computing in Python" (PDF). PeerJ Computer Science. 3: e103. doi:10.7717/peerj-cs.103. ISSN 2376-5992.
- ^ "SymPy vs. Mathematica · sympy/Sympy Wiki". GitHub.
- ^ "Sympy project statistics on Open HUB". Retrieved 2014-10-13.
- ^ Gede, Gilbert; Peterson, Dale L.; Nanjangud, Angadh; Moore, Jason K.; Hubbard, Mont (2013). Constrained multibody dynamics with Python: From symbolic equation generation to publication. ASME 2013 International Design Engineering Technical Conferences and Computers and Information in Engineering Conference. American Society of Mechanical Engineers. pp. V07BT10A051. doi:10.1115/DETC2013-13470. ISBN 978-0-7918-5597-3.
- ^ Rocklin, Matthew; Terrel, Andy (2012). "Symbolic Statistics with SymPy". Computing in Science & Engineering. 14 (3): 88–93. Bibcode:2012CSE....14c..88R. doi:10.1109/MCSE.2012.56. S2CID 18307629.
- ^ Asif, Mushtaq; Olaussen, Kåre (2014). "Automatic code generator for higher order integrators". Computer Physics Communications. 185 (5): 1461–1472. arXiv:1310.2111. Bibcode:2014CoPhC.185.1461M. doi:10.1016/j.cpc.2014.01.012. S2CID 42041635.
- ^ "Assumptions Module — SymPy 1.4 documentation". docs.sympy.org. Retrieved 2019-07-05.
- ^ "Continuum Mechanics — SymPy 1.4 documentation". docs.sympy.org. Retrieved 2019-07-05.
- ^ "GitHub - symengine/symengine: SymEngine is a fast symbolic manipulation library, written in C++". GitHub. Retrieved 2021-08-25.
- ^ "mpmath - Python library for arbitrary-precision floating-point arithmetic". mpmath.org. Retrieved 2021-08-25.
- ^ "GitHub - pearu/sympycore: Automatically exported from code.google.com/p/sympycore". GitHub. January 2021. Retrieved 2021-08-25.
- ^ Developers, SfePy. "SfePy: Simple Finite Elements in Python — SfePy version: 2021.2+git.13ca95f1 documentation". sfepy.org. Retrieved 2021-08-25.
- ^ "GitHub - pygae/galgebra: Symbolic Geometric Algebra/Calculus package for SymPy". GitHub. Retrieved 2021-08-25.
- ^ "Quameon - Quantum Monte Carlo in Python". quameon.sourceforge.net. Retrieved 2021-08-25.
- ^ "Welcome to Lcapy's documentation! — Lcapy 0.76 documentation". 2021-01-16. Archived from the original on 2021-01-16. Retrieved 2021-08-25.
- ^ "LaTeX Expression project documentation — LaTeX Expression 0.3.dev documentation". mech.fsv.cvut.cz. Retrieved 2021-08-25.
- ^ "Symbolic Statistics with SymPy". ResearchGate. Retrieved 2021-08-25.
- ^ "Diofant's documentation — Diofant 0.13.0a4.dev13+g8c5685115 documentation". diofant.readthedocs.io. Retrieved 2021-08-25.