Sage
Sage | |
Dezvoltator | William A. Stein[*] |
---|---|
Versiune inițială | 24 February 2005 |
Ultima versiune | 10.3[1]() |
Repo | github.com/sagemath/sage |
Scris în | Python,Cython |
Sistem de operare | Multiplatformă |
Platformă | Python |
Tip | Sistem de Algebră Computerizată |
Licență | GNU General Public License |
Prezență online | |
www.sagemath.org | |
Modificădate/text |
Sageeste oaplicațiematematicăce acoperă mai multe domenii ale matematicii inclusivalgebra,combinatorica,analiza numericașicalcul diferențial și integral.
Prima versiune a fost lansatǎ în 24 februarie 2005 ca aplicație gratuita, respectând termeniiLicenței Publice Generale GNU.Scopul principal fiind acela de a crea o alternativă opensource laMagma,Maple,MathematicașiMATLAB."[2]Sage a fost dezvoltat de cătreWilliam Stein,unmatematiciande laUniversity of Washington.
Sage este adesea numitsagemath,deoarece cuvântulsageeste un cuvânt des întâlnit.
Caracteristici
[modificare|modificare sursă]Câteva din multele caracteristici ale Sage sunt:[3].
- O interfață web, pentru vizualizarea și reutilizarea intrărilor și ieșirilor, inclusiv grafice și comentarii utilizabile de către multe browsere web, precum:Firefox,Opera,KonquerorșiSafari.
- O interfață linie de comanda folosindIPython
- Suporta limbajul de programarePython.
- Suporta calculul paralel folosind fie procesoarele multi-nucleu ce se regăsesc în multe computere moderne fie sistemele multiprocesor.
- Calcul integral și diferențial folosindMaximașiSymPy
- Algebra lineară folosindGSL,SciPyșiNumPy.
- Librarii pentru funcții elementare și speciale
- Grafice 2D și 3D
- Unelte pentru manipularea matricelor și datelor, inclusiv suportul pentru procesareamatricelor rare
- Variate librarii pentru calcul statistic, folosind funcționalitate limbajului de programareRșiSciPy
- Unelte pentru procesarea imaginilor folosindPylabprecum și limbajul de programarePython
- Unelte pentru vizualizarea și analizagrafurilor
- Importa și exporta filtre pentru fișiere de date, imagini, video, audio,CAD,GISși formate biomedicale
- Suportul pentrunumere complexeși calcul simbolic
- Generare de documentație folosindSphinx
Performante
[modificare|modificare sursă]Atât binarele cât și codul sursă sunt disponibile în pagina de download. Dacă Sage este compilat din codul sursă, multe din librăriile incluse precum:ATLAS,FLINT,NTLpot fi optimizate pentru computerul pe care se face compilarea, ținând cont de numărul de procesoare, de mărimea memoriei cache, dacă exista suport hardware pentru instrucțiunile SSE, etc.
Cythonpoate creste foarte mult viteza de execuție a programelor scrise în Sage, deoarece codul sursă în limbajul de programarePythoneste convertit în cod sursăC.[4]Format:Self-citation
Licențiere și disponibilitate
[modificare|modificare sursă]Sage este o aplicație gratuită, distribuită sub termeniiLicenței Publice Generale GNUversiunea 2+. Sage este disponibil în multe moduri:
- Codul sursǎ poate fi download-at de lapagina de download.
- Fișierele binare sunt disponibile pentru Linux, OS X și Solaris.
- Live CD conținând un sistem de operare Linux boot-abil. Acesta permite folosirea Sage fără instalarea sistemului de operare Linux.
- Utilizatorii pot folosi o versiune online a Sage lasagenb.orgArhivatîn,laWayback Machine.sauhttp://t2nb.math.washington.edu:8080/Arhivatîn,laWayback Machine., dar cu anumite limitări legate de cantitatea de memorie ce poate fi folosită.
DeșiMicrosofta sponsorizat o versiune nativǎ a Sage pentru sistemul de operare Windows[5],utilizatorii acestui sistem de operare trebuie să folosească tehnologie de virtualizare caVirtualBox,pentru a rula Sage.
Pachete software incluse în Sage
[modificare|modificare sursă]Filosofia din spatele lui Sage este folosirea librăriilor open source. Prin urmare el aduce la un loc mai multe proiecte de sine stătătoare pentru crearea unui produs final.
Algebra | GAP,Maxima,Singular |
Geometrie algebrică | Singular |
Operații aritmetice cu numere foarte mari | MPIR,MPFR,MPFI,NTL,mpmath |
Geometrie aritmetică | PARI/GP,NTL,mwrank,ecm |
Calculul integral și diferențial | Maxima,SymPy,GiNaC |
Combinatorică | Symmetrica,Sage-Combinat |
Algebră lineară | ATLAS,BLAS,LAPACK,NumPy,LinBox,IML,GSL |
Teoria grafurilor | NetworkX |
Teoria grupurilor | GAP |
Analiză numerică | GSL,SciPy,NumPy,ATLAS |
Teoria numerelor | PARI/GP,FLINT,NTL |
Calcul statistic | R,SciPy |
Interfață linie de comandǎ | IPython |
Bază de date | ZODB,Python Pickles,SQLite |
Interfață graficǎ | Sage Notebook,jsmath |
Grafice | Matplotlib,Tachyon3d,GD,Jmol |
Limbaj de programare interactiv (interpretat) | Python |
Networking | Twisted |
Exemple în interfața de comandǎ
[modificare|modificare sursă]Analizǎ matematică
[modificare|modificare sursă]x,a,b,c=var('x,a,b,c')
log(sqrt(a)).simplify_log()# returnează log(a)/2
log(a/b).simplify_log()# returnează log(a) - log(b)
sin(a+b).simplify_trig()# returnează cos(a)*sin(b) + sin(a)*cos(b)
cos(a+b).simplify_trig()# returnează cos(a)*cos(b) - sin(a)*sin(b)
(a+b)ˆ5# returns (b + a)ˆ5
expand((a+b)ˆ5)# returnează bˆ5 + 5*a*bˆ4 + 10*aˆ2*bˆ3 +
# 10*aˆ3*bˆ2 + 5*aˆ4*b + aˆ5
limit((xˆ2+1)/(2+x+3*xˆ2),x=infinity)# returnează 1/3
limit(sin(x)/x,x=0)# returnează 1
diff(acos(x),x)# returnează -1/sqrt(1 - xˆ2)
f=exp(x)*log(x)
f.diff(x,3)# returnează e^x*log(x) + 3*e^x/x - 3*e^x/x^2 + 2*e^x/x^3
solve(a*x^2+b*x+c,x)# returnează [x == (-sqrt(b^2 - 4*a*c) - b)/(2*a),
# x == (sqrt(b^2 - 4*a*c) - b)/(2*a)]
f=xˆ2+432/x
solve(f.diff(x)==0,x)# returnează [x == 3*sqrt(3)*I - 3,
# x == -3*sqrt(3)*I - 3, x == 6]
Ecuații diferențiale
[modificare|modificare sursă]t=var('t')# se definește o variabilǎ "t"
x=function('x',t)# definește x ca fiind o funcție de "t"
DE=lambday:diff(y,t)+y-1
desolve(DE(x(t)),[x,t])# returnează '%e^-t*(%e^t+%c)'
Algebrǎ linearǎ
[modificare|modificare sursă]A=Matrix([[1,2,3],[3,2,1],[1,1,1]])
y=vector([0,-4,-1])
A.solve_right(y)# returnează (-2, 1, 0)
A.eigenvalues()# returnează [5, 0, -1]
B=Matrix([[1,2,3],[3,2,1],[1,2,1]])
B.inverse()# returnează [ 0 1/2 -1/2]
# [-1/4 -1/4 1]
# [ 1/2 0 -1/2]
importnumpy
C=Matrix([[1,1],[2,2]])
matrix(numpy.linalg.pinv(C.numpy()))# returnează [0.1 0.2]
# [0.1 0.2]
Teoria numerelor
[modificare|modificare sursă]prime_pi(1000000)# returnează 78498, numărul numerelor prime mai mici decât 1.000.000
E=EllipticCurve('389a')# construiește o curba eliptica
P,Q=E.gens()
7*P+Q# returnează (2869/676: -171989/17576: 1)
Istorie
[modificare|modificare sursă]Mai jos sunt listate doar versiunile majore ale Sage.
Versiunea | Data lansării | Descriere |
---|---|---|
0.1 | Ianuarie, 2005 | A fost inclus Pari |
0.2 - 0.4 | Martie-Iulie 2005 | Tabelele Cremona, polinoamele multivariate și mai multǎ documentație |
0.5 - 0.7 | August-Septembrie 2005 | Spatii vectoriale, inele |
0.8 | Octombrie 2005 | Au fost adăugate GAP și Singular |
0.9 | Noiembrie, 2005 | Au fost adăugate Maxima și Clisp |
1.0 | Februarie, 2006 | |
2.0 | Ianuarie, 2007 | |
3.0 | Aprilie, 2008 | |
4.0 | Mai, 2009 | |
5.0 | viitor | 5.0 MilestoneArhivatîn,laWayback Machine. |
În 2007, Sage a câștigat primul premiu la secțiunea "software științific" a competiției internaționale de software gratuitLes Trophées du Libre.[6]
Vezi și
[modificare|modificare sursă]Referințe
[modificare|modificare sursă]- ^Release 10.3(în engleză),,accesat în
- ^Stein, William ().„SAGE Days 4”(PDF).Arhivat(PDF)din originalul de la.Accesat în.
- ^Sage documentation
- ^http://sagemath.blogspot.com/2010/11/cython-sage-and-need-for-speed.htmlCython, Sage, and the Need for Speed
- ^Sage - Acknowledgment
- ^„Free Software Brings Affordability, Transparency To Mathematics”.Science Daily..Accesat în.