Sage
Анимированный график, созданный в Sage, y=x2 (красная кривая), y=x3(синяя кривая) | |
Тип | |
---|---|
Написана на | |
Операционная система | |
Первый выпуск | |
Аппаратная платформа | |
Последняя версия | |
Лицензия | |
Сайт |
[www.sagemath.org/ emath.org] |
Sage (с англ. — «мудрец») — система компьютерной алгебры, покрывающая много областей математики, включая алгебру, комбинаторику, вычислительную математику и матанализ.
Первая версия Sage была выпущена 24 февраля 2005 года в виде свободного программного обеспечения с лицензией GNU GPL. Первоначальной целью проекта было «создание открытого программного обеспечения альтернативного системам Magma, Maple, Mathematica, и MATLAB»[1]. Разработчиком Sage является Уильям Стейн — математик Университета Вашингтона.
Содержание
Возможности
Многочисленные возможности Sage включают[2]:
- Интерфейс notebook для просмотра и повторного использования введённых команд и полученных результатов, включая графики и текстовые аннотации, доступный из большинства современных веб-браузеров. Доступно защищённое соединение через протокол HTTPS, когда конфиденциальность имеет значение. Так же Sage может выполняться как локально, так и удалённо.
- Интерфейс ввода на основе командной строки, с использованием мультипарадигменного языка Python.
- Поддержка параллельных вычислений с использованием как многоядерных процессоров, так и многопроцессорных систем и систем распределённых вычислений.
- Матанализ реализован на основе систем Maxima и SymPy.
- Линейная алгебра реализована на основе систем GSL, SciPy и NumPy.
- Библиотеки элементарных и специальных математических функций.
- Плоские и трёхмерные графики для функций и данных.
- Средства работы с матрицами и массивами данных с поддержкой разрежённых массивов.
- Различные статистические библиотеки функций, использующие функциональность R и SciPy.
- Набор инструментов для добавления собственного пользовательского интерфейса к вычислениям и приложениям.[3]
- Средства для обработки изображений с использованием pylab и Python.
- Средства визуализации и анализа теории графов.
- Процедуры для импорта и экспорта различных форматов данных: изображений, видео, аудио, САПР, ГИС, документов и медицинских форматов.
- Поддержка комплексных чисел, символьных и вычислений с произвольной точностью.
- Подготовка научно-технической документации с использованием редактора формул и возможностью встраивания Sage в документацию формата LaTeX.[4]
- Сетевые инструменты для соединения с базами данных SQL, поддержка сетевых протоколов, включая HTTP, NNTP, IMAP, SSH, IRC, FTP.
- Программные интерфейсы для работы с системами Mathematica, Magma, и Maple.
Хотя это не представлено непосредственно, 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» (с англ. — «выпускай раньше, выпускай чаще»), новые релизы появляются каждые две-три недели.
Версия | Дата Релиза | Описание |
---|---|---|
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"
Примечания
- ↑ 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].
- ↑ [www.sagemath.org/help.html Sage documentation]
- ↑ [wiki.sagemath.org/interact Sage Interact functionality]. Проверено 11 апреля 2008. [www.webcitation.org/672wOSgyx Архивировано из первоисточника 19 апреля 2012].
- ↑ [www.ctan.org/tex-archive/help/Catalogue/entries/sagetex.html The TeX Catalogue OnLine, Entry for sagetex, Ctan Edition]
- ↑ facstaff.unca.edu/mcmcclur/Mathematica/Sage/ Calling Sage from Mathematica
- ↑ facstaff.unca.edu/mcmcclur/Mathematica/Sage/UsingSage.nb A Mathematica notebook to call Sage from Mathematica.
- ↑ [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].
- ↑ [t2nb.math.washington.edu:8000/ t2nb.math.washington.edu:8000] - онлнай-версия пакета
- ↑ [www.sagemath.org/development-ack.html Sage — Acknowledgment]
- ↑ [www.sagemath.org/mirror/src/changelogs/sage-5.0.txt sage-5.0.txt]. Проверено 17 мая 2012.
- ↑ [drvinceknight.blogspot.com/2013/12/installing-and-using-sage-just-got-even.html Installing and using Sage just got even easier]. Проверено 12 июля 2014.
- ↑ [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 ти роберов генерал встал, сказав, что эдак невозможно играть, и Пьер получил свободу. Наташа в одной стороне говорила с Соней и Борисом, Вера о чем то с тонкой улыбкой говорила с князем Андреем. Пьер подошел к своему другу и спросив не тайна ли то, что говорится, сел подле них. Вера, заметив внимание князя Андрея к Наташе, нашла, что на вечере, на настоящем вечере, необходимо нужно, чтобы были тонкие намеки на чувства, и улучив время, когда князь Андрей был один, начала с ним разговор о чувствах вообще и о своей сестре. Ей нужно было с таким умным (каким она считала князя Андрея) гостем приложить к делу свое дипломатическое искусство.