Vés al contingut

SAGE (programari matemàtic)

De la Viquipèdia, l'enciclopèdia lliure
Aquesta és una versió anterior d'aquesta pàgina, de data 11:24, 26 jul 2010 amb l'última edició de Meldor (discussió | contribucions). Pot tenir inexactituds o contingut no apropiat no present en la versió actual.
Infotaula de llenguatge de programacióSage
Sage logo
TipusSistema Algebraic Computacional i programari lliure i de codi obert Modifica el valor a Wikidata
Data de creació24 de febrer del 2005
DesenvolupadorPython Software Foundation
Darrera versió estable4.5.1 / 19 de juliol de 2010
Majors implementacionsPython
Llenguatge de programacióPython, Cython, C, C++ i Fortran Modifica el valor a Wikidata
Sistema operatiuMultiplataforma
Codi fontCodi font, Codi font i Codi font Modifica el valor a Wikidata
LlicènciaGNU General Public License
Etiqueta d'Stack ExchangeEtiqueta, Etiqueta i Etiqueta Modifica el valor a Wikidata
Pàgina webwww.sagemath.org



SAGE és un sistema algebraic computacional (en anglès CAS) escrit en Python, aquesta aplicació de software cobreix molts aspectes de les matemàtiques, incloent àlgebra, combinatòria, mètodes numèrics i càlcul. Aquest llenguatge de programació reuneix i unifica sota un únic entorn, llenguatge i jerarquia d'objectes de diferents software matemàtic i intenta omplir els forats de funcionalitat que van deixant uns i altres llenguatges.

La primera versió de Sage va tenir lloc el 24 de febrer del 2005 com un software lliure sota els termes de GNU General Public License, tal que el seu objectiu principal era crear una alternativa oberta al software de d'àlgebra computacional com Magma, Maple, Mathematica, i MATLAB, i d'aquesta forma reduir la dependència del siftware matemàtic amb propietari i amb codi tancat.[1]

El líder del projecte, William A. Stein, és un matemàtic de la Universitat de Washington, i fa servir estudiants com a becaris per al desenvolupament d'aquest software.[1]

Característiques

El notebook de Sage treballa amb Firefox (i Mozilla), Opera, Konqueror, i Safari.
Resolució d'equació i tipografia usant la interfície del notebook de Sage.

Algunes de les moltes característiques de Sage inclouen[2].

  • Una interfície gràfica (notebook) per a la revisió i reutilització d'entrades i sortides anteriors, incloent gràfiques i notes de text disponibles en la majoria de navegadors web, com Firefox, Opera, Konqueror, i Safari. Es fa servir una connexió segura a través de HTTPS al Notebook quan la seguretat o confidencialitat és important, de forma que Sage permet ser usat tant localment com remotament.
  • Una línia de comandes basada en text usant IPython.
  • El llenguatge de programació Python, suporta expressions en programació orientada a objectes i programació funcional.
  • Suporta un processament paral·lel usant tant processadors de nucli múltiple com a multiprocessadors simètrics.
  • Llibreries de funcions matemàtiques elementals i especials.
  • Gràfiques 2D i 3D ja sigui de funcions com de dades.
  • Eines de manipulació de dades i matrius.
  • Llibreries d'estadística multivariant, usant R i SciPy.
  • Una caixa d'eines per afegir interfícies d'usuari a càlculs i aplicacions.[3]
  • Eines per al processament d'imatges, usant Pylab al igual que Python.
  • Llibreries per a funcions de teoria de nombres.
  • Filtres per importar i exportar dades, imatges, vídeo, CAD, GIS, documents i formats biomèdics.
  • Suport per a nombres complexos, aritmètica de precisió arbitrària i computació simbòlica de funcions on aquestes siguin adients.
  • Processador de text, incloent editor de fórmules i la possibilitat de introduir Sage dins de documents a LaTex[4].
  • MoinMoin com a sistema Wiki per aprendre sobre el funcionament de Sage.
  • Documentació fent ús de Sphinx.
  • Automàtica validació que permet a l'usuari testar aplicacions i funcions en el seu ordinador.

Encara que no està directament proporcionat per Sage, aquest pot cridar-se des de Mathematica.[5] el notebook de Mathematica està disponible per aquest.[6]

Filosofia del disseny de Sage

William Stein va remarcar diversos factors importants a l'hora de dissenyar Sage.

  • Crear una alternativa viable a Magma, Maple, Mathematica, i MATLAB, portaria centenars, o milers d'anys si s'hagués de començar des del principi.
  • Existia una àmplia gama de software matemàtic de codi obert ja provat, però estava escrit en diferents llenguatges de programació (C, C++, Fortran i Python els més comuns).

De forma que en comptes de començar des del principi, Sage (que es troba escrit en Python i Cython) integraria tot el software de codi obert que ja existís sobre matemàtiques a una interfície comuna. Així, un usuari necessitarà només saber Python.

Quan no hi hagués cap opció de software lliure disponible per a resoldre algun problema, aleshores seria escrit en Sage. Però, el que volem dir, és que Sage no reinventa la roda. La mateixa filosofia de disseny es fa servir en altres programes matemàtics (com Mathematica), però Sage pot fer servir un espectre més ampli de software, que la competència no lliure, des de que algunes llicències de codi obert imposen grans restriccions en l'ús comercial del codi.

El desenvolupament de Sage es fa tant a través d'estudiants com de profesionals. Està recolzat tant pel treball voluntari com per donacions o beques.[7]

Al 2007 Sage va guanyar el primer premi en la categoria de software científic en el Les Trophées du Libre, una competició internacional de software lliure.[8]


Llicència i disponibilitat

Sage és software lliure, distribuït sota els termes de la GNU General Public License versión 2 o posterior. Sage està disponible de diverses formes:

  • Es pot fer servir la versió en línia en sagenb.org.
  • Es poden descarregar binaris per a GNU/Linux, OS X i Solaris (tant x86 com SPARC). Les últimes versions de Sage de binaris de Solaris no funcionen, encara que sí que ho facin en SPARC.
  • El codi font es pot descarregar de la pàgina de descàrregues. Tot i que no es recomana per usuaris finals, les versions en desenvolupament també estan disponibles.
  • Un CD live que fa anar una versió del sistema GNU/Linux permet provar SAGE sense necessitat d'instal·lar-lo.

Tot i que Microsoft està desenvolupant una versió nativa de Sage per al sistema operatiu Windows[9], pel moment els usuaris de Windows només poden fer servir Sage a través d'una màquina virtual, és a dir, de software de virtualització, com Virtualbox o Vmware. Aquests et permeten simular Linux dins de Windows.

Paquets matemàtics continguts en SAGE

Com hem comentat anteriorment, la filosofia de Sage fa ús de les llibreries de codi obert que ja existeixen. De manera que pren prestat molts projectes per tal de produir un producte final.

Paquets matemàtics continguts en Sage
Àlgebra GAP, Maxima, Singular
Àlgebra lineal ATLAS, BLAS, LAPACK, NumPy, LinBox, IML, GSL
Àlgebra lineal numèrica GSL, SciPy, NumPy, ATLAS
Aritmètica de precissió arbitrària GMP, MPFR, MPFI, NTL
Càlcul Maxima, Sympy, GiNaC
Combinatòria Symmetrica, MuPAD-Combinat*
Geometria algebraica Singular, Macaulay2
Geometria aritmètica PARI, NTL, mwrank, ecm
Gràfiques Matplotlib, Tachion3d, GD, Jmol
Teoria de grafs NetworkX
Teoria de grups GAP
Teoria de nombres PARI/GP, FLINT,NTL
Estadística R, SciPy


Altres paquets continguts en Sage
Línia de comandes IPython
Bases de dades ZODB, Python Pickles, SQLite
Interfície gràfica Sage Notebook, jsmath
Llenguatge de progrmaació interactiu Python
Xarxes Twisted

Exemples a la interfície de comandes

Càlcul

x,a,b,c = var('x,a,b,c')

log(sqrt(a)).simplify_log() # retorna log(a)/2
log(a/b).simplify_log() # retorna log(a) - log(b)
sin(a+b).simplify_trig() # retorna cos(a)*sin(b) + sin(a)*cos(b)
cos(a+b).simplify_trig() # retorna cos(a)*cos(b) - sin(a)*sin(b)
(a+b)ˆ5 # returns (b + a)ˆ5
expand((a+b)ˆ5) # retorna 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) # retorna 1/3
limit(sin(x)/x, x=0) # retorna 1

diff(acos(x),x) # retorna -1/sqrt(1 - xˆ2)
f = exp(x)*log(x)
f.diff(x,3) # retorna 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) # retorna [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) # retorna [x == 3*sqrt(3)*I - 3,
 # x == -3*sqrt(3)*I - 3, x == 6]

Equacions diferencials

t = var('t') # defineix una variable t
x = function('x',t) # defineix x com a funció d'aquesta variable
DE = lambda y: diff(y,t) + y - 1
desolve(DE(x(t)), [x,t]) # retorna '%e^-t*(%e^t+%c)'

Àlgebra linial

A = Matrix([[1,2,3],[3,2,1],[1,1,1]])
y = vector([0,-4,-1])
A.solve_right(y) # retorna (-2, 1, 0)
A.eigenvalues() # retorna [5, 0, -1]

B = Matrix([[1,2,3],[3,2,1],[1,2,1]])
B.inverse() # retorna [ 0 1/2 -1/2]
 # [-1/4 -1/4 1]
 # [ 1/2 0 -1/2]

# Crida numpy per fer servir la pseudo-inversa de Moore-Penrose,
# donat que Sage encara no ho té pròpiament implementat.

import numpy
C = Matrix([[1 , 1], [2 , 2]])
matrix(numpy.linalg.pinv(C.numpy())) # retorna [0.1 0.2]
 # [0.1 0.2]

Teoria de nombres

prime_pi(1000000) # retorna 78498, el nombre de primers menors a un milió

E = EllipticCurve('389a') # construeix una corba el·líptica a partir de la seva etiqueta de Cremona
P, Q = E.gens()
7*P + Q # retorna (2869/676 : -171989/17576 : 1)

Enllaços d'interès externs

  • La web de Sage (anglès)
  • Sage a la UPC
  • Wiki Sage a la UPC
  • Servidor de Sage a EEUU (anglès)

Enllaços d'interès

Referències

  1. Stein, William. «SAGE Days 4», 12-06-2007. [Consulta: 2 agost 2007].
  2. Sage documentation
  3. «Sage Interact functionality». [Consulta: 11 abril 2008].
  4. The TeX Catalogue OnLine, Entry for sagetex, Ctan Edition
  5. http://facstaff.unca.edu/mcmcclur/Mathematica/Sage/ Calling Sage from Mathematica
  6. http://facstaff.unca.edu/mcmcclur/Mathematica/Sage/UsingSage.nb A Mathematica notebook to call Sage from Mathematica.
  7. Error: hi ha títol o url, però calen tots dos paràmetres.«», 14-04-2006. [Consulta: 24 juliol 2007].
  8. «Free Software Brings Affordability, Transparency To Mathematics», 7 diciembre 2007. [Consulta: 20 juliol 2008].
  9. Sage - Acknowledgment