Sage

Sage (с англ.«мудрец») — система компьютерной алгебры, покрывающая много областей математики, включая алгебру, комбинаторику, вычислительную математику и матанализ.

Sage

Анимированный график, созданный в Sage, y=x2 (красная кривая), y=x3(синяя кривая)
Тип Система компьютерной алгебры
Разработчик William A. Stein[d]
Написана на Python, Cython
Операционная система Кроссплатформенное программное обеспечение
Первый выпуск 24 февраля 2005
Аппаратная платформа Python
Последняя версия
Лицензия GNU General Public License
Сайт sagemath.org
 Медиафайлы на Викискладе

Первая версия Sage была выпущена 24 февраля 2005 года в виде свободного программного обеспечения с лицензией GNU GPL. Первоначальной целью проекта было «создание открытого программного обеспечения альтернативного системам Magma, Maple, Mathematica, и MATLAB»[2]. Разработчиком Sage является Уильям Стейн — математик Вашингтонского университета.

Возможности

Веб-интерфейс Sage notebook работает в большинстве современных веб-браузеров.
Решение уравнений с использованием веб-интерфейса Sage notebook.

Многочисленные возможности Sage включают[3]:

Хотя это не представлено непосредственно, Sage может быть вызван из интерфейса Mathematica.[6][7]

Философия разработки Sage

В процессе разработки Sage Уильям Стейн основывался на следующих фактах:

  • Для создания достойной альтернативы системам Magma, Maple, Mathematica, и MATLAB потребуются сотни или тысячи человеко-лет, если начинать процесс разработки с нуля.
  • Существует большое количество готового математического ПО с открытым исходным кодом, но написанного на различных языках программирования, из которых наиболее встречаемыми являются C, C++, Fortran и Python.

Таким образом, вместо того, чтобы начинать с нуля, было решено объединить всё специализированное математическое программное обеспечение в систему с общим интерфейсом. Конечному пользователю необходимо лишь знать язык Python.

Если для какой-то частной задачи не существовало программного обеспечения с открытым кодом, тогда стояла задача написания соответствующего блока для Sage. Но Sage не изобретает колесо, и в отличие от коммерческих систем компьютерной алгебры может открыто использовать исходные коды свободного программного обеспечения.

К разработке Sage привлекаются как профессионалы, так и студенты. Разработчики работают на общественных началах и поддерживаются грантами.[8]

Производительность

Исходный код и исполняемые файлы Sage доступны для скачивания. Если компиляция производится на конечном компьютере, многие входящие в комплект библиотеки будут автоматически настроены для оптимальной работы на данном оборудовании, принимая в расчёт количество процессоров, размер кэш-буферов и поддержку специальных наборов инструкций, например SSE.

Лицензирование и доступность

Sage — свободное программное обеспечение, распространяемое по условиям лицензии GNU General Public License версии 2+. Доступность Sage имеет следующие аспекты:

  • Исходный код может быть скачан с официального сайта. Также доступны релизы, находящиеся в процессе разработки, хотя они не рекомендуются обычным пользователям.
  • Исполняемые файлы доступны для операционных систем Linux, Windows, OS X и Solaris (как под архитектуру x86, так и SPARC).
  • Также доступен live CD с версией Linux, что позволяет опробовать Sage без установки на компьютер.
  • Пользователи могут использовать онлайн-версию Sage. При этом имеются ограничения на объём доступной памяти и конфиденциальность работы.

Содержащиеся в Sage программные пакеты

Математические пакеты
Алгебра GAP, Maxima, Singular
Алгебраическая геометрия Singular
Арифметика произвольной точности GMP, MPFR, MPFI, NTL
Арифметическая геометрия PARI, NTL, mwrank, ecm
Матанализ Maxima, SymPy, GiNaC
Комбинаторика Symmetrica, Sage-Combinat
Линейная алгебра Linbox, IML
Теория графов NetworkX
Теория групп GAP
Численные расчёты GSL, SciPy, NumPy, ATLAS
Другие пакеты
Интерфейс командной строки IPython
Базы данных ZODB, Python Pickles, SQLite
Графический интерфейс Sage Notebook, jsmath
Графика Matplotlib, Tachyon3d, GD, Jmol
Интерпретатор команд Python
Сетевые возможности Twisted

Примеры работы с командной строкой

Анализ

x,a,b,c = var('x,a,b,c')

log(sqrt(a)).simplify_log() # returns (log(a))/2
log(a/b).simplify_log() # returns log(a) - log(b)
sin(a+b).simplify_trig() # returns cos(a)*sin(b) + sin(a)*cos(b)
cos(a+b).simplify_trig() # returns cos(a)*cos(b) - sin(a)*sin(b)
(a+b)^5 # returns (b + a)^5
expand((a+b)^5) # returns b^5 + 5*a*b^4 + 10*a^2*b^3 +
 # 10*a^3*b^2 + 5*a^4*b + a^5

limit((x^2+1)/(2+x+3*x^2), x=infinity) # returns 1/3
limit(sin(x)/x, x=0) # returns 1

diff(acos(x),x) # returns -1/sqrt(1 - x^2)
f = exp(x)*log(x)
f.diff(x,3) # returns 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) # returns [x == (-sqrt(b^2 - 4*a*c) - b)/(2*a),
 # x == (sqrt(b^2 - 4*a*c) - b)/(2*a)]

f = x^2 + 432/x
solve(f.diff(x)==0,x) # returns [x == 3*sqrt(3)*I - 3,
 # x == -3*sqrt(3)*I - 3, x == 6]

Дифференциальные уравнения

t = var('t') # define a variable t
x = function('x',t) # define x to be a function of that variable
DE = lambda y: diff(y,t) + y - 1
desolve(DE(x(t)), [x,t]) # returns '%e^-t*(%e^t+%c)'

Линейная алгебра

A = Matrix([[1,2,3],[3,2,1],[1,1,1]])
y = vector([0,-4,-1])
A.solve_right(y) # returns (-2, 1, 0)
A.eigenvalues() # returns [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]

# Moore-Penrose pseudo-inverse
C = Matrix([[1 , 1], [2 , 2]])
C.pseudoinverse()
# [1/10  1/5]
# [1/10  1/5]

Теория чисел

prime_pi(1000000) # returns 78498, the number of primes less than one million

E = EllipticCurve('389a') # construct an elliptic curve from its Cremona label
P, Q = E.gens()
7*P + Q # returns (2869/676 : -171989/17576 : 1)

История версий

Ниже приведены только основные релизы.

Версии Sage
Версия Дата Релиза Описание
0.1 Январь, 2005 Включена Pari, но отсутствуют GAP и Singular
0.2 — 0.4 С марта по июль 2005 База данных Cremona, мультивариантные полиномы, large finite fields и больше документации
0.5 — 0.7 С августа по сентябрь 2005 Векторные поля, кольца, modular symbols и windows usage
0.8 Октябрь 2005 В полном составе включены GAP, Singular
0.9 Ноябрь 2005 Добавлены Maxima и clisp
1.0 Февраль 2006
2.0 Январь 2007
3.0 Апрель 2008 Интерактивная оболочка, интерфейс к языку R
4.0 May 2009 Поддержка Solaris 10, поддержка 64bit OSX
5.0 Май 2012[9] Поддержка OSX Lion
6.0 Декабрь 2013 Репозиторий Sage перемещён в Git[10]
7.0 Январь 2016
8.0 Июль 2017 Поддержка Windows
9.0 Январь 2020 Переход на Python 3

В 2007 году Sage выиграл первый приз международного конкурса свободного программного обеспечения Les Trophées du Libre в разделе научного ПО.[11]

Примечания

  1. Sage 9.4 Release Tour
  2. Stein, William SAGE Days 4 (недоступная ссылка) (12 июня 2007). Дата обращения: 2 августа 2007. Архивировано 27 июня 2007 года.
  3. Sage documentation
  4. Sage Interact functionality (недоступная ссылка). Дата обращения: 11 апреля 2008. Архивировано 19 апреля 2012 года.
  5. The TeX Catalogue OnLine, Entry for sagetex, Ctan Edition (недоступная ссылка). Дата обращения: 7 марта 2010. Архивировано 2 февраля 2009 года.
  6. Calling Sage from Mathematica (недоступная ссылка). Дата обращения: 21 декабря 2010. Архивировано 8 июля 2012 года. Calling Sage from Mathematica
  7. http://facstaff.unca.edu/mcmcclur/Mathematica/Sage/UsingSage.nb Архивная копия от 19 июля 2011 на Wayback Machine A Mathematica notebook to call Sage from Mathematica.
  8. Explicit Approaches to Modular Forms and Modular Abelian Varieties (недоступная ссылка). National Science Foundation (14 апреля 2006). Дата обращения: 24 июля 2007. Архивировано 17 июня 2012 года.
  9. sage-5.0.txt. Дата обращения: 17 мая 2012. (недоступная ссылка)
  10. Installing and using Sage just got even easier. Дата обращения: 12 июля 2014.
  11. Free Software Brings Affordability, Transparency To Mathematics (недоступная ссылка). Science Daily (7 декабря 2007). Дата обращения: 20 июля 2008. Архивировано 19 апреля 2012 года.

Ссылки

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.