SageMath è disponibile per la piattaforma Linux e Mac OS X (10.4 o superiore); è disponibile anche per Microsoft Windows, in una versione implementata per Oracle VirtualBox.
Funzionalità
Alcune delle caratteristiche maggiori di SageMath sono:[1].
L'interfaccia notebook document, per revisionare e riusare precedenti dati in ingresso o in uscita, includendo grafici o caselle di testo usabili per molti web browser incluso Firefox, Opera, Konqueror, e Safari. Una connessione sicura con HTTPS verso l'interfaccia web notebook è supportata quando sicurezza e riservatezza sono importanti, e consente a Sage di essere utilizzato sia in locale che in remoto.
Una interfaccia testuale a riga di comando usando IPython.
Supporto per parallel processing usando sia computer con processori Multi core disponibili in molti computer moderni, in aggiunta a sistemi di computer distribuiti (distributed computing).
Interfacce di alcuni software di terze parti come Mathematica, Magma, e Maple, che permette agli utenti di assemblare software e confrontare risultati e prestazioni. È quindi anche un "front-end" verso altri strumenti matematici simili a GNU TeXmacs.
MoinMoin è un sistema Wiki per la gestione della conoscenza.
Documentazione usando Sphinx.
Uno strumento automatico di testing, che consente la prova sul computer di un utente finale.
Benché non direttamente supportato, SageMath può essere invocato all'interno di Mathematica.[4] Un notebook di Mathematica è disponibile per questa funzionalità.[5]
Sviluppo
Durante lo sviluppo di SageMath William Stein si è reso conto che erano presenti una varietà di software matematici open-source scritti in diversi linguaggi di programmazione, come C, C++, Common Lisp, Fortran e Python.
Invece di "reinventare la ruota", SageMath (che è scritto principalmente in Python e Cython) contiene i diversi software matematici esistenti in un'unica interfaccia, per la quale la sintassi utilizzata è quella di Python. Inoltre sono state scritte centinaia di migliaia righe di codice allo scopo di aggiungere nuove funzionalità e collegare le diverse componenti.[6]
SageMath è sviluppato da studenti e professionisti sia attraverso contributi volontari che sovvenzioni.[7]
Rilasci
Nella seguente tabella sono indicati solo gli sviluppi maggiori. SageMath segue una politica dei rilasci che prevede nuovi aggiornamenti ogni poche settimane o mesi. In totale sono state effettuati più di 300 rilasci, anche se ultimamente la frequenza sta diminuendo.[8]
SageMath versions
Version
Release Date
Description
0.1
Gennaio 2005
Viene incluso PARI
0.2–0.4
Marzo-Luglio 2005
Polinomi in più variabili, estensione della documentazione
La filosofia di Sage è quella di utilizzare quando disponibili le esistenti librerie open source. Quindi prende in prestito da molti progetti nella realizzazione del lavoro finale.
Sono presenti file binari precompilati per Linux, OS X e Solaris (sia nella versione x86 che SPARC).
È disponibile un Live CD per un utilizzo di SageMath anche su macchine che non hanno Linux, OS X o Solaris installati.
Fino al 17 aprile 2015 era possibile utilizzare una versione online di SageMath su sagenb.org (archiviato dall'url originale il 30 aprile 2007)..
È possibile utilizzare online una versione "single cell" di SageMath su sagecell.sagemath.org. o incorporare una "singe cell" in un qualunque sito web. È inoltre possibile creare dei link permanenti a SageMath utilizzando il single cell server.[12]
È disponibile una nuova versione online di SageMath su cloud.sagemath.com.. Su questa versione è inoltre possibile compilare documenti in LaTeX, utilizzare un terminale Linux e un notebook Jupyter.
t=var('t')# definisce la variable tx=function('x',t)# definisce che x deve essere una funzione della variabile tDE=lambday:diff(y,t)+y-1desolve(DE(x(t)),[x,t])# restituisce '%e^-t*(%e^t+%c)'
Algebra lineare
A=Matrix([[1,2,3],[3,2,1],[1,1,1]])y=vector([0,-4,-1])A.solve_right(y)# returns (-2, 1, 0)A.eigenvalues()# returns [5, 0, -1]B=Matrix([[1,2,3],[3,2,1],[1,2,1]])B.inverse()# returns [ 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.importnumpyC=Matrix([[1,1],[2,2]])matrix(numpy.linalg.pinv(C.numpy()))# returns [0.1 0.2]# [0.1 0.2]
Teoria dei Numeri
prime_pi(1000000)# returns 78498, the number of primes less than one millionE=EllipticCurve('389a')# construct an elliptic curve from its Cremona labelP,Q=E.gens()7*P+Q# returns (2869/676 : -171989/17576 : 1)