SageMath

  • github.com/sagemath/sage
Уреди на ВикиподацимаНаписан уПајтон, CythonОперативни системCross-platformТипРачунарски алгебарски системЛиценцаGPLВеб-сајтcloud.sagemath.com

SageMath (претходно Sage ili SAGE, систем за алгебарско и геометријско експериментисање[1]) је математички софтвер са функцијама које покривају многе аспекте математике, укључујући алгебре, комбинаторике, нумеричке математике, теорије бројева, и инфинитезимални рачун.

Прва верзија SageMath је пуштен на слободу 24. фебруара 2005. године као слободан и софтвер отвореног кода под условима ГНУ-ове опште јавне лиценце, са почетним циљевима стварања "отвореног кода са алтернативом за Magma, Maple, Mathematica, and MATLAB".[2] Зачетник и вођа пројекта SageMath, William Stein, је математичар на Универзитету у Вашингтону.

SageMath "користи Python-као синтаксу,"[3]  подржава процедуралне, функционалне и објектно оријентисане конструкте.

Karakteristike

Sage документарни интерфејс у  веб-прегледачу.
Решавање једначина и припрема коришћењем SageMath notebook веб интерфејса

Карактеристике 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)

Развој

William A. Stein

Вилијам Стајн реализован приликом дизајнирања Sage  када је било много отворених кодова математиких софтверски пакета већ написаних на различитим језицима, односно C, C++, Common Lisp, Фортран и Пајтон.

 Уместо топлу воду, Sage (што је углавном написан у Python и Cython) интегрише многе специјализоване математике софтверске пакете у заједничком интерфејсу, за који корисник треба да зна само пајтон. Међутим, Sage садржи стотине хиљада јединствених линија кода додајући нове функције и стварајући интерфејс између његових компоненти.[9]

SageMath користи и студенте и професионалце за развој. Развој SageMath је подржан од стране оба волонтерска рада и донација.[10]

Историја обраде

Само главна издања су наведена у наставку. SageMath практикује "ослобађање рано, ослобађање често" концепт, са издањима на сваких неколико недеља или месеци. Све у свему, било је више од 300 издања, иако је њихова учесталост је смањена.[11]

SageMath versions
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 је коришћење постојећих библиотека отворених кодова где год они постоје. Стога, користи многе библиотеке из других пројеката.

Математички пакети садржани у SageMath[26]
Алгебра 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
Други пакети садржани у SageMath
Љуска командне линије IPython
База података ZODB, SQLite
Графички интерфејс SageMath Notebook, jsMath
Графика matplotlib, Tachyon3d, GD, Jmol
Интерактивни програмски језик Python
Умрежавање Twisted
Други математички пакет доступан за SageMath
Диференцијална геометрија и Тензорски Рачун 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

Види још

  • Поређење рачунарски алгебарских система

Референце

  1. ^ Stein, William.
  2. ^ Stein, William (2007-06-12).
  3. ^ Anastassiou, George A.; Mezei, Razvan A. (2015). Numerical Analysis Using Sage. New York: Springer. стр. x1 and 1. ISBN 9783319167381. 
  4. ^ "Sage documentation".
  5. ^ "SageMath Interact functionality".
  6. ^ "Using SageTeX".
  7. ^ "Using Compiled Code Interactively" Архивирано на сајту Wayback Machine (4. април 2013).
  8. ^ "Calling SageMath from Mathematica" Архивирано 2012-07-08 на сајту Archive.today.
  9. ^ "days7 - Sage Wiki".
  10. ^ "Sage – Acknowledgement".
  11. ^ "SageMath Download - src-old".
  12. ^ "sage-5.0.txt"[мртва веза].
  13. ^ "Installing and using SageMath just got even easier".
  14. ^ "Free Software Brings Affordability, Transparency To Mathematics".
  15. ^ "Sage Mathematical Software System" Архивирано на сајту Wayback Machine (8. јун 2012).
  16. ^ "SIGSAM: Awards and prizes" Архивирано на сајту Wayback Machine (6. септембар 2013).
  17. ^ "Publications Citing Sage".
  18. ^ "Publications Citing Sage-Combinat".
  19. ^ "Cython, Sage, and the Need for Speed".
  20. ^ "About the SageMath Cell Server".
  21. ^ "Sage – Acknowledgment".
  22. ^ Stein, William (16 March 2012).
  23. ^ "Information for the port to Cygwin" Архивирано на сајту Wayback Machine (2. јун 2013).
  24. ^ "Sage : "AIMS" team".
  25. ^ "sage-on-gentoo".
  26. ^ "SageMath Standard Packages" Архивирано на сајту Wayback Machine (29. март 2010).
  27. ^ SageManifolds: home

Спољашње везе

SageMath на Викимедијиној остави.
  • 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
  • п
  • р
  • у
Отворени код
Затворени кодБез подршке
  • Категорија
  • Упоређивање
  • п
  • р
  • у
Нумерички софтвер
Слободни софтвер
  • Advanced Simulation Library
  • ADMB
  • Chapel
  • Euler
  • Fortress
  • FreeFem++
  • FreeMat
  • Genius
  • Gmsh
  • GNU Octave
  • gretl
  • Julia
  • Maxima
  • OpenFOAM
  • R
  • SageMath
  • SALOME
  • ScicosLab
  • Scilab
  • X10
Власнички софтвер
  • Листа нумеричке анализе софтвера
  • Поређење нумеричке анализе софтвера
  • п
  • р
  • у
Статистички софтвер
Јавно власништво
  • Dataplot
  • Epi Info
  • CSPro
  • X-12-ARIMA
Софтвер отвореног кода
  • ADMB
  • DAP
  • gretl
  • JAGS
  • JMulTi
  • Julia
  • GNU Octave
  • H2O
  • OpenBUGS
  • Orange
  • PSPP
  • R
  • Sage
  • SimFiT
  • SOFA Statistics
  • Stan
Бесплатан софтвер
  • BV4.1
  • CumFreq
  • SegReg
  • XploRe
  • WinBUGS
Малопродајни софтвер
Вишеплатформни
  • Data Desk
  • GAUSS
  • GraphPad InStat
  • GraphPad Prism
  • IBM SPSS Statistics
  • IBM SPSS Modeler
  • JMP
  • Maple
  • Mathcad
  • Mathematica
  • MATLAB
  • OxMetrics
  • RATS
  • Revolution Analytics
  • SAS
  • SmartPLS
  • Stata
  • SUDAAN
  • S-PLUS
  • World Programming System (WPS)
Мајкрософт Виндоус
  • BMDP
  • EViews
  • GenStat
  • LIMDEP
  • LISREL
  • MedCalc
  • Minitab
  • MLwiN
  • NCSS
  • SHAZAM
  • SigmaStat
  • STATISTICA
  • StatsDirect
  • StatXact
  • SYSTAT
  • The Unscrambler
  • UNISTAT
Excel add-ons
  • Analyse-it
  • SPC XL
  • SigmaXL
  • UNISTAT for Excel
  • XLfit
  • RExcel
  • Категорија
  • Поређење