Ir al contenido
Menú principal
Menú principal
mover a la barra lateral
ocultar
Navegación
Página principal
Cambios recientes
Página aleatoria
Ayuda sobre MediaWiki
Buscar
Buscar
español
Apariencia
Crear una cuenta
Acceder
Herramientas personales
No has accedido
Discusión
Contribuciones
Crear una cuenta
Acceder
Edición de «
SageMath
»
Página
Discusión
español
Leer
Editar
Editar código
Ver historial
Herramientas
Herramientas
mover a la barra lateral
ocultar
Acciones
Leer
Editar
Editar código
Ver historial
General
Lo que enlaza aquí
Cambios relacionados
Información de la página
Apariencia
mover a la barra lateral
ocultar
Advertencia:
no has iniciado sesión. Tu dirección IP se hará pública si haces cualquier edición. Si
inicias sesión
o
creas una cuenta
, tus ediciones se atribuirán a tu nombre de usuario, además de otros beneficios.
Comprobación antispam. ¡
No
rellenes esto!
{{Ficha de software | nombre = SageMath | logo = [[Image:Sage logo new.png|250px|Sage logo]] | captura = [[Archivo:Sagemath-jupyter-screenshot.png|200px]]| | pie = La interfaz gráfica bajo [[Firefox]] | desarrollador = William Stein (líder del proyecto) et al | lanzamiento = {{fecha|24|02|2005}} | última_versión = 10.7 | fecha_última_versión = {{fecha de lanzamiento|9|8|2025}} | sistema_operativo = GNU/Linux, Mac OS X, Windows | género = Software matemático ([[Sistema algebraico computacional]] CAS) | licencia = [[Licencia pública general de GNU|GNU GPL]] | sitio_web = [http://www.sagemath.org sagemath.org] | lenguaje_programación = [[Python]], [[Cython]] }} '''SageMath,''' conocido anteriormente como '''Sage,''' es un [[sistema algebraico computacional]] (en inglés CAS) que destaca por estar construido sobre paquetes matemáticos ya contrastados como [[NumPy]], [[Sympy]], [[PARI/GP]] o [[Maxima]] y por acceder a sus potencias combinadas a través de un lenguaje común basado en [[Python]]. La interacción con el usuario es posible desde la interfaz de línea de comandos (basada en [[IPython]] ) o vía unos cuadernos web<ref>{{cita web |url=http://jupyter.org|título=Jupyter notebook}}</ref> que combinan celdas de código con celdas con gráficos, texto enriquecido o fórmulas renderizadas con LaTeX. == Historia y filosofía de diseño == La primera versión de SAGE se publicó en 2005 con el objetivo inicial de recrear un pequeño subconjunto del [[sistema algebraico computacional]] Magma, y reducir así la dependencia del software matemático propietario y cerrado.<ref>{{cita web|url=http://www.sagemath.org/why/stein-sd4.pdf|título=http://www.sagemath.org/why/stein-sd4.pdf|fechaacceso=11 de marzo de 2008|urlarchivo=https://web.archive.org/web/20070928181329/http://www.sagemath.org/why/stein-sd4.pdf|fechaarchivo=28 de septiembre de 2007}}</ref> [[Archivo:William A. Stein.png|thumb|300px|William A. Stein, desarrollador de Sage]] El líder del proyecto, [[William A. Stein]], matemático en la Universidad de Washington, destacó varios factores al diseñar Sage:<ref>{{Cita publicación|url=http://wstein.org/papers/focm11/focm11.pdf|título=Sage: creating a viable free open source alternative to Magma, Maple, Mathematica, and MATLAB.|apellidos=Stein|nombre=William|fecha=2013|publicación=London Mathematical Society Lecture Note Series 403, 230-238|fechaacceso=2016|doi=|pmid=}}</ref> * Crear una alternativa viable a [[Magma]], [[Maple]], [[Mathematica]], y [[MATLAB]], llevaría cientos, o miles de años-hombre si se empezara desde el inicio. * Existe una amplia gama de software matemático de código abierto bien probado, escrito en diferentes lenguajes (siendo [[C (lenguaje de programación)|C]], [[C++]], [[Fortran]] y [[Python]] los más comunes). Así que en lugar de empezar desde el inicio, Sage (escrito en [[Python]] y [[Cython]]) integraría todo el software de código abierto sobre matemática ya existente en una interfaz común: un usuario necesitará saber únicamente un lenguaje bien conocido como [[Python]]. Donde no hubiera una opción de software libre disponible para algún problema, entonces sería escrito en Sage. Pero Sage no ''reinventa la rueda''. La misma filosofía de diseño se usa en otros programas matemáticos (como [[Mathematica]]), pero Sage puede utilizar un espectro más amplio de software, que sus contrapartes no libres, ya que las licencias propietarias imponen serias restricciones a la reutilización del software. El desarrollo de Sage lo llevan a cabo tanto estudiantes como profesionales. Es apoyado tanto por trabajo voluntario como por donaciones.<ref>{{cita web | url=http://www.nsf.gov/awardsearch/showAward.do?AwardNumber=0555776 | título=Explicit Approaches to Modular Forms and Modular Abelian Varieties | editorial=[[National Science Foundation]] | fecha=14 de abril de 2006 | fechaacceso=24 de julio de 2007}}</ref> En 2007 Sage ganó el primer premio en la categoría de software científico en el [[Les Trophées du libre]], una competición internacional de software libre.<ref>{{cita web | url = http://www.sciencedaily.com/releases/2007/12/071206145213.htm | título = Free Software Brings Affordability, Transparency To Mathematics | fechaacceso = 20 de julio de 2008 | editorial = Science Daily | fecha = 7 de diciembre de 2007 }}</ref> == Características == Al igual que otros CAS, SageMath se divide en un núcleo que realiza los cálculos y una interfaz (a elegir) que los muestra e interacciona con el usuario. === Interfaces con el usuario === Existe una interfaz gráfica (notebook) para la revisión y reutilización de entradas y salidas anteriores, incluyendo gráficas y notas de texto. Realmente en 2016 conviven dos tipos de notebook: uno (SageMath worksheet) diseñado exprofeso para SageMath, con otro (Jupyter notebook) de uso más generalizado en el software científico. Además existe una línea de comandos basada en texto usando [[iPython]] que permite el control interactivo de los cálculos: <syntaxhighlight lang="python"> sage # inicia interfaz de línea de comandos sage -n # inicia navegador con interfaz Sagemath worksheet sage -n jupyter # inicia navegador con interfaz Jupyter notebook </syntaxhighlight> Posee asistencia al usuario con autocompletado (''TAB''), consulta de documentación (''EXPRESION?'') o del código fuente (''EXPRESION??'') es posible en todas las interfaces. En las interfaces de tipo notebook permite la inclusión de widgets (p.ej cajas de entrada, deslizadores) que permiten al usuario del programa interaccionar con él sin tener que modificar el código fuente. Para ello basta con aplicar el decorador @interact a una función ya definida.<ref>{{cite web| url=http://wiki.sagemath.org/interact | title=SageMath Interact functionality | accessdate=11 de abril de 2008}}</ref> === Lenguaje de programación === SageMath utiliza el [[lenguaje de programación Python]], que soporta expresiones en programación [[Programación orientada a objetos|orientada a objetos]] y [[Programación funcional|funcional]]. Internamente, SageMath está escrito en [[Python]] y en una versión modificada de Pyrex llamada [[Cython]]. Cuando SageMath invoca funciones de otros paquetes lo hace de forma transparente usando internamente el módulo python [[Expect|Pexpect]]. Además, utiliza [[Computación paralela|procesamiento paralelo]] usando tanto [[procesadores de núcleo múltiple]] como [[multiprocesadores simétricos]]. === Herramientas que aglutina === Reúne y unifica bajo un solo entorno, lenguaje y jerarquía de objetos toda una colección de software matemático y trata de rellenar los huecos de funcionalidad dejados por unos y otros. Proporciona una interfaz [[Python]] a software libre especializado en distintos campos entre los que destacamos: {| class="wikitable" |'''Campo''' | '''Paquetes matemáticos distribuidos con SageMath''' |- | Álgebra | [[GAP (sistema algebraico computacional)|GAP]], [[Maxima]], [[SINGULAR|Singular]] |- | Álgebra lineal | [[Automatically Tuned Linear Algebra Software|ATLAS]], [[BLAS]], [[LAPACK]], [[NumPy]], [[LinBox]], [[Integer Matrix Library|IML]], [[GNU Scientific Library|GSL]] |- | Álgebra lineal numérica | [[GSL]], [[SciPy]], [[NumPy]] , [[Automatically Tuned Linear Algebra Software|ATLAS]] |- | Aritmética de precisión arbitraria | [[GNU Multiple Precision Arithmetic Library|GMP]], [[MPFR]], [[MPFR|MPFI]], [[NTL]] |- | Cálculo | Maxima, [[Sympy]], [[GiNaC]] |- | Combinatoria | [http://www.algorithm.uni-bayreuth.de/en/research/SYMMETRICA/ Symmetrica], Sage-Combinat |- | Estadística | [[R (lenguaje de programación)|R]], [[SciPy]] |- | Geometría algebraica | [[SINGULAR]], [[Macaulay]]2 |- | Geometría aritmética | [[PARI/GP]], [[NTL]], [[mwrank]], [[Factorización de curva elíptica de Lenstra|GMP-ECM]] |- | Geometría Diferencial y Cálculo Tensorial | [http://sagemanifolds.obspm.fr/ Sage Manifolds] |- | Gráficos | [[Matplotlib]], [[Tachyon]], [[Biblioteca de gráficos GD|GD]], [[Jmol]] |- | Teoría de grafos | [http://networkx.github.io NetworkX] |- | Teoría de grupos | [[GAP (sistema algebraico computacional)|GAP]] , Symmetrica |- | Teoría de números | [[PARI/GP]], [http://flintlib.org FLINT], [[NTL]] |} También proporciona interfaces a otro software no libre como [[Mathematica]], [[Magma]] y [[Maple]] (no distribuidos con SageMath) que permite a los usuarios combinar software y comparar resultados y desempeño. Todos estos paquetes cubren, entre otras, las funcionalidades básicas siguientes: * Librerías de funciones [[función elemental|elementales]] y [[función especial|especiales]] * Gráficas en 2D y 3D tanto de funciones como de datos. * Herramientas de manipulación de datos y matrices. * Una caja de herramientas para añadir [[interfaz de usuario|interfaces de usuario]] a cálculos y aplicaciones * Herramientas para [[procesamiento de imágenes]] usando pylab así como Python * Herramientas para visualizar y analizar [[gráfica]]s * Filtros para importar y exportar datos, imágenes, vídeo, sonido, [[CAD]], y [[GIS]] * Embeber Sage en documentos [[LaTeX]]<ref>{{cita web | url = http://www.ctan.org/tex-archive/help/Catalogue/entries/sagetex.html | título = The TeX Catalogue OnLine, Entry for sagetex, Ctan Edition | fechaacceso = 22 de diciembre de 2009 | fechaarchivo = 2 de febrero de 2009 | urlarchivo = https://web.archive.org/web/20090202110136/http://www.ctan.org/tex-archive/help/Catalogue/entries/sagetex.html | deadurl = yes }}<!--Título generado por Muro Bot--></ref> == Licencia y disponibilidad == SageMath es [[software libre]], distribuido bajo los términos de la [[GNU General Public License]] versión 2 o posterior. Está disponible de varias maneras: === Versiones en línea === * Pueden usarse desde {{Enlace roto|1=[http://ww.cloud.sagemath.com SageMathCloud] |2=http://ww.cloud.sagemath.com/ |bot=InternetArchiveBot }}, un servicio de computación en la nube al que se accede desde ordenadores o dispositivos móviles mediante cuentas gratuitas o de suscripción. Este servicio está disponible desde 2013. * Para una consulta puntual existe, desde el año 2009, una versión reducida en [http://sagecell.sagemath.org SageMathCell]. === Instalación en el ordenador === * Se pueden descargar binarios para [[GNU/Linux]], [[OS X]] y [[Solaris (sistema operativo)|Solaris]] (tanto x86 como SPARC). Los binarios de Solaris se consideran experimentales. * El código fuente puede descargarse de la [http://www.sagemath.org/download.html página de descargas]. * Un [[CD live]] que corre una versión del sistema [[GNU/Linux]] permite probar Sage sin necesidad de instalarlo. *Los usuarios de Windows solo pueden utilizarlo a través de software de virtualización como [[Virtualbox]] o [[Vmware]]. ==Ejemplos de línea de comandos== ===Cálculo=== <syntaxhighlight lang="python"> x,a,b,c = var('x,a,b,c') # en contraste con otros CAS, debemos declarar # una variable simbólica antes de usarla log(sqrt(a)).simplify_log() # devuelve log(a)/2 log(a/b).simplify_log() # devuelve log(a) - log(b) sin(a+b).simplify_trig() # devuelve cos(a)*sin(b) + sin(a)*cos(b) cos(a+b).simplify_trig() # devuelve cos(a)*cos(b) - sin(a)*sin(b) (a+b)ˆ5 # devuelve (b + a)ˆ5 expand((a+b)ˆ5) # devuelve 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) # devuelve 1/3 limit(sin(x)/x, x=0) # devuelve 1 diff(acos(x),x) # devuelve -1/sqrt(1 - xˆ2) f = exp(x)*log(x) f.diff(x,3) # devuelve 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) # devuelve [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) # devuelve[x == 3*sqrt(3)*I - 3, # x == -3*sqrt(3)*I - 3, x == 6] </syntaxhighlight> ===Ecuaciones Diferenciales=== <syntaxhighlight lang="python"> t = var('t') # declara una variable simbólica t x = function('x',t) # define x como función de t DE = lambda y: diff(y,t) + y - 1 desolve(DE(x(t)), [x,t]) # devuelve '%e^-t*(%e^t+%c)' </syntaxhighlight> ===Álgebra Lineal=== <syntaxhighlight lang="python"> A = matrix([[1,2,3],[3,2,1],[1,1,1]]) y = vector([0,-4,-1]) A.solve_right(y) # devuelve (-2, 1, 0) A.eigenvalues() # devuelve [5, 0, -1] B = matrix([[1,2,3],[3,2,1],[1,2,1]]) B.inverse() # devuelve [ 0 1/2 -1/2] # [-1/4 -1/4 1] # [ 1/2 0 -1/2] # Call numpy for the Moore-Penrose pseudo-inverse, # since Sage does not support that yet. import numpy C = matrix([[1 , 1], [2 , 2]]) matrix(numpy.linalg.pinv(C.numpy())) # devuelve [0.1 0.2] # [0.1 0.2] </syntaxhighlight> ===Teoría de Números=== <syntaxhighlight lang="python"> prime_pi(1000000) # devuelve 78498, el número de primos # menores que 1 millón. E = EllipticCurve('389a') # construye una curva elíptica # de las tablas de Cremona P, Q = E.gens() 7*P + Q # devuelve (2869/676 : -171989/17576 : 1) </syntaxhighlight> == Referencias == {{listaref}} == Enlaces externos == {{commonscat|Sage (mathematics software)}} * [http://www.sagemath.org Sitio web de SageMath] / [http://www.sagemath.org/doc/index.html Documentación oficial] (en inglés) *[http://www.dma.fi.upm.es/recursos/VisitaSAGE.pdf Hoja de referencia rápida] * [https://sagecell.sagemath.org/ SageMath cell server] Sagemath en la nube para breves cálculos. * [http://cloud.sagemath.com/ SageMathCloud] SageMath para proyectos en la nube (requiere registro gratuito) *[https://www.youtube.com/playlist?list=PLilnwC7Bci66ycn8nJXl-okL8pvspOfGc Sagemath y matemáticas] Lista con 21 videotutoriales en español. {{Control de autoridades}} [[Categoría:Software matemático]] [[Categoría:Sistemas algebraicos computacionales]] [[Categoría:Software gratuito y libre para Android]]
Resumen:
Al guardar los cambios aceptas los
términos de uso
y liberas de forma irrevocable tu contribución conforme a los términos de las licencias
licencia CC BY-SA 4.0
y
GFDL
. Aceptas igualmente que un hipervínculo o URL es atribución suficiente conforme a la licencia Creative Commons.
Cancelar
Ayuda de edición
(se abre en una ventana nueva)
Buscar
Buscar
Edición de «
SageMath
»
Añadir idiomas
Añadir tema