SymPy

From Wikipedia, the free encyclopedia

SymPy
Remove ads

SymPy је пајтонова библиотека за симболичко израчунавање. Она омогућава компјутерско израчунавање било као самостална апликација, као библиотека у другим апликацијама, или директном применом на веб страницама као што су SymPy Live или SymPy Gamma. SymPy је једноставан за инсталирање и преглед садржаја јер је у потпуности написан у Пајтону и зато што не зависи од других додатних библиотека.[1][2] Оваква једноставност приступа у комбинацији са једноставном и проширивом кодном базом на добро познатом језику чини SymPy рачунарско алгебарским системом са ниском почетном баријером.

Укратко Програмер(и), Прво издање ...

SymPy укључује својства у опсегу од основних симболичко аритметичких израчунавања, до математичке анализе, алгебре, дискретне математике и квантне физике. Такође пружа могућност претварања резултата израчунавања у LaTeX код.[1][2]

SymPy је слободни софтвер и лиценциран од стране BSD лиценце. Главни програмери који су заслужни за развијање овог софтвера су Ondřej Čertík и Aaron Meurer.

Remove ads

Карактеристике

SymPy библиотека је подељена на језгра са великим бројем опционалних модула.

Тренутно, језгро SymPy има око 260,000 линија кода[3] (укључујићи обиман сет  кодова за само тестирање: преко 100,000 линија у 350 fајлова  верзије 0.7.5). ) и њене могућности обухватају:[1][2][4][5][6]

Основне могућности

  • Основне аритметичке операције: *, /, +, -, **
  • Поједностављење
  • Проширење
  • Функције: тригонометријске, хиперболичке, експоненцијалне, кореновање, логаритмовање, апсолутне вердности, сферни хармоници, факторијел и гама функције, зета функције, полиноми, хипергеометрија, специјалне функције, ...
  • Измене
  • Приближна прецизност целих, рационалних и децималних бројева
  • Некомутативни симболи
  • Упаривање образаца

Полиноми

  • Основне аритметичке операције: дељење полиноманзд...
  • Факторизација
  • Square-free факторизација
  • Грубнерове основе
  • Парцијална фрактална декомпозиција
  • Резултанте

Рачун


Решавање једначина

Дискретна математика

Матрице

Геометрија

  • Тачке, праве, равни, сегменти, елипсе, кругови, полигони, ...
  • Пресеци
  • Додирне тачке
  • Сличност

Цртање

Напомена, цртање захтева екстерни Pyglet  модул.

  • Координате модела
  • Цртање геометријских тела
  • 2Д и 3Д
  • Интерактивни приступ
  • Боје

Физика

  • Јединице
  • Механика
  • Квантна физика
  • Гаусова оптика
  • Паулијева алгебра

Статистика


Штампање

  • Pretty printing (стилско форматирање конвенционалних текстуалних фајлова): ASCII/Unicode pretty printing, LaTeX
  • Програмски кодови:Ц, Фортран, Пајтон
Remove ads

Повезани пројекти

  • Sage:алтернатива отвореног кода за Mathematica, Maple, MATLAB, и Magma (SymPy је укључен у Sage)
  • SymEngine: преведена библиотека SymPy језгра у C++, како би се побољшао његов рад. Третнутно се ради на томе да SymEngine постане основа и за Sage .
  • mpmath: Пајтонова библиотека за аритметику приближне прецизности покретног зареза (постоји у оквиру SymPy)
  • sympycore: још један Пајтонов систем за компјутерско израчунавање
  • SfePy: Софтвер за решавање система већег броја диференцијалних једначина (PDEs) помоћу методе коначних елемената  у 1Д, 2Д и 3Д.
Remove ads

Опцоналне зависности

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    5x    61x    277x      10
1 + ── + ──── + ───── + ────── + Ox 
    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 + 5a b + 10a b + 10a b + 5ab + 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)
 2x    
 ─── + 2
  y 
>>> diff(f,y)
    2    
   x    1
 - ── - 
    2   y
   y
>>> diff(diff(f,x),y)
 -2x
 ────
   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)) = -3xf(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 + 2x + 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    5x    61x    277x      10
1 + ── + ──── + ───── + ────── + Ox 
    2     24     720     8064          
>>> e = 1/sin(x)
>>> pprint(e)
  1   
──────
sin(x)
>>> pprint(e.series(x, 0, 4))
           3        
1 x 7x  4
 +  + ──── + Ox 
x 6 360
Remove ads

Виде још&nbsp;

  • Поређење компјутерских система за израчунавање

Референце

Спољашње везе

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads