Interested Article - Sage

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

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

Возможности

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

В 2007 году Sage выиграл первый приз международного конкурса свободного программного обеспечения в разделе научного программного обеспечения .

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

Математические пакеты
Алгебра GAP , Maxima ,
Алгебраическая геометрия Singular
Арифметика произвольной точности GMP , , ,
Арифметическая геометрия PARI , , ,
Матанализ Maxima , SymPy , GiNaC
Комбинаторика , Sage-Combinat
Линейная алгебра ,
Теория графов
Теория групп
Численные расчёты GSL , SciPy , NumPy , ATLAS
Другие пакеты
Интерфейс командной строки IPython
Базы данных ZODB , , SQLite
Графический интерфейс Sage Notebook, jsmath
Графика Matplotlib , , 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 лемнискаты Жероно
Построение в Sage лемнискаты Жероно , используя неявно заданную функцию.

Лемниската Жероно — плоская кривая , удовлетворяющая уравнению .

## Лемниската Жероно
## 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 Поддержка OSX Lion
6.0 Декабрь 2013 Репозиторий Sage перемещён в Git
7.0 Январь 2016
8.0 Июль 2017 Поддержка Windows
9.0 Январь 2020 Переход на Python 3

Примечания

  1. — 2023.
  2. Stein, William (12 июня 2007). Дата обращения: 2 августа 2007. 27 июня 2007 года.
  3. . Дата обращения: 11 апреля 2008. Архивировано из 19 апреля 2012 года.
  4. . Дата обращения: 7 марта 2010. Архивировано из 2 февраля 2009 года.
  5. . Дата обращения: 21 декабря 2010. Архивировано из 8 июля 2012 года. Calling Sage from Mathematica
  6. от 19 июля 2011 на Wayback Machine A Mathematica notebook to call Sage from Mathematica.
  7. . National Science Foundation (14 апреля 2006). Дата обращения: 24 июля 2007. Архивировано из 17 июня 2012 года.
  8. . Science Daily (7 декабря 2007). Дата обращения: 20 июля 2008. Архивировано из 19 апреля 2012 года.
  9. . Дата обращения: 17 мая 2012. (недоступная ссылка)
  10. . Дата обращения: 12 июля 2014. 4 июля 2014 года.

Ссылки

  • (англ.)
  • (англ.)
  • (англ.)
  • Таранчук В. Б. . — Минск: БГУ, 2013. — 59 p.
Источник —

Same as Sage