SageMath

S Vikipedije, slobodne enciklopedije
(preusmereno sa Sage)
Sage
Prvo izdanje2005. god.; pre 19 godina (2005)
Repozitorijum Uredi na Vikipodacima
Napisan uPajton, Cython
Operativni sistemCross-platform
TipRačunarski algebarski sistem
LicencaGPL
Veb-sajtcloud.sagemath.com

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]

Sage dokumentarni interfejs u  veb-pregledaču.
Rešavanje jednačina i priprema korišćenjem SageMath notebook veb interfejsa

Karakteristike SageMath uključuju:[4]

Razvoj[uredi | uredi izvor]

William A. Stein

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]

SageMath versions
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.

Matematički paketi sadržani u SageMath[26]
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
Drugi paketi sadržani u SageMath
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
Drugi matematički paket dostupan za SageMath
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]

Vidi još[uredi | uredi izvor]

  • Poređenje računarski algebarskih sistema

Reference[uredi | uredi izvor]

Spoljašnje veze[uredi | uredi izvor]