SageMath
SageMath (prethodno Sage ili SAGE, sistem za algebarsko i geometrijsko eksperimentisanje[1]) je matematički softver sa funkcijama koje pokrivaju mnoge aspekte matematike, uključujući algebre, kombinatorike, numeričke matematike, teorije brojeva, i infinitezimalni račun.
Prvo izdanje | 2005. |
---|---|
Repozitorijum | |
Napisan u | Pajton, Cython |
Operativni sistem | Cross-platform |
Tip | Računarski algebarski sistem |
Licenca | GPL |
Veb-sajt | cloud |
Prva verzija SageMath je pušten na slobodu 24. februara 2005. godine kao slobodan i softver otvorenog koda pod uslovima GNU-ove opšte javne licence, sa početnim ciljevima stvaranja "otvorenog koda sa alternativom za Magma, Maple, Mathematica, and MATLAB".[2] Začetnik i vođa projekta SageMath, William Stein, je matematičar na Univerzitetu u Vašingtonu.
SageMath "koristi Python-kao sintaksu,"[3] podržava proceduralne, funkcionalne i objektno orijentisane konstrukte.
Karakteristike
urediKarakteristike SageMath uključuju:[4]
- Laptop baziran na pretraživaču za reviziju i ponovno korišćenje prethodnih ulaza i izlaza, uključujući grafiku i tekst napomena. Kompatibilan sa Firefox, Opera, Konqueror, Google Chrome i Safari. Laptop može pristupiti lokalno ili daljinski i veza može biti osigurana sa HTTPS.
- Tekstualne komandne linije interfejsa koristeći IPython
- Podrška za paralelnu obradu korišćenjem višejezgarnih procesora, više procesora ili distribuiranog računarstva
- Računanje koristeći Maxima i SymPy
- Numerička linearna algebra koristi GSL, SciPy i NumPy
- Biblioteke osnovnih i specijalnih matematičkih funkcija
- 2D i 3D grafici simboličkih funkcija i numeričkih podataka
- Matrica manipulacija, uključujući i retke nizove
- Multivarijantna statistika biblioteke, pomoću R i SciPy
- toolkit za dodavanje korisničkih interfejsa za proračune i aplikacije[5]
- Teorija grafova vizualizacije i alati analize
- Biblioteke brojevne teorije funkcija
- Podrška za kompleksne brojeve, proizvoljnu preciznost i simboličko računanje
- Tehnička obrada teksta, uključujući uređivanje formule i ugrađivanje SageMath u LaTeX dokumentus[6]
- Pajtonova standardna biblioteka, uključujući i alate za povezivanje na SQL, HTTP, HTTPS, NNTP, IMAP, SSH, IRC, FTP i druge
- Interfejs na neke aplikacije nezavisne kao što su Mathematica, Magma, R, i Maple
- MoinMoin kao Viki sistem za upravljanje znanjem
- Dokumentacija koristeći Sphinx
- Automatski Test-paket
- Izvršenje fortran, C, C++, i Cython kodae[7]
- Iako nije predviđena SageMath direktno, SageMath može biti pozvan iznutra Mathematica;[8]ao što je urađeno u ovom primeru Mathematica notebook Arhivirano na sajtu Wayback Machine (19. jul 2011)
Razvoj
urediVilijam Stajn realizovan prilikom dizajniranja Sage kada je bilo mnogo otvorenih kodova matematikih softverski paketa već napisanih na različitim jezicima, odnosno C, C++, Common Lisp, Fortran i Pajton.
Umesto toplu vodu, Sage (što je uglavnom napisan u Python i Cython) integriše mnoge specijalizovane matematike softverske pakete u zajedničkom interfejsu, za koji korisnik treba da zna samo pajton. Međutim, Sage sadrži stotine hiljada jedinstvenih linija koda dodajući nove funkcije i stvarajući interfejs između njegovih komponenti.[9]
SageMath koristi i studente i profesionalce za razvoj. Razvoj SageMath je podržan od strane oba volonterska rada i donacija.[10]
Istorija obrade
urediSamo glavna izdanja su navedena u nastavku. SageMath praktikuje "oslobađanje rano, oslobađanje često" koncept, sa izdanjima na svakih nekoliko nedelja ili meseci. Sve u svemu, bilo je više od 300 izdanja, iako je njihova učestalost je smanjena.[11]
Version | Release Date | Description |
---|---|---|
0.1 | Januar 2005 | |
0.2–0.4 | Mart do Jula 2005 | Cremona's baza podataka, multivariate polinomi, veliki konačnih polja i još mnogo toga dokumentacija |
0.5–0.7 | Avgust do Septembra 2005 | Vektorski prostori, prstenje, modularni simboli, i prozori korišćenja |
0.8 | Oktobar 2005 | Puna distribucija GAP, Singular |
0.9 | Novembar 2005 | Maxima i clisp dodati |
1.0 | Februar 2006 | |
2.0 | Januar 2007 | |
3.0 | April 2008 | Interakcija R interfejsa |
4.0 | Maj 2009 | Solaris 10 podrška, 64bit OSX podrška |
5.0 | Maj 2012[12] | OSX Lion podrška |
6.0 | Decembar 2013 | SageMath razvoj preselio u Git[13] |
Dostignuća
urediPerformanse
urediOba binarna i izvorna koda su dostupna za SageMath sa stranice za skidanje. Ako je SageMath izgrađen od izvornog koda, mnogi od uključenih biblioteka, kao što su ATLAS, FLINT, i NTL će biti podešen i optimizovan za taj računar, uzimajući u obzir broj procesora, veličine svojih skrovišta, da li postoji hardverska podrška za SSE instrukcije, itd
Cython može povećati brzinu SageMath programa, kao pretvaranje Python koda u C.[19]
Licenciranje i dostupnost
urediSageMath je slobodan softver, distribuira pod uslovima GNU-ove opšte javne licence. SageMath je dostupan na mnogo načina:
- Izvorni kod se može preuzeti sa stranice preuzimanja. Iako ne preporučuje za krajnje korisnike, razvojna izdanja SageMath su takođe dostupna.
- Binaries može se skinuti za Linux, OS X i Solaris (both x86 iSPARC).
- Na CD-u Linux operativni sistem je takođe dostupan. Ovo omogućava korišćenje Sage bez instalacije Linux-a.
- Korisnici mogu koristiti onlajn verziju SageMath na sagenb.org, ali je prekinuto u aprilu 2015. godine.
- Korisnici mogu koristiti onlajn "jedna ćelija" verziju SageMath na sagecell.sagemath.org ili ugraditi jednu sage ćeliju u bilo koju veb stranicu. Korisnici mogu da prave permalinks na SageMath izračunavanja koristeći server ćelija.[20]
- Novi onlajn SageMath notebook je dostupan na cloud.sagemath.com.
Iako je Microsoft sponzor verzije Sage za Windows operativni sistem,[21] od 2012. nije bilo nikakvih planova za maternji port, a korisnici Windows-a trenutno moraju da koriste tehnologiju virtuelizacije kao što VirtualBok za pokretanje Sage.[22] Kao Sage 5.9, uglavnom uspešno gradi na Cygwin.[23]
Linux distribucije i kojima SageMath je dostupan u paketu su Mandriva, Fedora, i Arch Linux. Takođe je dostupan kao namenski Ubuntu PPA.[24] [25] Međutim, SageMath može da se instalira na bilo koju Linux distribuciju.
Gentoo prefix takođe pruža Sage na drugim operativnim sistemima.
Softverski paketi sadržani u SageMath-u
urediFilozofija SageMath je korišćenje postojećih biblioteka otvorenih kodova gde god oni postoje. Stoga, koristi mnoge biblioteke iz drugih projekata.
Algebra | GAP, Maxima, Singular |
Algebarska geometrija | Singular |
Aritmetika proizvoljne preciznosti | MPIR, MPFR, MPFI, NTL, mpmath |
Aritmetička geometrija | PARI/GP, NTL, mwrank, ecm |
Računanje | Maxima, SymPy, GiNaC |
Kombinatorika | Symmetrica, Sage-Combinat |
Linearna algebra | ATLAS, BLAS, LAPACK, NumPy, LinBox, IML, GSL |
Teorija grafova | NetworkX |
Teorija grupa | GAP |
Numeričko računanje | GSL, SciPy, NumPy, ATLAS |
Teorija brojeva | PARI/GP, FLINT, NTL |
Statističko računarstvo | R, SciPy |
Ljuska komandne linije | IPython |
Baza podataka | ZODB, SQLite |
Grafički interfejs | SageMath Notebook, jsMath |
Grafika | matplotlib, Tachyon3d, GD, Jmol |
Interaktivni programski jezik | Python |
Umrežavanje | Twisted |
Diferencijalna geometrija i Tenzorski Račun | Sage Manifolds[27] |
Primeri korišćenja
urediAlgebra i računanje
uredix, a, b, c = var('x, a, b, c')
# Имајте на уму да IPython такође подржава бржи начин да се то уради, позивом
# ово је еквивалентно изразима који почињу са зарезом:
# ,var x a b c
log(sqrt(a)).simplify_log() # враћа 1/2*log(a)
log(a / b).expand_log() # враћа log(a) - log(b)
sin(a + b).simplify_trig() # враћа sin(a)*cos(b) + sin(b)*cos(a)
cos(a + b).simplify_trig() # враћа -sin(a)*sin(b) + cos(a)*cos(b)
(a + b)^5 # враћа (a + b)^5
expand((a + b) ^ 5) # a^5 + 5*a^4*b + 10*a^3*b^2 + 10*a^2*b^3 + 5*a*b^4 + b^5
limit((x ^ 2 + 1) / (2 + x + 3 * x ^ 2), x=Infinity) # враћа 1/3
limit(sin(x) / x, x=0) # враћа 1
diff(acos(x), x) # враћа -1/sqrt(-x^2 + 1)
f = exp(x) * log(x)
f.diff(x, 3) # враћа 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) # враћа [x == -1/2*(b + sqrt(-4*a*c + b^2))/a,
# x == -1/2*(b - sqrt(-4*a*c + b^2))/a]
f = x ^ 2 + 432 / x
solve(f.diff(x) == 0, x) # враћа [x == 3*I*sqrt(3) - 3,
# x == -3*I*sqrt(3) - 3, x == 6]
Diferencijalne jednačine
uredit = var('t') # дефинише променљиву t
x = function('x', t) # дефинише x да буде функција променљиве
de = (diff(x, t) + x == 1)
desolve(de, [x, t]) # враћа (c + e^t)*e^(-t)
Linearna algebra
urediA = matrix([[1, 2, 3], [3, 2, 1], [1, 1, 1]])
y = vector([0, -4, -1])
A.solve_right(y) # враћа (-2, 1, 0)
A.eigenvalues() # враћа [5, 0, -1]
B = matrix([[1, 2, 3], [3, 2, 1], [1, 2, 1]])
B.inverse() # враћа
[ 0 1/2 -1/2]
[-1/4 -1/4 1]
[ 1/2 0 -1/2]
# исте матрице, али током дуплог круга (не рационалним бројевима, као горе)
sage: B = matrix(RDF, 1, 2, 3], [3, 2, 1], [1, 2, 1)
sage: B.inverse()
[-5.55111512313e-17 0.5 -0.5]
[ -0.25 -0.25 1.0]
[ 0.5 0.0 -0.5]
# Позив NumPy за Moore-Penrose псеудо-инверзије,
# јер SageMath не подржава то.
import numpy
C = matrix([[1 , 1], [2 , 2]])
matrix(numpy.linalg.pinv(C)) # враћа
[0.1 0.2]
[0.1 0.2]
Teorija brojeva
urediprime_pi(1000000) # враћа 78498, број простих бројева мање од једног милиона
E = EllipticCurve('389a') # изградити елиптичне криве од Cremona етикете
P, Q = E.gens()
7 * P + Q # враћа (24187731458439253/244328192262001 :
# 3778434777075334029261244/3819094217575529893001 : 1)
sage: E2 = EllipticCurve(CC, [0,0,-2,1,1])
sage: E2
Elliptic Curve defined by y^2 + (-2.00000000000000)*y =
x^3 + 1.00000000000000*x + 1.00000000000000 over
Complex Field with 53 bits of precision
sage: E2.j_invariant()
61.7142857142857
Povezani projekti
uredi- Sagemath Cloud kompaktan matematici u oblaku
- Sage Math for Android to access Sagemath Cloud from Android
- LMFDB database of L-functions, modular forms, and related objects
- FindStat database of combinatorial statistics
Vidi još
uredi- Poređenje računarski algebarskih sistema
Reference
uredi- ^ Stein, William.
- ^ Stein, William (2007-06-12).
- ^ Anastassiou, George A.; Mezei, Razvan A. (2015). Numerical Analysis Using Sage. New York: Springer. str. x1 and 1. ISBN 9783319167381.
- ^ "Sage documentation".
- ^ "SageMath Interact functionality".
- ^ "Using SageTeX".
- ^ "Using Compiled Code Interactively" Arhivirano na sajtu Wayback Machine (4. april 2013).
- ^ "Calling SageMath from Mathematica" Arhivirano 2012-07-08 na sajtu Archive.today.
- ^ "days7 - Sage Wiki".
- ^ "Sage – Acknowledgement".
- ^ "SageMath Download - src-old".
- ^ "sage-5.0.txt"[mrtva veza].
- ^ "Installing and using SageMath just got even easier".
- ^ "Free Software Brings Affordability, Transparency To Mathematics".
- ^ "Sage Mathematical Software System" Arhivirano na sajtu Wayback Machine (8. jun 2012).
- ^ "SIGSAM: Awards and prizes" Arhivirano na sajtu Wayback Machine (6. septembar 2013).
- ^ "Publications Citing Sage".
- ^ "Publications Citing Sage-Combinat".
- ^ "Cython, Sage, and the Need for Speed".
- ^ "About the SageMath Cell Server".
- ^ "Sage – Acknowledgment".
- ^ Stein, William (16 March 2012).
- ^ "Information for the port to Cygwin" Arhivirano na sajtu Wayback Machine (2. jun 2013).
- ^ "Sage : "AIMS" team".
- ^ "sage-on-gentoo".
- ^ "SageMath Standard Packages" Arhivirano na sajtu Wayback Machine (29. mart 2010).
- ^ SageManifolds: home
Spoljašnje veze
uredi- Project home page
- Zvanični veb-sajt
- SageMath introduction videos
- Use SageMath online in your web browser
- Free software brings affordability, transparency to mathematics
- AMS Notices Opinion – Open Source Mathematical Software
- W. Stein's blog post on history of Sage
- Sage on GitHub
- Sage Math on Google Play
- Sage[mrtva veza] Android package at the F-Droid repository