Salvia

Salvia

Animerat diagram skapat i Sage, y=x 2 (röd kurva), y=x 3 (blå kurva)
Sorts Datoralgebrasystem
Utvecklaren William A. Stein [d]
Skrivet i Python , Cython
Operativ system Programvara för flera plattformar
Första upplagan 24 februari 2005
Hårdvaruplattform Pytonorm
senaste versionen
Licens GNU General Public License
Hemsida sagemath.org
 Mediafiler på Wikimedia Commons

Sage (från  engelska  -  "sage") är ett datoralgebrasystem som täcker många områden inom matematiken , inklusive algebra , kombinatorik , beräkningsmatematik och matematisk analys .

Den första versionen av Sage släpptes den 24 februari 2005 som fri programvara licensierad under GNU GPL . Det ursprungliga målet med projektet var "att tillhandahålla ett alternativ med öppen källkod till Magma , Maple , Mathematica och MATLAB " [2] . Huvudutvecklaren är matematikern William Stein vid University of Washington .

Funktioner

Systemets huvudgränssnitt är ett interaktivt anteckningsblock som ger visning och återanvändning av de inmatade kommandona, utmatning och lagring av resultat, inklusive grafer och textkommentarer, tillgängliga från de flesta moderna webbläsare . En säker anslutning stöds via HTTPS-protokollet . Kan köras både lokalt och på distans.

Det finns ett kommandoradsgränssnitt som använder Python -språket (sedan Sage version 9.0 - Python version 3, tidigare - Python version 2).

Parallell beräkning stöds med både flerkärniga processorer , multiprocessorsystem och distribuerade datorsystem .

Matematisk analys genomförs på basis av Maxima och SymPy system . Linjär algebra implementeras baserat på GSL- , SciPy- och NumPy- systemen . Implementerat egna bibliotek med elementära och speciella matematiska funktioner. Det finns verktyg för att arbeta med matriser och datamatriser med stöd för sparse arrays . Olika statistiska funktionsbibliotek är tillgängliga med R- och SciPy- funktioner .

Funktioner och data kan visas i form av platta och tredimensionella grafer. Det finns en uppsättning verktyg för att lägga till ditt eget användargränssnitt till beräkningar och applikationer [3] . Det finns verktyg för att förbereda vetenskaplig och teknisk dokumentation med hjälp av formelredigeraren och möjligheten att bädda in Sage i LaTeX -formatdokumentation [4] .

Stöder import och export av olika dataformat: bilder, video, ljud, CAD , GIS , dokument och medicinska format. pylab och Python används för bildbehandling; det finns medel för grafteoretisk analys och visualisering av grafer.

Det är möjligt att ansluta till databaser. Olika nätverksprotokoll stöds inklusive HTTP , NNTP , IMAP , SSH , IRC , FTP .

Implementerade programmeringsgränssnitt för att arbeta med Mathematica -system (även Sage kan anropas från Mathematicas gränssnitt [5] [6] ), Magma och Maple .

Källkoden och Sage körbara filer är tillgängliga för nedladdning. När systemet är byggt kommer många av biblioteken som ingår i satsen att automatiskt konfigureras för optimal drift på denna hårdvara, med hänsyn tagen till antalet processorer och kärnor, storleken på cachebuffertar och stöd för speciella instruktionsuppsättningar, som t.ex. SSE .

Sage utvecklingsfilosofi

Under utvecklingen av Sage förlitade sig William Stein på det faktum att det skulle ta hundratals eller tusentals manår att skapa ett värdigt alternativ till Magma, Maple , Mathematica och MATLAB om man startar utvecklingsprocessen från början, och det finns en stor mängd färdig matematisk programvara med öppen källkod, men skriven på olika programmeringsspråk, varav de vanligaste är C , C++ , Fortran , och Python .

Så istället för att börja om från början beslutades det att kombinera all specialiserad matematisk programvara till ett system med ett gemensamt gränssnitt. Slutanvändaren behöver bara kunna Python-språket . Om programvara med öppen källkod inte fanns för någon speciell uppgift, så var uppgiften att skriva motsvarande block för Sage, medan, till skillnad från kommersiella datoralgebrasystem, ofta källkoderna för redan existerande fri programvara användes.

Både professionella och studenter är involverade i utvecklingen av Sage. Utvecklare arbetar på frivillig basis och får stöd av bidrag [7] .

Licensiering och tillgänglighet

Sage är fri programvara som distribueras under villkoren i GNU General Public License version 2+. Källkoden kan laddas ner från den officiella webbplatsen. Utgåvor under utveckling är också tillgängliga, även om de inte rekommenderas för allmänna användare. Körbara filer är tillgängliga för operativsystemen Linux , Windows , OS X och Solaris (både x86- och SPARC-arkitekturer ). En live-CD för Linux finns också tillgänglig , så att du kan prova Sage utan att installera den på din dator.

Användare kan använda onlineversionen av Sage. Samtidigt finns det begränsningar för mängden tillgängligt minne och sekretessen för arbetet.

År 2007 vann Sage första pris i den internationella gratisprogramvarutävlingen Les Trophées du Libre i den vetenskapliga mjukvaruavdelningen [8] .

Programvarupaket som finns i Sage

Matematikpaket
Algebra GAP , Maxima , Singular
Algebraisk geometri Singularis
Godtycklig precisionsarithmetik GMP , MPFR , MPFI , NTL
Aritmetisk geometri PARI , NTL , mwrank , ecm
Matematisk analys Maxima , SymPy , GiNaC
Kombinatorik Symmetrica , Sage-Combinat
Linjär algebra Linbox , IML
grafteori NetworkX
Gruppteori glipa
Numeriska beräkningar GSL , SciPy , NumPy , ATLAS
Andra paket
Kommandoradsgränssnitt IPython
Databas ZODB , Python Pickles , SQLite
GUI Sage Notebook, jsmath
Grafisk konst Matplotlib , Tachyon3d , GD , Jmol
Kommandotolk Pytonorm
Nätverk Vriden

Kommandoradsexempel

Analys

x , a , b , c = var ( 'x,a,b,c' ) log ( sqrt ( a )) . förenkla_logg () # returnerar (log(a))/2 log ( a / b ) . förenkla_log () # returnerar log(a) - log(b) sin ( a + b ) . simplify_trig () # returnerar cos(a)*sin(b) + sin(a)*cos(b) cos ( a + b ) . simplify_trig () # returnerar cos(a)*cos(b) - sin(a)*sin(b) ( a + b ) ^ 5 # returnerar (b + a)^5 expand (( a + b ) ^ 5 ) # returnerar 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 = oändlighet ) # returnerar 1/3 limit ( sin ( x ) / x , x = 0 ) # returnerar 1 diff ( acos ( x ), x ) # returnerar -1/sqrt(1 - x^2) f = exp ( x ) * log ( x ) f . diff ( x , 3 ) # returnerar 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 ) # returnerar [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 lösa ( f . diff ( x ) == 0 , x ) # returnerar [x == 3*sqrt(3)*I - 3, # x == -3*sqrt(3 ) )*I - 3, x == 6]

Differentialekvationer

t = var ( 't' ) # definiera en variabel t x = funktion ( 'x' , t ) # definiera x att vara en funktion av den variabeln DE = lambda y : diff ( y , t ) + y - 1 desolve ( DE ( x ( t )), [ x , t ]) # returnerar '%e^-t*(%e^t+%c)'

Linjär algebra

A = Matris ([[ 1 , 2 , 3 ], [ 3 , 2 , 1 ], [ 1 , 1 , 1 ]]) y = vektor ([ 0 , - 4 , - 1 ]) A . solve_right ( y ) # returnerar (-2, 1, 0) A . egenvärden () #returns[5, 0, -1] B = Matris ([[ 1 , 2 , 3 ], [ 3 , 2 , 1 ], [ 1 , 2 , 1 ]]) B . invers () # [ 0 1/2 -1/2] # [-1/4 -1/4 1] # [ 1/2 0 -1/2] # Moore-Penrose pseudo-invers C = Matrix ([[ 1 , 1 ], [ 2 , 2 ]]) C . pseudoinvers () #[1/10 1/5] #[1/10 1/5]

Talteori

prime_pi ( 1000000 ) # returnerar 78498, antalet primtal mindre än en miljon E = EllipticCurve ( '389a' ) # konstruera en elliptisk kurva från dess Cremona- etikett P , Q = E. gens () 7 * P + Q # returnerar (2869/676 : -171989/17576 : 1)

Versionshistorik

Viktiga utgåvor:

Sage versioner
Version Utgivningsdatum Beskrivning
0,1 januari 2005 Pari aktiverat men GAP och Singular saknas
0,2 - 0,4 Mars till juli 2005 Cremona-databas, multivariata polynom, stora ändliga fält och mer dokumentation
0,5 - 0,7 Augusti till september 2005 Vektorfält, ringar, modulära symboler och fönsteranvändning
0,8 oktober 2005 Fullständigt inkluderat GAP, Singular
0,9 november 2005 Lade till Maxima och klipp
1.0 februari 2006
2.0 januari 2007
3.0 april 2008 Interaktivt skal, gränssnitt till R-språket
4.0 maj 2009 Stöd för Solaris 10, 64-bitars OSX-stöd
5.0 maj 2012 [9] OSX Lion-stöd
6,0 december 2013 Sage-förrådet flyttade till Git [10]
7,0 januari 2016
8,0 juli 2017 Windows Support
9,0 januari 2020 Flytta till Python 3

Anteckningar

  1. Sage 9.7 Release Tour
  2. Stein, William SAGE Days 4 (nedlänk) (12 juni 2007). Hämtad 2 augusti 2007. Arkiverad från originalet 27 juni 2007. 
  3. Sage Interact-funktionalitet (nedlänk) . Hämtad 11 april 2008. Arkiverad från originalet 19 april 2012. 
  4. TeX-katalogen online, post för sagetex, Ctan Edition (nedlänk) . Datum för åtkomst: 7 mars 2010. Arkiverad från originalet den 2 februari 2009. 
  5. Calling Sage från Mathematica (nedlänk) . Datum för åtkomst: 21 december 2010. Arkiverad från originalet den 8 juli 2012.   Calling Sage från Mathematica
  6. http://facstaff.unca.edu/mcmcclur/Mathematica/Sage/UsingSage.nb Arkiverad 19 juli 2011 på Wayback Machine En Mathematica-anteckningsbok att ringa Sage från Mathematica.
  7. Explicita tillvägagångssätt för modulära former och modulära Abeliska varianter (länk inte tillgänglig) . National Science Foundation (14 april 2006). Hämtad 24 juli 2007. Arkiverad från originalet 17 juni 2012. 
  8. Fri programvara ger överkomliga priser, transparens till matematik (nedlänk) . Science Daily (7 december 2007). Hämtad 20 juli 2008. Arkiverad från originalet 19 april 2012. 
  9. sage-5.0.txt . Hämtad: 17 maj 2012.  (otillgänglig länk)
  10. ↑ Att installera och använda Sage har precis blivit ännu enklare . Datum för åtkomst: 12 juli 2014. Arkiverad från originalet den 4 juli 2014.

Länkar