SageMath
Прво издање | 2005. |
---|---|
Репозиторијум | |
Написан у | Пајтон, Cython |
Оперативни систем | Cross-platform |
Тип | Рачунарски алгебарски систем |
Лиценца | GPL |
Веб-сајт | cloud |
SageMath (претходно Sage ili SAGE, систем за алгебарско и геометријско експериментисање[1]) је математички софтвер са функцијама које покривају многе аспекте математике, укључујући алгебре, комбинаторике, нумеричке математике, теорије бројева, и инфинитезимални рачун.
Прва верзија SageMath је пуштен на слободу 24. фебруара 2005. године као слободан и софтвер отвореног кода под условима ГНУ-ове опште јавне лиценце, са почетним циљевима стварања "отвореног кода са алтернативом за Magma, Maple, Mathematica, and MATLAB".[2] Зачетник и вођа пројекта SageMath, William Stein, је математичар на Универзитету у Вашингтону.
SageMath "користи Python-као синтаксу,"[3] подржава процедуралне, функционалне и објектно оријентисане конструкте.
Karakteristike
[уреди | уреди извор]Карактеристике SageMath укључују:[4]
- Лаптоп базиран на претраживачу за ревизију и поновно коришћење претходних улаза и излаза, укључујући графику и текст напомена. Компатибилан са Firefox, Opera, Konqueror, Google Chrome и Safari. Лаптоп може приступити локално или даљински и веза може бити осигурана са HTTPS.
- Текстуалне командне линије интерфејса користећи IPython
- Подршка за паралелну обраду коришћењем вишејезгарних процесора, више процесора или дистрибуираног рачунарства
- Рачунање користећи Maxima и SymPy
- Нумеричка линеарна алгебра користи GSL, SciPy и NumPy
- Библиотеке основних и специјалних математичких функција
- 2Д и 3Д графици симболичких функција и нумеричких података
- Матрица манипулација, укључујући и ретке низове
- Мултиваријантна статистика библиотеке, помоћу R и SciPy
- toolkit за додавање корисничких интерфејса за прорачуне и апликације[5]
- Теорија графова визуализације и алати анализе
- Библиотеке бројевне теорије функција
- Подршка за комплексне бројеве, произвољну прецизност и симболичко рачунање
- Техничка обрада текста, укључујући уређивање формуле и уграђивање SageMath у LaTeX документуs[6]
- Пајтонова стандардна библиотека, укључујући и алате за повезивање на SQL, HTTP, HTTPS, NNTP, IMAP, SSH, IRC, FTP и друге
- Интерфејс на неке апликације независне као што су Mathematica, Magma, R, и Maple
- MoinMoin као Вики систем за управљање знањем
- Документација користећи Sphinx
- Аутоматски Тест-пакет
- Извршење фортран, C, C++, и Cython кодае[7]
- Иако није предвиђена SageMath директно, SageMath може бити позван изнутра Mathematica;[8]ао што је урађено у овом примеру Mathematica notebook Архивирано на сајту Wayback Machine (19. јул 2011)
Развој
[уреди | уреди извор]Вилијам Стајн реализован приликом дизајнирања Sage када је било много отворених кодова математиких софтверски пакета већ написаних на различитим језицима, односно C, C++, Common Lisp, Фортран и Пајтон.
Уместо топлу воду, Sage (што је углавном написан у Python и Cython) интегрише многе специјализоване математике софтверске пакете у заједничком интерфејсу, за који корисник треба да зна само пајтон. Међутим, Sage садржи стотине хиљада јединствених линија кода додајући нове функције и стварајући интерфејс између његових компоненти.[9]
SageMath користи и студенте и професионалце за развој. Развој SageMath је подржан од стране оба волонтерска рада и донација.[10]
Историја обраде
[уреди | уреди извор]Само главна издања су наведена у наставку. SageMath практикује "ослобађање рано, ослобађање често" концепт, са издањима на сваких неколико недеља или месеци. Све у свему, било је више од 300 издања, иако је њихова учесталост је смањена.[11]
Version | Release Date | Description |
---|---|---|
0.1 | Јануар 2005 | |
0.2–0.4 | Март до Јула 2005 | Cremona's база података, мултивариате полиноми, велики коначних поља и још много тога документација |
0.5–0.7 | Август до Септембра 2005 | Векторски простори, прстење, модуларни симболи, и прозори коришћења |
0.8 | Октобар 2005 | Пуна дистрибуција GAP, Singular |
0.9 | Новембар 2005 | Maxima и clisp додати |
1.0 | Фебруар 2006 | |
2.0 | Јануар 2007 | |
3.0 | Април 2008 | Интеракција Р интерфејса |
4.0 | Мај 2009 | Solaris 10 подршка, 64bit OSX подршка |
5.0 | Мај 2012[12] | OSX Lion подршка |
6.0 | Децембар 2013 | SageMath развој преселио у Git[13] |
Достигнућа
[уреди | уреди извор]- 2007: прва награда у науци софтвера Лес Les Trophées du Libre, на међународном такмичењу за слободни софтвер
[14] - 2012: један од изабраних за Google Summer of Code.[15]
- 2013: ACM/SIGSAM Jenks Prize.[16]
- SageMath је цитиран у различитим публикацијама.[17][18]
Перформансе
[уреди | уреди извор]Оба бинарна и изворна кода су доступна за SageMath са странице за скидање. Ако је SageMath изграђен од изворног кода, многи од укључених библиотека, као што су ATLAS, FLINT, и NTL ће бити подешен и оптимизован за тај рачунар, узимајући у обзир број процесора, величине својих скровишта, да ли постоји хардверска подршка за ССЕ инструкције, итд
Cython може повећати брзину SageMath програма, као претварање Python кода у C.[19]
Лиценцирање и доступност
[уреди | уреди извор]SageMath је слободан софтвер, дистрибуира под условима ГНУ-ове опште јавне лиценце. SageMath је доступан на много начина:
- Изворни код се може преузети са странице преузимања. Иако не препоручује за крајње кориснике, развојна издања SageMath су такође доступна.
- Binaries може се скинути за Linux, OS X и Solaris (both x86 иSPARC).
- На CD-у Linux оперативни систем је такође доступан. Ово омогућава коришћење Sage без инсталације Linux-а.
- Корисници могу користити онлајн верзију SageMath на sagenb.org, али је прекинуто у априлу 2015. године.
- Корисници могу користити онлајн "једна ћелија" верзију SageMath на sagecell.sagemath.org или уградити једну sage ћелију у било коју веб страницу. Корисници могу да праве пермалинкс на SageMath израчунавања користећи сервер ћелија.[20]
- Нови онлајн SageMath notebook je dostupan na cloud.sagemath.com.
Иако је Microsoft спонзор верзије Sage за Windows оперативни систем,[21] од 2012. није било никаквих планова за матерњи порт, а корисници Windows-а тренутно морају да користе технологију виртуелизације као што ВиртуалБок за покретање Sage.[22] Као Sage 5.9, углавном успешно гради на Cygwin.[23]
Linux дистрибуције и којима SageMath је доступан у пакету су Mandriva, Fedora, и Arch Linux. Такође је доступан као наменски Ubuntu PPA.[24] [25] Међутим, SageMath може да се инсталира на било коју Linux дистрибуцију.
Gentoo prefix такође пружа Sage на другим оперативним системима.
Софтверски пакети садржани у SageMath-у
[уреди | уреди извор]Филозофија SageMath је коришћење постојећих библиотека отворених кодова где год они постоје. Стога, користи многе библиотеке из других пројеката.
Алгебра | GAP, Maxima, Singular |
Алгебарска геометрија | Singular |
Аритметика произвољне прецизности | MPIR, MPFR, MPFI, NTL, mpmath |
Аритметичка геометрија | PARI/GP, NTL, mwrank, ecm |
Рачунање | Maxima, SymPy, GiNaC |
Комбинаторика | Symmetrica, Sage-Combinat |
Линеарна алгебра | ATLAS, BLAS, LAPACK, NumPy, LinBox, IML, GSL |
Теорија графова | NetworkX |
Теорија група | GAP |
Нумеричко рачунање | GSL, SciPy, NumPy, ATLAS |
Теорија бројева | PARI/GP, FLINT, NTL |
Статистичко рачунарство | R, SciPy |
Љуска командне линије | IPython |
База података | ZODB, SQLite |
Графички интерфејс | SageMath Notebook, jsMath |
Графика | matplotlib, Tachyon3d, GD, Jmol |
Интерактивни програмски језик | Python |
Умрежавање | Twisted |
Диференцијална геометрија и Тензорски Рачун | Sage Manifolds[27] |
Примери коришћења
[уреди | уреди извор]Алгебра и рачунање
[уреди | уреди извор]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]
Диференцијалне једначине
[уреди | уреди извор]t = var('t') # дефинише променљиву t
x = function('x', t) # дефинише x да буде функција променљиве
de = (diff(x, t) + x == 1)
desolve(de, [x, t]) # враћа (c + e^t)*e^(-t)
Линеарна алгебра
[уреди | уреди извор]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]
Теорија бројева
[уреди | уреди извор]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
Повезани пројекти
[уреди | уреди извор]- Sagemath Cloud компактан математици у облаку
- 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
Види још
[уреди | уреди извор]- Поређење рачунарски алгебарских система
Референце
[уреди | уреди извор]- ^ Stein, William.
- ^ Stein, William (2007-06-12).
- ^ Anastassiou, George A.; Mezei, Razvan A. (2015). Numerical Analysis Using Sage. New York: Springer. стр. x1 and 1. ISBN 9783319167381.
- ^ "Sage documentation".
- ^ "SageMath Interact functionality".
- ^ "Using SageTeX".
- ^ "Using Compiled Code Interactively" Архивирано на сајту Wayback Machine (4. април 2013).
- ^ "Calling SageMath from Mathematica" Архивирано 2012-07-08 на сајту Archive.today.
- ^ "days7 - Sage Wiki".
- ^ "Sage – Acknowledgement".
- ^ "SageMath Download - src-old".
- ^ "sage-5.0.txt"[мртва веза].
- ^ "Installing and using SageMath just got even easier".
- ^ "Free Software Brings Affordability, Transparency To Mathematics".
- ^ "Sage Mathematical Software System" Архивирано на сајту Wayback Machine (8. јун 2012).
- ^ "SIGSAM: Awards and prizes" Архивирано на сајту Wayback Machine (6. септембар 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" Архивирано на сајту Wayback Machine (2. јун 2013).
- ^ "Sage : "AIMS" team".
- ^ "sage-on-gentoo".
- ^ "SageMath Standard Packages" Архивирано на сајту Wayback Machine (29. март 2010).
- ^ SageManifolds: home
Спољашње везе
[уреди | уреди извор]- Project home page
- Званични веб-сајт
- 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[мртва веза] Android package at the F-Droid repository