Sage

У этого термина существуют и другие значения, см. Sage (значения).

Sage

Анимированный график, созданный в Sage, y=x2 (красная кривая), y=x3(синяя кривая)
Тип |  Система компьютерной алгебры
Разработчик |  Стейн, Уильям Артур[вд]
Написана на |  Python, Cython
Операционная система  |  Кроссплатформенное программное обеспечение
Первый выпуск |  24 февраля 2005
Аппаратная платформа  |  Python
Последняя версия |

* 10.6 (31 марта 2025)[1]

Репозиторий |  github.com/sagemath/sage
Лицензия |  GNU General Public License
Сайт |  sagemath.org
Медиафайлы на Викискладе

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

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

## Содержание

* 1 Возможности
* 2 Философия разработки Sage
* 3 Лицензирование и доступность
* 4 Содержащиеся в Sage программные пакеты
* 5 Примеры работы с командной строкой
* 5.1 Анализ
* 5.2 Дифференциальные уравнения
* 5.3 Линейная алгебра
* 5.4 Теория чисел
* 5.5 Построение графиков и диаграмм
* 6 История версий
* 7 Примечания
* 8 Ссылки

## Возможности

[править | править код]

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

Основной интерфейс системы — интерактивный блокнот, обеспечивающий просмотр и повторное использование введённых команд, вывод и сохранение полученных результатов, включая графики и текстовые аннотации, доступный из большинства современных веб-браузеров. Поддерживается защищённое соединение через протокол HTTPS. Может выполняться как локально, так и удалённо.

Есть интерфейс ввода на основе командной строки с использованием языка Python (начиная с Sage версии 9.0 — Python версии 3, ранее — Python версии 2).

Поддерживаются параллельные вычисления с использованием как многоядерных процессоров, многопроцессорных систем, так и систем распределённых вычислений.

Матанализ реализован на основе систем Maxima и SymPy. Линейная алгебра реализована на основе систем GSL, SciPy и NumPy. Реализованы собственные библиотеки элементарных и специальных математических функций. Есть средства работы с матрицами и массивами данных с поддержкой разреженных массивов. Имеются различные статистические библиотеки функций, использующие функциональность R и SciPy.

Функции и данные можно выводить в виде плоских и трёхмерных графиков. Есть набор инструментов для добавления собственного пользовательского интерфейса к вычислениям и приложениям[3]. Имеются средства подготовки научно-технической документации с использованием редактора формул и возможностью встраивания Sage в документацию формата LaTeX[4].

Поддерживается импорт и экспорт различных форматов данных: изображений, видео, аудио, САПР, ГИС, документов и медицинских форматов. Для обработки изображений используются pylab и Python; имеются средства теоретико-графового анализа и визуализации графов.

Есть возможность соединения с базами данных. Поддерживаются различные сетевые протоколы, включая HTTP, NNTP, IMAP, SSH, IRC, FTP.

Реализованы программные интерфейсы для работы с системами Mathematica (также Sage может быть вызван из интерфейса Mathematica[5][6]), Magma и Maple.

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

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

[править | править код]

В процессе разработки Sage Уильям Стейн основывался на том, что для создания достойной альтернативы системам Magma, Maple, Mathematica, и MATLAB потребуются сотни или тысячи человеко-лет, если начинать процесс разработки с нуля, при этом существует большое количество готового математического программного обеспечения с открытым исходным кодом, но написанного на различных языках программирования, из которых наиболее встречаемыми являются Си, C++, Фортран и Python.

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

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

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

[править | править код]

Sage — свободное программное обеспечение, распространяемое по условиям лицензии GNU General Public License версии 2+. Исходный код может быть скачан с официального сайта. Также доступны выпуски, находящиеся в процессе разработки, хотя они не рекомендуются обычным пользователям. Исполняемые файлы доступны для операционных систем Linux, Windows, OS X и Solaris (как под архитектуру x86, так и SPARC). Также доступен live CD с версией Linux, что позволяет опробовать Sage без установки на компьютер.

Пользователи могут использовать онлайн-версию Sage. При этом имеются ограничения на объём доступной памяти и конфиденциальность работы.

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

## Содержащиеся в 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 лемнискаты Жероно, используя неявно заданную функцию.

Построение в Sage лемнискаты Жероно, используя неявно заданную функцию.

Лемниската Жероно — плоская кривая, удовлетворяющая уравнению  x 4 = a 2 ( x 2 − y 2 ) {\displaystyle \textstyle x^{4}=a^{2}(x^{2}-y^{2})} .

## Лемниската Жероно
## x^4=a^2*(x^2-y^2)

a=1
var('x y')
pl=implicit_plot(x^4-(a^2)*(x^2-y^2), (x,-a,a), (y,-a,a),linewidth=2, gridlines=True,frame=False,axes=True)
pl.show()

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

[править | править код]

Основные выпуски:

Версии 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

## Примечания

[править | править код]

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

## Ссылки

[править | править код]

| Имеется викиучебник по теме «Sage (на английском языке)»

|

* Project home page (англ.)
* Free software brings affordability, transparency to mathematics (англ.)
* AMS Notices Opinion — Open Source Mathematical Software (англ.)
* Таранчук В. Б. Основные функции систем компьютерной алгебры (рус.). — Минск: БГУ, 2013. — 59 p.

Математическое программное обеспечение

Символьные вычисления|

* Axiom
* GAP
* Maple
* Mathcad
* Mathematica
* Maxima
* Photomath
* Reduce
* Sage
* SMath Studio
* Yacas

Численные вычисления|

* Fityk
* FreeMat
* GAUSS
* GNU Octave
* gnuplot
* gretl
* Julia
* LabPlot
* LabVIEW
* MagicPlot
* MATLAB
* Origin
* QtiPlot
* R
* SciDAVis
* Scilab
* SigmaPlot
* Speakeasy
* VisSim

Инструмент интерактивного доказательства теорем

Системы компьютерной алгебры

Проприетарные|

* ClassPad Manager
* LiveMath
* Magma
* Maple
* Mathcad
* Mathematica
* MuPAD
* TI InterActive!

Свободные|

* Axiom
* CoCoA
* GAP
* GiNaC
* Macaulay2
* Mathomatic
* Maxima
* OpenAxiom
* PARI/GP
* Reduce
* Sage
* SINGULAR
* SymPy
* Xcas
* Yacas

Бесплатные/условно-бесплатные|

* SMath Studio
* Fermat
* KANT

Не поддерживаются|

* CAMAL
* Derive
* Macsyma
* muMATH