SageMath
Prvo izdanje | 2005. god. |
---|---|
Repozitorijum | |
Napisan u | Pajton, Cython |
Operativni sistem | Cross-platform |
Tip | Računarski algebarski sistem |
Licenca | GPL |
Veb-sajt | cloud |
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.
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[uredi | uredi izvor]
Karakteristike 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[uredi | uredi izvor]
Vilijam 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[uredi | uredi izvor]
Samo 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[uredi | uredi izvor]
- 2007: prva nagrada u nauci softvera Les Les Trophées du Libre, na međunarodnom takmičenju za slobodni softver
[14] - 2012: jedan od izabranih za Google Summer of Code.[15]
- 2013: ACM/SIGSAM Jenks Prize.[16]
- SageMath je citiran u različitim publikacijama.[17][18]
Performanse[uredi | uredi izvor]
Oba 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[uredi | uredi izvor]
SageMath 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[uredi | uredi izvor]
Filozofija 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[uredi | uredi izvor]
Algebra i računanje[uredi | uredi izvor]
x, 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[uredi | uredi izvor]
t = 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[uredi | uredi izvor]
A = 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[uredi | uredi izvor]
prime_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 | uredi izvor]
- 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 | uredi izvor]
- Poređenje računarski algebarskih sistema
Reference[uredi | uredi izvor]
- ^ 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 | uredi izvor]
- 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