Sage

De la Wikipedia, enciclopedia liberă
Salt la: Navigare, căutare
Sage
Sage logo
Versiune inițială: 24 February 2005
Scris în: Python, Cython
SO: Multiplatformă
Platformă: Python
Tip Sistem de Algebră Computerizată
Licență GNU General Public License
Website: www.sagemath.org

Sage este o aplicație matematica 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 creea o alternativă opensource la Magma, Maple, Mathematica și MATLAB."[1] 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[modificare | modificare sursă]

Interfața Sage în Firefox, Opera, Konqueror, și Safari.
Sage-Reprezentarea rezolvării unei equații folosind interfața web

Câteva din multele caracteristici ale Sage sunt:[2].

  • 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[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, 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. [3]Format:Self-citation

Licențiere și disponibilitate[modificare | modificare sursă]

Sage 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 sau http://t2nb.math.washington.edu:8080/, 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 [4], utilizatorii acestui sistem de operare trebuie să folosească tehnologie de virtualizare ca VirtualBox, 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.

Pachete software incluse în Sage
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
Alte pachete software incluse în Sage
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((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 =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 = lambda y: 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]
 
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[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.

Versiunile 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

Î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.[5]

Vezi și[modificare | modificare sursă]

Referințe[modificare | modificare sursă]

Legături externe[modificare | modificare sursă]