SAGE (programari matemàtic)
![]() ![]() | |
![]() ![]() | |
Tipus | Sistema Algebraic Computacional![]() |
---|---|
Versió inicial | 2005![]() |
Versió estable | |
Llicència | GNU GPL 2.0![]() |
Característiques tècniques | |
Sistema operatiu | Linux,Microsoft WindowsimacOS![]() |
Escrit en | Python,Cython,C,C++iFortran![]() |
Equip | |
Desenvolupador(s) | William A. Stein![]() |
Distribuidor | Google Play![]() |
Més informació | |
Lloc web | sagemath.org(anglès)![]() |
Stack Exchange | Etiqueta![]() |
| |
SAGEés unsistema algebraic computacional(en anglèsCAS) escrit enPython,aquesta aplicació de software cobreix molts aspectes de lesmatemàtiques,incloent-hiàlgebra,combinatòria,mètodes numèricsicàlcul.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 unsoftware lliuresota els termes deGNU General Public License,tal que el seu objectiu principal era crear una alternativa oberta al software de d'àlgebra computacional comMagma,Maple,Mathematica,iMATLAB,i d'aquesta forma reduir la dependència del software matemàtic amb propietari i amb codi tancat.
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]
Prestacions
[modifica]![](https://upload.wikimedia.org/wikipedia/commons/thumb/b/bd/Sage_-_plot.png/220px-Sage_-_plot.png)
![](https://upload.wikimedia.org/wikipedia/commons/thumb/e/e9/SAGE_equation_solve.jpeg/220px-SAGE_equation_solve.jpeg)
Algunes de les moltes característiques de Sage incloue:[2]
- Una interfície gràfica (notebook) per a la revisió i reutilització d'entrades i sortides anteriors, incloent-hi gràfiques i notes de text disponibles en la majoria de navegadors web, comFirefox,Opera,Konqueror,iSafari.Es fa servir una connexió segura a través deHTTPSal Notebook quan la seguretat o confidencialitat és important, de forma que Sage permet ser usat tant localment com remotament.
- Una línia d'ordres basada en text usantIPython.
- 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.
- Càlculs usatMaximaiSymPy.
- Àlgebra lineal numèrica usantGSL,SciPyiNumPy.
- 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, usantRiSciPy.
- Una caixa d'eines per afegir interfícies d'usuari a càlculs i aplicacions.[3]
- Eines per al processament d'imatges, usantPylabigual quePython.
- Eines per visualitzar i analitzarteoria de grafs.
- 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 anombres complexos,aritmètica de precisió arbitrària i computació simbòlica de funcions on aquestes siguin adients.
- Processador de text, incloent-hi editor de fórmules i la possibilitat d'introduir Sage dins de documents aLaTeX.[4]
- Eines per connectar aSQL,Java,.NET,C++,FORTRANproporcionat perTwisted.Aquest suporta un gran nombre de protocols incloentHTTP,NNTP,IMAP,SSH,IRC,FTPentre d'altres.
- Interfícies a altres software matemàtic (no lliure) comMathematica,Magma,iMaple,que permet als usuaris combinar software i comparar resultats. I a software lliure comGAP,Pari,Maxima,SINGULAR.
- MoinMoincom a sistemaWikiper aprendre sobre el funcionament de Sage.
- Documentació fent ús deSphinx.
- 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. el notebook deMathematicaestà disponible per aquest.
Filosofia del disseny de Sage
[modifica]William A. Steinva remarcar diversos factors importants a l'hora de dissenyar Sage.
- Crear una alternativa viable aMagma,Maple,Mathematica,iMATLAB,portaria centenars, o milers d'anys si s'hagués de començar des del principi.
- Existia una àmplia gamma de software matemàtic de codi obert ja provat, però estava escrit en diferents llenguatges de programació (C,C++,FortraniPythonels més comuns).
De forma que en comptes de començar des del principi, Sage (que es troba escrit enPythoniCython) 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 saberPython.
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 noreinventa la roda.La mateixa filosofia de disseny es fa servir en altres programes matemàtics (comMathematica), però Sage pot fer servir un espectre més ampli de software, que la competència no lliure, ja 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 professionals. Està recolzat tant pel treball voluntari com per donacions o beques.[5]
El 2007 Sage va guanyar el primer premi en la categoria de software científic en elLes Trophées du Libre,una competició internacional de software lliure.[6]
Llicència i disponibilitat
[modifica]Sage ésprogramari lliure,distribuït sota els termes de laGNU General Public Licenseversión 2 o posterior. Sage està disponible de diverses formes:
- Es pot fer servir la versió en línia ensagenb.orgArxivat2007-04-30 aWayback Machine..
- Es poden descarregar binaris per aGNU/Linux,OS XiSolaris(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 lapàgina de descàrregues.Tot i que no es recomana per usuaris finals, les versions en desenvolupament també estan disponibles.
- UnCD liveque fa anar una versió del sistemaGNU/Linuxpermet provar SAGE sense necessitat d'instal·lar-lo.
Tot i queMicrosoftestà desenvolupant una versió nativa de Sage per al sistema operatiuWindows,[7]de 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ó, comVirtualboxoVmware.Aquests et permeten simular Linux dins de Windows.
Paquets matemàtics continguts en SAGE
[modifica]Com hem comentat anteriorment, la filosofia de Sage fa ús de les llibreries de codi obert que ja existeixen. De manera que manlleva molts projectes per tal de produir un producte final.
Àlgebra | GAP,Maxima,Singular |
Àlgebra lineal | ATLAS,BLAS,LAPACK,NumPy,LinBox,IML,GSL |
Àlgebra lineal numèrica | GSL,SciPy,NumPy,ATLAS |
Aritmètica de precisió 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 |
Línia d'ordres | 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
[modifica]Càlcul
[modifica]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
[modifica]t=var('t')# defineix una variable t
x=function('x',t)# defineix x com a funció d'aquesta variable
DE=lambday:diff(y,t)+y-1
desolve(DE(x(t)),[x,t])# retorna '%e^-t*(%e^t+%c)'
Àlgebra lineal
[modifica]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.
importnumpy
C=Matrix([[1,1],[2,2]])
matrix(numpy.linalg.pinv(C.numpy()))# retorna [0.1 0.2]
# [0.1 0.2]
Teoria de nombres
[modifica]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)
Referències
[modifica]- ↑Stein,William. «SAGE Days 4», 12-06-2007. Arxivat de l'originalel 2007-06-27. [Consulta: 2 agost 2007].
- ↑«SageMath Mathematical Software System - Sage» (en anglès). [Consulta: 18 desembre 2017].
- ↑«Sage Interact functionality». [Consulta: 11 abril 2008].
- ↑«The TeX Catalogue OnLine, Entry for sagetex, Ctan Edition». [Consulta: 18 desembre 2017].[Enllaç no actiu]
- ↑«Explicit Approaches to Modular Forms and Modular Abelian Varieties».National Science Foundation,14-04-2006. [Consulta: 24 juliol 2007].
- ↑«Free Software Brings Affordability, Transparency To Mathematics». Science Daily, 07-12-2007. [Consulta: 20 juliol 2008].
- ↑«SageMath Mathematical Software System - Sage» (en anglès). [Consulta: 18 desembre 2017].
Vegeu també
[modifica]Enllaços externs
[modifica]- La web de Sage(anglès)
- Sage a la UPCArxivat2016-03-03 aWayback Machine.
- Wiki Sage a la UPCArxivat2016-03-03 aWayback Machine.
- Servidor de Sage als EUA(anglès)