| Прво издање | 2005.; пре 21 године (2005) |
|---|---|
| Репозиторијум | |
| Написан у | Пајтон,Cython |
| Оперативни систем | Cross-platform |
| Тип | Рачунарски алгебарски систем |
| Лиценца | GPL |
| Веб-сајт | cloud |
SageMath (претходноSage ili SAGE, систем за алгебарско и геометријско експериментисање[1]) јематематички софтвер са функцијама које покривају многе аспектематематике, укључујућиалгебре,комбинаторике,нумеричке математике,теорије бројева, иинфинитезимални рачун.
Прва верзија SageMath је пуштен на слободу 24. фебруара 2005. године као слободан и софтвер отвореног кода под условима ГНУ-ове опште јавне лиценце, са почетним циљевима стварања "отвореног кода са алтернативом за Magma, Maple, Mathematica, andMATLAB".[2] Зачетник и вођа пројекта SageMath, William Stein, јематематичар на Универзитету у Вашингтону.
SageMath "користи Python-као синтаксу,"[3] подржавапроцедуралне,функционалне иобјектно оријентисане конструкте.


Карактеристике SageMath укључују:[4]

Вилијам Стајн реализован приликом дизајнирања Sage када је било много отворених кодова математиких софтверски пакета већ написаних на различитим језицима, односноC,C++, Common Lisp,Фортран иПајтон.
Уместо топлу воду, Sage (што је углавном написан уPython иCython) интегрише многе специјализованематематике софтверске пакете у заједничком интерфејсу, за који корисник треба да зна само пајтон. Међутим, Sage садржи стотине хиљада јединствених линија кода додајући нове функције и стварајући интерфејс између његових компоненти.[9]
SageMath користи и студенте и професионалце за развој. Развој SageMath је подржан од стране оба волонтерска рада и донација.[10]
Само главна издања су наведена у наставку. SageMath практикује "ослобађање рано, ослобађање често" концепт, са издањима на сваких неколико недеља или месеци. Све у свему, било је више од 300 издања, иако је њихова учесталост је смањена.[11]
| Version | Release Date | Description |
|---|---|---|
| 0.1 | Јануар 2005 | |
| 0.2–0.4 | Март до Јула 2005 | Cremona's база података, мултивариате полиноми, велики коначних поља и још много тога документација |
| 0.5–0.7 | Август до Септембра 2005 | Векторски простори, прстење, модуларни симболи, и прозори коришћења |
| 0.8 | Октобар 2005 | Пуна дистрибуција GAP, Singular |
| 0.9 | Новембар 2005 | Maxima и clisp додати |
| 1.0 | Фебруар 2006 | |
| 2.0 | Јануар 2007 | |
| 3.0 | Април 2008 | Интеракција Р интерфејса |
| 4.0 | Мај 2009 | Solaris 10 подршка, 64bit OSX подршка |
| 5.0 | Мај 2012[12] | OSX Lion подршка |
| 6.0 | Децембар 2013 | SageMath развој преселио у Git[13] |
Оба бинарна и изворна кода су доступна за SageMath са странице за скидање. Ако је SageMath изграђен од изворног кода, многи од укључених библиотека, као што су ATLAS, FLINT, и NTL ће бити подешен и оптимизован за тај рачунар, узимајући у обзир број процесора, величине својих скровишта, да ли постоји хардверска подршка за ССЕ инструкције, итд
Cython може повећати брзину SageMath програма, као претварање Python кода уC.[19]
SageMath јеслободан софтвер, дистрибуира под условима ГНУ-ове опште јавне лиценце. SageMath је доступан на много начина:
Иако је Microsoft спонзор верзије Sage за Windows оперативни систем,[21] од 2012. није било никаквих планова за матерњи порт, а корисници Windows-а тренутно морају да користе технологију виртуелизације као штоВиртуалБок за покретање Sage.[22] Као Sage 5.9, углавном успешно гради на Cygwin.[23]
Linux дистрибуције и којима SageMath је доступан у пакету суMandriva,Fedora, иArch Linux. Такође је доступан као наменски Ubuntu PPA.[24] [25] Међутим, SageMath може да се инсталира на било коју Linux дистрибуцију.
Gentoo prefix такође пружа Sage на другим оперативним системима.
Филозофија SageMath је коришћење постојећих библиотека отворених кодова где год они постоје. Стога, користи многе библиотеке из других пројеката.
| Алгебра | GAP,Maxima,Singular |
| Алгебарска геометрија | Singular |
| Аритметика произвољне прецизности | MPIR, MPFR, MPFI, NTL, mpmath |
| Аритметичка геометрија | PARI/GP, NTL, mwrank, ecm |
| Рачунање | Maxima,SymPy,GiNaC |
| Комбинаторика | Symmetrica, Sage-Combinat |
| Линеарна алгебра | ATLAS, BLAS, LAPACK,NumPy, LinBox, IML, GSL |
| Теорија графова | NetworkX |
| Теорија група | GAP |
| Нумеричко рачунање | GSL,SciPy,NumPy, ATLAS |
| Теорија бројева | PARI/GP, FLINT, NTL |
| Статистичко рачунарство | R,SciPy |
| Љуска командне линије | IPython |
| База података | ZODB,SQLite |
| Графички интерфејс | SageMath Notebook, jsMath |
| Графика | matplotlib, Tachyon3d, GD,Jmol |
| Интерактивни програмски језик | Python |
| Умрежавање | Twisted |
| Диференцијална геометрија и Тензорски Рачун | Sage Manifolds[27] |
x,a,b,c=var('x, a, b, c')# Имајте на уму да IPython такође подржава бржи начин да се то уради, позивом# ово је еквивалентно изразима који почињу са зарезом:# ,var x a b clog(sqrt(a)).simplify_log()# враћа 1/2*log(a)log(a/b).expand_log()# враћа log(a) - log(b)sin(a+b).simplify_trig()# враћа sin(a)*cos(b) + sin(b)*cos(a)cos(a+b).simplify_trig()# враћа -sin(a)*sin(b) + cos(a)*cos(b)(a+b)^5# враћа (a + b)^5expand((a+b)^5)# a^5 + 5*a^4*b + 10*a^3*b^2 + 10*a^2*b^3 + 5*a*b^4 + b^5limit((x^2+1)/(2+x+3*x^2),x=Infinity)# враћа 1/3limit(sin(x)/x,x=0)# враћа 1diff(acos(x),x)# враћа -1/sqrt(-x^2 + 1)f=exp(x)*log(x)f.diff(x,3)# враћа e^x*log(x) + 3*e^x/x - 3*e^x/x^2 + 2*e^x/x^3solve(a*x^2+b*x+c,x)# враћа [x == -1/2*(b + sqrt(-4*a*c + b^2))/a,# x == -1/2*(b - sqrt(-4*a*c + b^2))/a]f=x^2+432/xsolve(f.diff(x)==0,x)# враћа [x == 3*I*sqrt(3) - 3,# x == -3*I*sqrt(3) - 3, x == 6]
t=var('t')# дефинише променљиву tx=function('x',t)# дефинише x да буде функција променљивеde=(diff(x,t)+x==1)desolve(de,[x,t])# враћа (c + e^t)*e^(-t)
A=matrix([[1,2,3],[3,2,1],[1,1,1]])y=vector([0,-4,-1])A.solve_right(y)# враћа (-2, 1, 0)A.eigenvalues()# враћа [5, 0, -1]B=matrix([[1,2,3],[3,2,1],[1,2,1]])B.inverse()# враћа[01/2-1/2][-1/4-1/41][1/20-1/2]# исте матрице, али током дуплог круга (не рационалним бројевима, као горе)sage:B=matrix(RDF,1,2,3],[3,2,1],[1,2,1)sage:B.inverse()[-5.55111512313e-170.5-0.5][-0.25-0.251.0][0.50.0-0.5]# Позив NumPy за Moore-Penrose псеудо-инверзије,# јер SageMath не подржава то.importnumpyC=matrix([[1,1],[2,2]])matrix(numpy.linalg.pinv(C))# враћа[0.10.2][0.10.2]
prime_pi(1000000)# враћа 78498, број простих бројева мање од једног милионаE=EllipticCurve('389a')# изградити елиптичне криве од Cremona етикетеP,Q=E.gens()7*P+Q# враћа (24187731458439253/244328192262001 :# 3778434777075334029261244/3819094217575529893001 : 1)sage:E2=EllipticCurve(CC,[0,0,-2,1,1])sage:E2EllipticCurvedefinedbyy^2+(-2.00000000000000)*y=x^3+1.00000000000000*x+1.00000000000000overComplexFieldwith53bitsofprecisionsage:E2.j_invariant()61.7142857142857