Sage

Поделись знанием:
Перейти к: навигация, поиск
Sage

Анимированный график, созданный в Sage, y=x2 (красная кривая), y=x3(синяя кривая)
Тип

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

Написана на

Python, Cython

Операционная система

Кроссплатформенное программное обеспечение

Первый выпуск

24 февраля 2005

Аппаратная платформа

Python

Последняя версия

7.1 (20 марта 2016)

Лицензия

GNU General Public License

Сайт

[www.sagemath.org/ emath.org]

SageSageК:Программное обеспечение, разработанное в 2005 году

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

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





Возможности

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

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

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

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

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

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

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

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

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

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

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

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

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

Несмотря на то, что Microsoft спонсировала разработку версии Sage специально под операционную систему Windows [9], на данный момент пользователям этой операционной системы нужно использовать технологию виртуализации для работы с 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() # returns [ 0 1/2 -1/2]
 # [-1/4 -1/4 1]
 # [ 1/2 0 -1/2]

# Call numpy for the Moore-Penrose pseudo-inverse,
# since Sage does not support that yet.

import numpy
C = Matrix([[1 , 1], [2 , 2]])
matrix(numpy.linalg.pinv(C.numpy())) # returns [0.1 0.2]
 # [0.1 0.2]

Теория чисел

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 практикуются правило «release early, release often» (с англ. — «выпускай раньше, выпускай чаще»), новые релизы появляются каждые две-три недели.

Версии 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[10] Поддержка OSX Lion
6.0 Декабрь 2013 Репозиторий Sage перемещён в Git[11]
7.0 Январь 2016

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

См. также

Напишите отзыв о статье "Sage"

Примечания

  1. Stein, William [www.sagemath.org/why/stein-sd4.pdf SAGE Days 4](недоступная ссылка — история) (12 июня 2007). Проверено 2 августа 2007. [web.archive.org/20070627235122/www.sagemath.org/why/stein-sd4.pdf Архивировано из первоисточника 27 июня 2007].
  2. [www.sagemath.org/help.html Sage documentation]
  3. [wiki.sagemath.org/interact Sage Interact functionality]. Проверено 11 апреля 2008. [www.webcitation.org/672wOSgyx Архивировано из первоисточника 19 апреля 2012].
  4. [www.ctan.org/tex-archive/help/Catalogue/entries/sagetex.html The TeX Catalogue OnLine, Entry for sagetex, Ctan Edition]
  5. facstaff.unca.edu/mcmcclur/Mathematica/Sage/ Calling Sage from Mathematica
  6. facstaff.unca.edu/mcmcclur/Mathematica/Sage/UsingSage.nb A Mathematica notebook to call Sage from Mathematica.
  7. [www.nsf.gov/awardsearch/showAward.do?AwardNumber=0555776 Explicit Approaches to Modular Forms and Modular Abelian Varieties]. National Science Foundation (14 апреля 2006). Проверено 24 июля 2007. [www.webcitation.org/68UaGXk5t Архивировано из первоисточника 17 июня 2012].
  8. [t2nb.math.washington.edu:8000/ t2nb.math.washington.edu:8000] - онлнай-версия пакета
  9. [www.sagemath.org/development-ack.html Sage — Acknowledgment]
  10. [www.sagemath.org/mirror/src/changelogs/sage-5.0.txt sage-5.0.txt]. Проверено 17 мая 2012.
  11. [drvinceknight.blogspot.com/2013/12/installing-and-using-sage-just-got-even.html Installing and using Sage just got even easier]. Проверено 12 июля 2014.
  12. [www.sciencedaily.com/releases/2007/12/071206145213.htm Free Software Brings Affordability, Transparency To Mathematics]. Science Daily (December 7, 2007). Проверено 20 июля 2008. [www.webcitation.org/672wOuKIa Архивировано из первоисточника 19 апреля 2012].

Ссылки

  • [www.sagemath.org/ Project home page] (англ.)
  • [www.sagemath.org/doc/index.html Официальная документация, Руководства, Ссылки, Примеры и прочее.] (англ.)
  • [www.sagemath.org/help-video.html Вводные обучающие видео] (англ.)
  • [cloud.sagemath.com/ Онлайн Sage в браузере] (англ.)
  • [www.physorg.com/news116173009.html Free software brings affordability, transparency to mathematics] (англ.)
  • [www.ams.org/notices/200710/tx071001279p.pdf AMS Notices Opinion — Open Source Mathematical Software] (англ.)
  • [sagemath.blogspot.com/2009/12/mathematical-software-and-me-very.html Статья в блоге Уильяма Стейна, посвященная истории Sage] (англ.)
  • Таранчук В. Б. [elib.bsu.by/handle/123456789/46210 Основные функции систем компьютерной алгебры]. — Минск: БГУ, 2013. — 59 p.

Отрывок, характеризующий Sage

После обеда Наташа, по просьбе князя Андрея, пошла к клавикордам и стала петь. Князь Андрей стоял у окна, разговаривая с дамами, и слушал ее. В середине фразы князь Андрей замолчал и почувствовал неожиданно, что к его горлу подступают слезы, возможность которых он не знал за собой. Он посмотрел на поющую Наташу, и в душе его произошло что то новое и счастливое. Он был счастлив и ему вместе с тем было грустно. Ему решительно не об чем было плакать, но он готов был плакать. О чем? О прежней любви? О маленькой княгине? О своих разочарованиях?… О своих надеждах на будущее?… Да и нет. Главное, о чем ему хотелось плакать, была вдруг живо сознанная им страшная противуположность между чем то бесконечно великим и неопределимым, бывшим в нем, и чем то узким и телесным, чем он был сам и даже была она. Эта противуположность томила и радовала его во время ее пения.
Только что Наташа кончила петь, она подошла к нему и спросила его, как ему нравится ее голос? Она спросила это и смутилась уже после того, как она это сказала, поняв, что этого не надо было спрашивать. Он улыбнулся, глядя на нее, и сказал, что ему нравится ее пение так же, как и всё, что она делает.
Князь Андрей поздно вечером уехал от Ростовых. Он лег спать по привычке ложиться, но увидал скоро, что он не может спать. Он то, зажжа свечку, сидел в постели, то вставал, то опять ложился, нисколько не тяготясь бессонницей: так радостно и ново ему было на душе, как будто он из душной комнаты вышел на вольный свет Божий. Ему и в голову не приходило, чтобы он был влюблен в Ростову; он не думал о ней; он только воображал ее себе, и вследствие этого вся жизнь его представлялась ему в новом свете. «Из чего я бьюсь, из чего я хлопочу в этой узкой, замкнутой рамке, когда жизнь, вся жизнь со всеми ее радостями открыта мне?» говорил он себе. И он в первый раз после долгого времени стал делать счастливые планы на будущее. Он решил сам собою, что ему надо заняться воспитанием своего сына, найдя ему воспитателя и поручив ему; потом надо выйти в отставку и ехать за границу, видеть Англию, Швейцарию, Италию. «Мне надо пользоваться своей свободой, пока так много в себе чувствую силы и молодости, говорил он сам себе. Пьер был прав, говоря, что надо верить в возможность счастия, чтобы быть счастливым, и я теперь верю в него. Оставим мертвым хоронить мертвых, а пока жив, надо жить и быть счастливым», думал он.


В одно утро полковник Адольф Берг, которого Пьер знал, как знал всех в Москве и Петербурге, в чистеньком с иголочки мундире, с припомаженными наперед височками, как носил государь Александр Павлович, приехал к нему.
– Я сейчас был у графини, вашей супруги, и был так несчастлив, что моя просьба не могла быть исполнена; надеюсь, что у вас, граф, я буду счастливее, – сказал он, улыбаясь.
– Что вам угодно, полковник? Я к вашим услугам.
– Я теперь, граф, уж совершенно устроился на новой квартире, – сообщил Берг, очевидно зная, что это слышать не могло не быть приятно; – и потому желал сделать так, маленький вечерок для моих и моей супруги знакомых. (Он еще приятнее улыбнулся.) Я хотел просить графиню и вас сделать мне честь пожаловать к нам на чашку чая и… на ужин.
– Только графиня Елена Васильевна, сочтя для себя унизительным общество каких то Бергов, могла иметь жестокость отказаться от такого приглашения. – Берг так ясно объяснил, почему он желает собрать у себя небольшое и хорошее общество, и почему это ему будет приятно, и почему он для карт и для чего нибудь дурного жалеет деньги, но для хорошего общества готов и понести расходы, что Пьер не мог отказаться и обещался быть.
– Только не поздно, граф, ежели смею просить, так без 10 ти минут в восемь, смею просить. Партию составим, генерал наш будет. Он очень добр ко мне. Поужинаем, граф. Так сделайте одолжение.
Противно своей привычке опаздывать, Пьер в этот день вместо восьми без 10 ти минут, приехал к Бергам в восемь часов без четверти.
Берги, припася, что нужно было для вечера, уже готовы были к приему гостей.
В новом, чистом, светлом, убранном бюстиками и картинками и новой мебелью, кабинете сидел Берг с женою. Берг, в новеньком, застегнутом мундире сидел возле жены, объясняя ей, что всегда можно и должно иметь знакомства людей, которые выше себя, потому что тогда только есть приятность от знакомств. – «Переймешь что нибудь, можешь попросить о чем нибудь. Вот посмотри, как я жил с первых чинов (Берг жизнь свою считал не годами, а высочайшими наградами). Мои товарищи теперь еще ничто, а я на ваканции полкового командира, я имею счастье быть вашим мужем (он встал и поцеловал руку Веры, но по пути к ней отогнул угол заворотившегося ковра). И чем я приобрел всё это? Главное умением выбирать свои знакомства. Само собой разумеется, что надо быть добродетельным и аккуратным».
Берг улыбнулся с сознанием своего превосходства над слабой женщиной и замолчал, подумав, что всё таки эта милая жена его есть слабая женщина, которая не может постигнуть всего того, что составляет достоинство мужчины, – ein Mann zu sein [быть мужчиной]. Вера в то же время также улыбнулась с сознанием своего превосходства над добродетельным, хорошим мужем, но который всё таки ошибочно, как и все мужчины, по понятию Веры, понимал жизнь. Берг, судя по своей жене, считал всех женщин слабыми и глупыми. Вера, судя по одному своему мужу и распространяя это замечание, полагала, что все мужчины приписывают только себе разум, а вместе с тем ничего не понимают, горды и эгоисты.
Берг встал и, обняв свою жену осторожно, чтобы не измять кружевную пелеринку, за которую он дорого заплатил, поцеловал ее в середину губ.
– Одно только, чтобы у нас не было так скоро детей, – сказал он по бессознательной для себя филиации идей.
– Да, – отвечала Вера, – я совсем этого не желаю. Надо жить для общества.
– Точно такая была на княгине Юсуповой, – сказал Берг, с счастливой и доброй улыбкой, указывая на пелеринку.
В это время доложили о приезде графа Безухого. Оба супруга переглянулись самодовольной улыбкой, каждый себе приписывая честь этого посещения.
«Вот что значит уметь делать знакомства, подумал Берг, вот что значит уметь держать себя!»
– Только пожалуйста, когда я занимаю гостей, – сказала Вера, – ты не перебивай меня, потому что я знаю чем занять каждого, и в каком обществе что надо говорить.
Берг тоже улыбнулся.
– Нельзя же: иногда с мужчинами мужской разговор должен быть, – сказал он.
Пьер был принят в новенькой гостиной, в которой нигде сесть нельзя было, не нарушив симметрии, чистоты и порядка, и потому весьма понятно было и не странно, что Берг великодушно предлагал разрушить симметрию кресла, или дивана для дорогого гостя, и видимо находясь сам в этом отношении в болезненной нерешительности, предложил решение этого вопроса выбору гостя. Пьер расстроил симметрию, подвинув себе стул, и тотчас же Берг и Вера начали вечер, перебивая один другого и занимая гостя.
Вера, решив в своем уме, что Пьера надо занимать разговором о французском посольстве, тотчас же начала этот разговор. Берг, решив, что надобен и мужской разговор, перебил речь жены, затрогивая вопрос о войне с Австриею и невольно с общего разговора соскочил на личные соображения о тех предложениях, которые ему были деланы для участия в австрийском походе, и о тех причинах, почему он не принял их. Несмотря на то, что разговор был очень нескладный, и что Вера сердилась за вмешательство мужского элемента, оба супруга с удовольствием чувствовали, что, несмотря на то, что был только один гость, вечер был начат очень хорошо, и что вечер был, как две капли воды похож на всякий другой вечер с разговорами, чаем и зажженными свечами.
Вскоре приехал Борис, старый товарищ Берга. Он с некоторым оттенком превосходства и покровительства обращался с Бергом и Верой. За Борисом приехала дама с полковником, потом сам генерал, потом Ростовы, и вечер уже совершенно, несомненно стал похож на все вечера. Берг с Верой не могли удерживать радостной улыбки при виде этого движения по гостиной, при звуке этого бессвязного говора, шуршанья платьев и поклонов. Всё было, как и у всех, особенно похож был генерал, похваливший квартиру, потрепавший по плечу Берга, и с отеческим самоуправством распорядившийся постановкой бостонного стола. Генерал подсел к графу Илье Андреичу, как к самому знатному из гостей после себя. Старички с старичками, молодые с молодыми, хозяйка у чайного стола, на котором были точно такие же печенья в серебряной корзинке, какие были у Паниных на вечере, всё было совершенно так же, как у других.


Пьер, как один из почетнейших гостей, должен был сесть в бостон с Ильей Андреичем, генералом и полковником. Пьеру за бостонным столом пришлось сидеть против Наташи и странная перемена, происшедшая в ней со дня бала, поразила его. Наташа была молчалива, и не только не была так хороша, как она была на бале, но она была бы дурна, ежели бы она не имела такого кроткого и равнодушного ко всему вида.
«Что с ней?» подумал Пьер, взглянув на нее. Она сидела подле сестры у чайного стола и неохотно, не глядя на него, отвечала что то подсевшему к ней Борису. Отходив целую масть и забрав к удовольствию своего партнера пять взяток, Пьер, слышавший говор приветствий и звук чьих то шагов, вошедших в комнату во время сбора взяток, опять взглянул на нее.
«Что с ней сделалось?» еще удивленнее сказал он сам себе.
Князь Андрей с бережливо нежным выражением стоял перед нею и говорил ей что то. Она, подняв голову, разрумянившись и видимо стараясь удержать порывистое дыхание, смотрела на него. И яркий свет какого то внутреннего, прежде потушенного огня, опять горел в ней. Она вся преобразилась. Из дурной опять сделалась такою же, какою она была на бале.
Князь Андрей подошел к Пьеру и Пьер заметил новое, молодое выражение и в лице своего друга.
Пьер несколько раз пересаживался во время игры, то спиной, то лицом к Наташе, и во всё продолжение 6 ти роберов делал наблюдения над ней и своим другом.
«Что то очень важное происходит между ними», думал Пьер, и радостное и вместе горькое чувство заставляло его волноваться и забывать об игре.
После 6 ти роберов генерал встал, сказав, что эдак невозможно играть, и Пьер получил свободу. Наташа в одной стороне говорила с Соней и Борисом, Вера о чем то с тонкой улыбкой говорила с князем Андреем. Пьер подошел к своему другу и спросив не тайна ли то, что говорится, сел подле них. Вера, заметив внимание князя Андрея к Наташе, нашла, что на вечере, на настоящем вечере, необходимо нужно, чтобы были тонкие намеки на чувства, и улучив время, когда князь Андрей был один, начала с ним разговор о чувствах вообще и о своей сестре. Ей нужно было с таким умным (каким она считала князя Андрея) гостем приложить к делу свое дипломатическое искусство.