Salvie

Salvie

Animeret diagram oprettet i Sage, y=x 2 (rød kurve), y=x 3 (blå kurve)
Type Computer algebra system
Udvikler William A. Stein [d]
Skrevet i Python , Cython
Operativ system Cross-platform software
Første udgave 24. februar 2005
Hardware platform Python
nyeste version
Licens GNU General Public License
Internet side sagemath.org
 Mediefiler på Wikimedia Commons

Sage (fra  engelsk  -  "sage") er et computeralgebrasystem , der dækker mange områder af matematik , herunder algebra , kombinatorik , beregningsmatematik og matematisk analyse .

Den første version af Sage blev udgivet den 24. februar 2005 som gratis software licenseret under GNU GPL . Det oprindelige mål med projektet var "at give et open source-alternativ til Magma , Maple , Mathematica og MATLAB " [2] . Hovedudvikleren er matematikeren William Stein fra University of Washington .

Funktioner

Systemets hovedgrænseflade er en interaktiv notesblok , der giver mulighed for at se og genbruge de indtastede kommandoer, udskrive og gemme resultaterne, inklusive grafer og tekstanmærkninger, tilgængelige fra de fleste moderne webbrowsere . En sikker forbindelse understøttes via HTTPS-protokollen . Kan udføres både lokalt og eksternt.

Der er en kommandolinje- inputgrænseflade, der bruger Python-sproget (siden Sage version 9.0 - Python version 3, tidligere - Python version 2).

Parallel computing understøttes ved hjælp af både multi-core processorer , multiprocessor systemer og distribuerede computersystemer .

Matematisk analyse er implementeret på basis af Maxima og SymPy systemer . Lineær algebra er implementeret baseret på GSL- , SciPy- og NumPy- systemerne . Implementeret egne biblioteker af elementære og specielle matematiske funktioner. Der er værktøjer til at arbejde med matricer og dataarrays med understøttelse af sparse arrays . Forskellige statistiske funktionsbiblioteker er tilgængelige ved brug af R- og SciPy- funktionalitet .

Funktioner og data kan vises i form af flade og tredimensionelle grafer. Der er et sæt værktøjer til at tilføje din egen brugergrænseflade til beregninger og applikationer [3] . Der er værktøjer til at udarbejde videnskabelig og teknisk dokumentation ved hjælp af formeleditoren og muligheden for at indlejre Sage i LaTeX -formatdokumentation [4] .

Understøtter import og eksport af forskellige dataformater: billeder, video, lyd, CAD , GIS , dokumenter og medicinske formater. pylab og Python bruges til billedbehandling; der er midler til grafteoretisk analyse og visualisering af grafer.

Det er muligt at oprette forbindelse til databaser. Forskellige netværksprotokoller understøttes, herunder HTTP , NNTP , IMAP , SSH , IRC , FTP .

Implementerede programmeringsgrænseflader til at arbejde med Mathematica -systemer (også Sage kan kaldes fra grænsefladen til Mathematica [5] [6] ), Magma og Maple .

Kildekoden og Sage eksekverbare filer er tilgængelige for download. Når systemet er bygget, vil mange af de biblioteker, der er inkluderet i sættet, automatisk blive konfigureret til optimal drift på denne hardware under hensyntagen til antallet af processorer og kerner, størrelsen af ​​cache-buffere og understøttelse af specielle instruktionssæt, som f.eks. SSE .

Sage udviklingsfilosofi

Under udviklingen af ​​Sage stolede William Stein på, at det ville tage hundreder eller tusinder af mandår at skabe et værdigt alternativ til Magma, Maple , Mathematica og MATLAB , hvis man starter udviklingsprocessen fra bunden, og der er en stor mængde færdiglavet matematisk software med åben kildekode, men skrevet på forskellige programmeringssprog, hvoraf de mest almindelige er C , C++ , Fortran , og Python .

Så i stedet for at starte fra bunden, blev det besluttet at kombinere al den specialiserede matematiske software til et system med en fælles grænseflade. Slutbrugeren behøver kun at kende Python-sproget . Hvis der ikke fandtes open source-software til en bestemt opgave, så var opgaven at skrive den tilsvarende blok for Sage, mens man i modsætning til kommercielle computeralgebrasystemer ofte brugte kildekoderne til allerede eksisterende fri software.

Både fagfolk og studerende er involveret i udviklingen af ​​Sage. Udviklere arbejder på frivillig basis og er støttet af tilskud [7] .

Licensering og tilgængelighed

Sage er gratis software distribueret under betingelserne i GNU General Public License version 2+. Kildekoden kan downloades fra det officielle websted. Udgivelser under udvikling er også tilgængelige, selvom de ikke anbefales til almindelige brugere. Eksekverbare filer er tilgængelige til Linux , Windows , OS X og Solaris -operativsystemer (både x86- og SPARC-arkitekturer ). En Linux live-cd er også tilgængelig , så du kan prøve Sage uden at installere den på din computer.

Brugere kan bruge onlineversionen af ​​Sage. Samtidig er der begrænsninger på mængden af ​​tilgængelig hukommelse og fortroligheden af ​​arbejdet.

I 2007 vandt Sage førstepræmien i den internationale gratis softwarekonkurrence Les Trophées du Libre i den videnskabelige softwaresektion [8] .

Softwarepakker indeholdt i Sage

Matematik pakker
Algebra GAP , Maxima , Ental
Algebraisk geometri Ental
Vilkårlig præcisionsaritmetik GMP , MPFR , MPFI , NTL
Aritmetisk geometri PARI , NTL , mwrank , ecm
Matematisk analyse Maxima , SymPy , GiNaC
Kombinatorik Symmetrica , Sage-Combinat
Lineær algebra Linbox , IML
grafteori NetworkX
Gruppeteori hul
Numeriske beregninger GSL , SciPy , NumPy , ATLAS
Andre pakker
Kommandolinjegrænseflade IPython
Database ZODB , Python Pickles , SQLite
GUI Sage Notebook, jsmath
Grafisk kunst Matplotlib , Tachyon3d , GD , Jmol
Kommandotolk Python
Netværk Snoet

Kommandolinjeeksempler

Analyse

x , a , b , c = var ( 'x,a,b,c' ) log ( sqrt ( a )) . simplify_log () # returnerer (log(a))/2 log ( a / b ) . simplify_log () # returnerer log(a) - log(b) sin ( a + b ) . simplify_trig () # returnerer cos(a)*sin(b) + sin(a)*cos(b) cos ( a + b ) . simplify_trig () # returnerer cos(a)*cos(b) - sin(a)*sin(b) ( a + b ) ^ 5 # returnerer (b + a)^5 expand (( a + b ) ^ 5 ) # returnerer b^5 + 5*a*b^4 + 10*a^2*b^3 + # 10*a^3*b^2 + 5*a^4*b + a^5 grænse (( x ^ 2 + 1 ) / ( 2 + x + 3 * x ^ 2 ), x = uendelig ) # returnerer 1/3 grænse ( sin ( x ) / x , x = 0 ) # returnerer 1 diff ( acos ( x ), x ) # returnerer -1/sqrt(1 - x^2) f = exp ( x ) * log ( x ) f . diff ( x , 3 ) # returnerer 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 ) # returnerer [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 ) # returnerer [x == 3*sqrt(3)*I - 3, # x == -3*sqrt(3 ) )*I - 3, x == 6]

Differentialligninger

t = var ( 't' ) # definer en variabel t x = funktion ( 'x' , t ) # definer x til at være en funktion af den variabel DE = lambda y : diff ( y , t ) + y - 1 desolve ( DE ( x ( t )), [ x , t ]) # returnerer '%e^-t*(%e^t+%c)'

Lineær algebra

A = Matrix ([[ 1 , 2 , 3 ], [ 3 , 2 , 1 ], [ 1 , 1 , 1 ]]) y = vektor ([ 0 , - 4 , - 1 ]) A . solve_right ( y ) # returnerer (-2, 1, 0) A . egenværdier () #return[5, 0, -1] B = Matrix ([[ 1 , 2 , 3 ], [ 3 , 2 , 1 ], [ 1 , 2 , 1 ]]) B . omvendt () # [ 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 ) # returnerer 78498, antallet af primtal mindre end en million E = EllipticCurve ( '389a' ) # konstruer en elliptisk kurve ud fra dens Cremona - mærke P , Q = E. gens () 7 * P + Q # returnerer (2869/676 : -171989/17576 : 1)

Versionshistorik

Vigtigste udgivelser:

Sage versioner
Version Udgivelses dato Beskrivelse
0,1 januar 2005 Pari aktiveret, men GAP og Singular mangler
0,2 - 0,4 marts til juli 2005 Cremona-database, multivariate polynomier, store endelige felter og mere dokumentation
0,5 - 0,7 august til september 2005 Vektorfelter, ringe, modulære symboler og brug af vinduer
0,8 oktober 2005 Fuldt inkluderet GAP, Singular
0,9 november 2005 Tilføjet Maxima og klip
1.0 februar 2006
2.0 januar 2007
3.0 april 2008 Interaktiv skal, grænseflade til R-sproget
4.0 maj 2009 Solaris 10-understøttelse, 64bit OSX-understøttelse
5,0 maj 2012 [9] OSX Lion support
6,0 december 2013 Sage repository flyttet til Git [10]
7,0 januar 2016
8,0 juli 2017 Windows support
9,0 januar 2020 Flytter til Python 3

Noter

  1. Sage 9.7 Release Tour
  2. Stein, William SAGE Dage 4 (downlink) (12. juni 2007). Hentet 2. august 2007. Arkiveret fra originalen 27. juni 2007. 
  3. Sage Interact-funktionalitet (downlink) . Hentet 11. april 2008. Arkiveret fra originalen 19. april 2012. 
  4. TeX-kataloget online, entry for sagetex, Ctan Edition (downlink) . Dato for adgang: 7. marts 2010. Arkiveret fra originalen 2. februar 2009. 
  5. Calling Sage fra Mathematica (downlink) . Dato for adgang: 21. december 2010. Arkiveret fra originalen den 8. juli 2012.   Calling Sage fra Mathematica
  6. http://facstaff.unca.edu/mcmcclur/Mathematica/Sage/UsingSage.nb Arkiveret 19. juli 2011 på Wayback Machine En Mathematica-notesbog at kalde Sage fra Mathematica.
  7. Eksplicitte tilgange til modulære former og modulære abelske varianter (link ikke tilgængeligt) . National Science Foundation (14. april 2006). Hentet 24. juli 2007. Arkiveret fra originalen 17. juni 2012. 
  8. Fri software giver matematik overkommelig pris, gennemsigtighed (downlink) . Science Daily (7. december 2007). Hentet 20. juli 2008. Arkiveret fra originalen 19. april 2012. 
  9. sage-5.0.txt . Hentet: 17. maj 2012.  (utilgængeligt link)
  10. Installation og brug af Sage er lige blevet endnu nemmere . Dato for adgang: 12. juli 2014. Arkiveret fra originalen 4. juli 2014.

Links