SymPy је пајтонова библиотека за симболичко израчунавање. Она омогућава компјутерско израчунавање било као самостална апликација, као библиотека у другим апликацијама, или директном применом на веб страницама као што су SymPy Live или SymPy Gamma . SymPy је једноставан за инсталирање и преглед садржаја јер је у потпуности написан у Пајтону и зато што не зависи од других додатних библиотека."SymPy homepage". Joyner, David; Čertík, Ondřej; Meurer, Aaron; Granger, Brian E. (2012). Оваква једноставност приступа у комбинацији са једноставном и проширивом кодном базом на добро познатом језику чини SymPy рачунарско алгебарским системом са ниском почетном баријером.
SymPy укључује својства у опсегу од основних симболичко аритметичких израчунавања, до математичке анализе, алгебре, дискретне математике и квантне физике. Такође пружа могућност претварања резултата израчунавања у LaTeX код.
SymPy је слободни софтвер и лиценциран од стране BSD лиценце. Главни програмери који су заслужни за развијање овог софтвера су Ondřej Čertík и Aaron Meurer.
Карактеристике SymPy библиотека је подељена на језгра са великим бројем опционалних модула.
Тренутно, језгро SymPy има око 260,000 линија кода"Sympy project statistics on Open HUB". (укључујићи обиман сет кодова за само тестирање: преко 100,000 линија у 350 fајлова верзије 0.7.5). ) и њене могућности обухватају:Gede, Gilbert; Peterson, Dale L.; Nanjangud, Angadh; Moore, Jason K.; Hubbard, Mont (2013). Rocklin, Matthew; Terrel, Andy (2012). Asif, Mushtaq; Olaussen, Kåre (2014).
Основне могућности Основне аритметичке операције: *, /, +, -, ** Поједностављење Проширење Функције: тригонометријске, хиперболичке, експоненцијалне, кореновање, логаритмовање, апсолутне вердности, сферни хармоници, факторијел и гама функције, зета функције, полиноми, хипергеометрија, специјалне функције, ... Измене Приближна прецизност целих, рационалних и децималних бројева Некомутативни симболи Упаривање образаца
Полиноми Основне аритметичке операције: дељење полинома, нзд... Факторизација Square-free факторизација Грубнерове основе Парцијална фрактална декомпозиција Резултанте
Рачун Гранична вредност Извод Интеграл: Имплементирана Risch-Norman хеуристика Тејлоров полином
Решавање једначина Полиноми Систем једначина Алгебарске једначине Диференцијалне једначине Диференцне једначине
Дискретна математика Биномни коефицијент Суме Производи Теорија бројева: одређивање простих бројева, тест простости, растављање на факторе, ... Логички изрази
Матрице Основне аритметичке операције Својствена вреднсот / својствени вектор Детерминанта Инверзија Решавање матрица
Геометрија Тачке, праве, равни, сегменти, елипсе, кругови, полигони, ... Пресеци Додирне тачке Сличност
Цртање Напомена, цртање захтева екстерни Pyglet модул. Координате модела Цртање геометријских тела 2Д и 3Д Интерактивни приступ Боје
Физика Јединице Механика Квантна физика Гаусова оптика Паулијева алгебра
Статистика Нормална расподела Уједначена расподела Вероватноћа
Штампање Pretty printing (стилско форматирање конвенционалних текстуалних фајлова): ASCII/Unicode pretty printing, LaTeX Програмски кодови:Ц, Фортран, Пајтон
Повезани пројекти Sage:алтернатива отвореног кода за Mathematica, Maple, MATLAB, и Magma (SymPy је укључен у Sage) SymEngine: преведена библиотека SymPy језгра у C++, како би се побољшао његов рад. Третнутно се ради на томе да SymEngine постане основа и за Sage . mpmath: Пајтонова библиотека за аритметику приближне прецизности покретног зареза (постоји у оквиру SymPy) sympycore: још један Пајтонов систем за компјутерско израчунавање SfePy: Софтвер за решавање система већег броја диференцијалних једначина (PDEs) помоћу методе коначних елемената у 1Д, 2Д и 3Д.
Опцоналне зависности SymPy за своје покретање, не захтева ништа осим Пајтона, али постоји пар опција које могу да побољшају њене могућности: gmpy: Ако је gmpy иснталиран, SymPy-јев модул за полиноме ће аутоматски да га користи за брже основне типове. Ово омогућава значајно побољшање рада одређених операција.
Примери коришћења
Pretty Printing - Стилско форматирање конвенционалних текстуалних фајлова Омогућава да излазне информације буду преведене у знатно уређенији формат преко функције pprint. Такође, init_printing() метод ће омогућити pretty printing, тако да pprint не мора да буде позван. Pretty printing ће користити unicode симболе који су доступни у датој околини, у супротном ће користити ASCII карактере .>>> from sympy import pprint, init_printing, Symbol, sin, cos, exp, sqrt, series, Integral, Function >>> >>> x = Symbol("x") >>> y = Symbol("y") >>> f = Function('f') >>> # pprint ће поставити unicode као подразумеван, ако је доступан >>> pprint( x**exp(x) ) ⎛ x⎞ ⎝ℯ ⎠ x >>> # Излазна информација без unicode-a >>> pprint(Integral(f(x), x), use_unicode=False) /
| f(x) dx
/ >>> # Поређење истих израза али је овога пута unicode омогућен >>> pprint(Integral(f(x), x), use_unicode=True) ⌠ ⎮ f(x) dx ⌡ >>> # Алтернативно, можете позвати init_printing() једном и pretty print без функције pprint. >>> init_printing() >>> sqrt(sqrt(exp(x))) ____ 4 ╱ x ╲╱ ℯ >>> (1/cos(x)).series(x, 0, 10) 2 4 6 8 x 5⋅x 61⋅x 277⋅x ⎛ 10⎞ 1 + ── + ──── + ───── + ────── + O⎝x ⎠ 2 24 720 8064
Проширење >>> from sympy import init_printing, Symbol, expand >>> init_printing() >>> >>> a = Symbol('a') >>> b = Symbol('b') >>> e = (a + b)**5 >>> e 5 (a + b) >>> e.expand() 5 4 3 2 2 3 4 5 a + 5⋅a ⋅b + 10⋅a ⋅b + 10⋅a ⋅b + 5⋅a⋅b + b
Пример арбитрарне прецизности >>> from sympy import Rational, pprint >>> >>> e = Rational(2)**50 / Rational(10)**50 >>> pprint(e) 1/88817841970012523233890533447265625
Извод >>> from sympy import init_printing, symbols, ln, diff >>> init_printing() >>> x,y = symbols('x y') >>> f = x**2 / y + 2 * x - ln(y) >>> diff(f,x) 2⋅x ─── + 2 y >>> diff(f,y) 2 x 1 - ── - ─ 2 y y >>> diff(diff(f,x),y) -2⋅x ──── 2 y
Плотовање - Цртање thumb|Пример плотованог излаза >>> from sympy import symbols, plot3d, cos >>> from sympy.plotting import plot3d >>> x,y = symbols('x y') >>> plot3d(cos(x*3)*cos(y*5)-y, (x, -1, 1), (y, -1, 1)) <sympy.plotting.plot.Plot object at 0x3b6d0d0>
Граничне вредности >>> from sympy import init_printing, Symbol, limit, sqrt, oo >>> init_printing() >>> >>> x = Symbol('x') >>> limit(sqrt(x**2 - 5*x + 6) - x, x, oo) -5/2 >>> limit(x*(sqrt(x**2 + 1) - x), x, oo) 1/2 >>> limit(1/x**2, x, 0) ∞ >>> limit(((x - 1)/(x + 1))**x, x, oo) -2 ℯ
Диференцијалне једначине >>> from sympy import init_printing, Symbol, Function, Eq, dsolve, sin, diff >>> init_printing() >>> >>> x = Symbol("x") >>> f = Function("f") >>> >>> eq = Eq(f(x).diff(x), f(x)) >>> eq d ──(f(x)) = f(x) dx >>> >>> dsolve(eq, f(x)) x f(x) = C₁⋅ℯ
>>> >>> eq = Eq(x**2*f(x).diff(x), -3*x*f(x) + sin(x)/x) >>> eq 2 d sin(x) x ⋅──(f(x)) = -3⋅x⋅f(x) + ────── dx x >>> >>> dsolve(eq, f(x)) C₁ - cos(x) f(x) = ─────────── 3 x
Интеграли >>> from sympy import init_printing, integrate, Symbol, exp, cos, erf >>> init_printing() >>> x = Symbol('x') >>> # Полиномске функције >>> f = x**2 + x + 1 >>> f 2 x + x + 1 >>> integrate(f,x) 3 2 x x ── + ── + x 3 2 >>> # Рационалне функције >>> f = x/(x**2+2*x+1) >>> f x ──────────── 2 x + 2⋅x + 1
>>> integrate(f, x) 1 log(x + 1) + ───── x + 1 >>> # Експоненцијално-полиномске функције >>> f = x**2 * exp(x) * cos(x) >>> f 2 x x ⋅ℯ ⋅cos(x) >>> integrate(f, x) 2 x 2 x x x x ⋅ℯ ⋅sin(x) x ⋅ℯ ⋅cos(x) x ℯ ⋅sin(x) ℯ ⋅cos(x) ──────────── + ──────────── - x⋅ℯ ⋅sin(x) + ───────── - ───────── 2 2 2 2 >>> # Сложени интеграл >>> f = exp(-x**2) * erf(x) >>> f 2 -x ℯ ⋅erf(x) >>> integrate(f, x)
___ 2 ╲╱ π ⋅erf (x) ───────────── 4
Серије >>> from sympy import Symbol, cos, sin, pprint >>> x = Symbol('x') >>> e = 1/cos(x) >>> pprint(e) 1 ────── cos(x) >>> pprint(e.series(x, 0, 10)) 2 4 6 8 x 5⋅x 61⋅x 277⋅x ⎛ 10⎞ 1 + ── + ──── + ───── + ────── + O⎝x ⎠ 2 24 720 8064 >>> e = 1/sin(x) >>> pprint(e) 1 ────── sin(x) >>> pprint(e.series(x, 0, 4)) 3 1 x 7⋅x ⎛ 4⎞ ─ + ─ + ──── + O⎝x ⎠ x 6 360
Виде још Поређење компјутерских система за израчунавање
Референце
Спољашње везе SymPy Project Home Planet SymPy Code Repository on Github Support and development forum
Категорија:Пајтон (програмски језик) Категорија:Слободни софтвер написан у Пајтону Категорија:Рачунарски алгебарски системи