Sage
Sage | |
Dezvoltator | William A. Stein[*] |
---|---|
Versiune inițială | 24 February 2005 |
Ultima versiune | 10.4[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 |
Sage este o aplicație matematică ce acoperă mai multe domenii ale matematicii inclusiv algebra, combinatorica, analiza numerica și calcul diferențial și integral.
Prima versiune a fost lansatǎ în 24 februarie 2005 ca aplicație gratuita, respectând termenii Licenței Publice Generale GNU. Scopul principal fiind acela de a crea o alternativă opensource la Magma, Maple, Mathematica și MATLAB."[2] Sage a fost dezvoltat de către William Stein, un matematician de la University of Washington.
Sage este adesea numit sagemath, deoarece cuvântul sage este un cuvânt des întâlnit.
Caracteristici
modificareCâ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 și Safari.
- O interfață linie de comanda folosind IPython
- Suporta limbajul de programare Python.
- Suporta calculul paralel folosind fie procesoarele multi-nucleu ce se regăsesc în multe computere moderne fie sistemele multiprocesor.
- Calcul integral și diferențial folosind Maxima și SymPy
- Algebra lineară folosind GSL, SciPy și NumPy.
- Librarii pentru funcții elementare și speciale
- Grafice 2D și 3D
- Unelte pentru manipularea matricelor și datelor, inclusiv suportul pentru procesarea matricelor rare
- Variate librarii pentru calcul statistic, folosind funcționalitate limbajului de programare R și SciPy
- Unelte pentru procesarea imaginilor folosind Pylab precum și limbajul de programare Python
- Unelte pentru vizualizarea și analiza grafurilor
- Importa și exporta filtre pentru fișiere de date, imagini, video, audio, CAD, GIS și formate biomedicale
- Suportul pentru numere complexe și calcul simbolic
- Generare de documentație folosind Sphinx
Performante
modificareAtâ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, NTL pot 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.
Cython poate creste foarte mult viteza de execuție a programelor scrise în Sage, deoarece codul sursă în limbajul de programare Python este convertit în cod sursă C. [4]Format:Self-citation
Licențiere și disponibilitate
modificareSage este o aplicație gratuită, distribuită sub termenii Licenței Publice Generale GNU versiunea 2+. Sage este disponibil în multe moduri:
- Codul sursǎ poate fi download-at de la pagina 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 la sagenb.org Arhivat în , la Wayback Machine. sau http://t2nb.math.washington.edu:8080/ Arhivat în , la Wayback Machine., dar cu anumite limitări legate de cantitatea de memorie ce poate fi folosită.
Deși Microsoft a sponsorizat o versiune nativǎ a Sage pentru sistemul de operare Windows [5], utilizatorii acestui sistem de operare trebuie să folosească tehnologie de virtualizare ca VirtualBox, pentru a rula Sage.
Pachete software incluse în Sage
modificareFilosofia 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ǎ
modificareAnalizǎ matematică
modificarex,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
modificaret = var('t') # se definește o variabilǎ "t"
x = function('x',t) # definește x ca fiind o funcție de "t"
DE = lambda y: diff(y,t) + y - 1
desolve(DE(x(t)), [x,t]) # returnează '%e^-t*(%e^t+%c)'
Algebrǎ linearǎ
modificareA = 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]
import numpy
C = Matrix([[1 , 1], [2 , 2]])
matrix(numpy.linalg.pinv(C.numpy())) # returnează [0.1 0.2]
# [0.1 0.2]
Teoria numerelor
modificareprime_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
modificareMai 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 Milestone Arhivat în , la Wayback Machine. |
În 2007, Sage a câștigat primul premiu la secțiunea "software științific" a competiției internaționale de software gratuit Les Trophées du Libre.[6]
Vezi și
modificareReferințe
modificare- ^ Release 10.4 (î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.html Cython, Sage, and the Need for Speed
- ^ Sage - Acknowledgment
- ^ „Free Software Brings Affordability, Transparency To Mathematics”. Science Daily. . Accesat în .