LINUX.ORG.RU

Sage 7.1

 , ,


1

7

SageMath — открытая система компьютерной математики, распространяемая по лицензии GPL. Она объединяет возможности ряда существующих математических пакетов (NumPy, SciPy, matplotlib, Sympy, Maxima, GAP, FLINT, R и других) при помощи общего Python-подобного языка.

20 марта состоялся релиз Sage 7.1. В этой версии закрыто 256 задач, вклад в разработку внесли 89 участников, из них 14 — впервые.

>>> Оригинальная новость и полный список изменений

В этой версии закрыто 256 задач

Круглое число, однако

SZT ★★★ ()
Ответ на: комментарий от iampluralgay

Sage разве в него встроили? Скажем отдельно R и maxima имеются, но как на счёт всего Sage?

Evgueni ★★★★★ ()

Кто-нибудь пользовался им для реальных задач? Как оно на практике? Помню, пытался с ним разобраться когда-то давно, но тогда оно было очень сырое и как-то не сложилось.

Вообще, я давно хочу какую-нибудь систему компьютерной алгебры для решения задачек по квантам (и институтскому курсу теор. физики вцелом). Есть какие-нибудь рекомендации?

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

Axiom (FriCAD) вроде неплох, но про него почти никто не знает и не пользуется. Плюс еще всякие раздражающие мелочи, типа проблем с отображением формул и отсутствием работающей моды для емакса (раньше были какие-то проблемы, сейчас наверное уже починили...).

Сейчас остановился на SimPy + jupyter. На нем понятно и удобно программировать, но именно математические возможности по-моему пока не очень.

anonymous ()
Ответ на: комментарий от anonymous

Wolfram Mathematica. Если ты не захардкорный математик, а только для физики то пойдет.

anonymous ()

Месяц назад скачал 7.0 попробовать, но заработался, так и лежит на флешке. Судя по отзывам, оно значительно продвинулось по сравнению с ранними версиями.

Stalin ★★★★★ ()
Ответ на: комментарий от anonymous

По Maxima до пса всякой литературы и довольно полной (см., например, http://maxima.sourceforge.net/docs/maximabook/maximabook-19-Sept-2004.pdf и http://maxima.sourceforge.net/documentation.html ). Я когда-то пропагандировал студентам как свободную программу аналогичную Mathematica. Есть оч удобный интерфейс wxmaxima аналалогичный тойже Mathematica. Для простых студенческих задач вполне пойдет, но конечно для серьезной работы нужна Mathematica. По возможностям с ней может сравниться может Maple. Я использую Mathematica практически каждый день и нахожу ее очень удобной для аналитики. Sage как то пробовал, но нашел что символьные возможности намного меньше Mathematica, но проект развивается оч быстро и дай бог станет возможным его использование.

rustamych ()
Ответ на: комментарий от anonymous

Кто-нибудь пользовался им для реальных задач? Как оно на практике?

Прошёл с ним технический ВУЗ, модели для диплома. Сейчас в нём же моделирую для диссертации. Сравнивать могу только с поверхностными знаниями Matlab-а. Вот краткий список сравнительных впечатлений (что на ум пришло):

  • Python - самый весомый аргумент «за», как только модель становится более или менее сложной, или начинается какое-то программирование, то преимущество языка программирования над обёрткой к синтаксису матричного калькулятора становится весьма критичным. Особо следует отметить ООП и, например, невозможность в matlab объявить функцию в общем m-файле (надо либо делать отдельный файл с согласованным (sic!) именем, либо использовать static-класс-контейнер). И синтаксис, разумеется. Ну и нумерация массивов с 1.
  • Notebook (ранний jupiter) с подходом «много фрагментов ввод-вывод» удобнее matlab-овского подхода «один большой вход и один большой выход» (хотя в последних версиях они допили возможность выполнять фрагменты «одного большого входа», используя специальную разметку в коде, упакованную в (ха-ха) комментарии).
  • Связка matplotlib + python очень удобна при подготовке графиков. Код, который выдаёт изображение. Для сравнения в matlab так тоже можно делать, но из-за скудности языка boilerplate сплошной будет. Адепты matlab иногда парируют это тем, что мол, сохранение и доводка изображения выполняется вручную в matlab-овском просмотрщике изображений. Да, это удобно сделать один раз, но если потом надо изменить параметры моделирования, то начинается ручная работа.
  • Код Python, который относится непосредственно к программированию модели, можно вынести в модули и работать с ними в любой удобной IDE (у меня это, например, PyCharm). Разумеется, эта ide на порядок будет превосходить встроенный в matlab текстовый редактор.
  • Современный браузер для sage-овского notebook-а - неубиваемый. Python IDE - неубиваемая. Matlab - падучий и виснущий. Ресурсов требует больших, работает гораздо медленнее.
  • Если Matlab как система работает медленее, то вычисления в нём работают так же, или, на моей практике - быстрее (зависит от реализации библиотеки линейной алгебры, но у матлаба она искаропки очень быстрая).
  • Не очень удобно синхронизировать woksheet-ы между машинами.
  • Очень субъективно: matplotlib-овские графики приятнее и аккуратнее matlab-овских выглядят
  • Говорят в matlab-е много хороших библиотек. Наверное, это так, но мне пока в узкой области не доводилось встретить такого, чего не было бы в numpy/scipy
  • Ну и, разумеется, практическое преимущество - sage весит и где-то 1 Gb или 2.5 Gb с ВМ для работы под оффтопиком, а matlab не помню уже, ~ 9 Gb. И разворачиваются они, соответственно - один за считанные минуты, другой будет неспешно распаковываться, полыхая в юзера огнём для солидности. В догонку, matlab порой приходится, гм... «доставать», в отличие от open source.
omegatype ★★ ()
Последнее исправление: omegatype (всего исправлений: 1)

Для социологического-статистического анализа данных подходит? Насколько синтаксис отличается от R, Julia или SPSS?

bookman900 ★★★★★ ()
Ответ на: комментарий от omegatype

Это все хорошо - про то, какой уродец эпичный матлаб можно рассказыавать долго и все это правда, но чем этот велосипед отличается от любой научной сборки пистона, например анаконды, где все эти numpy и maptlolib также присутствуют?

P.S.: Код в mpl такой же бойлерплейт, как и в матлабе, но это так, позиция пользователя ggplot2

ptarh ★★★★★ ()
Ответ на: комментарий от ptarh

Это ко мне вопрос?

Если ты работал с анакондой, вот и поведай нам. Что в ней есть и в чём заключается Freemium-лицензия по сравнению с сабжевым gpl.

И да, почему велосипед? Этот проект жив с 2005-ого, персонально пользуюсь с 2006-ого, когда появилась анаконда?

P.S. Касательно mpl в Sage с ней бойлерплейт меньше, т.к. на части типовых функций есть sage-вские обёртки, например, можно вот так (обратите внимание на +=):

p = plot(sin, 0, 2 * pi, legend_label=r'$f(\phi) = \sin(\phi)$', color='red')
p += plot(cos, 0, 2 * pi, legend_label=r'$f(\phi) = \cos(\phi)$', linestyle='--')
p.show(axes_labels=(r'$\phi$', ''), frame=True, axes=False, gridlines='minor', title='Functions')
p.save('/path/to/file.pdf')

И получится http://postimg.org/image/qur1w6cr5/

omegatype ★★ ()
Ответ на: комментарий от omegatype

Если ты работал с анакондой, вот и поведай нам. Что в ней есть и в чём заключается Freemium-лицензия по сравнению с сабжевым gpl.

В ней есть пистон со всеми нужными научными либами и нормальным пакетным менеджером (ахиллесова пята пистона и по сей день). К работе готов «искарпоки». И это совершенно нормальный пистон, без отсебятины, что уже плюс при поисках решений проблем. Что касается их платных версий (которые академики могут и так получить) то они не должны тебя беспокоить, так как там оптимзации на серверное обмолачивание и поддержка, которых у тебя также в Sage нет и не будет.

ptarh ★★★★★ ()

Сажа-сажица

Наконец-то созрела свободная замена Wolfram Mathematica! Который год пытаюсь в это уверовать, раз за разом заставляю себя жрать эту сажу. Всё-то в ней славно, пока не попробуешь, блджад, с ней работать. Данное видео наиболее точно передаёт ощущения от работы с сажей. Отовсюду торчит скотч, проволока и забытые куски арматуры. Вот из элементарного:

>>> g = SymmetricGroup(3)
>>> g.orbit((1, 2), 'OnRight')
Traceback (most recent call last):
...
NotImplementedError: This action is not implemented (yet?)

«Зачем нам поддерживать все возможности GAP, если всё равно нашим говном никто не пользуется?» Ладно, пофигу:

>>> g.orbit((1, 2), 'OnPoints')
Traceback (most recent call last):
...
ValueError: (1, 2) does not belong to the domain

«Зачем нам вообще действие группы на саму себя? Если всё равно нашим говном никто не пользуется». Потому что здоровому человеку проще выкинуть сажу и взять сразу GAP.

gap> g := SymmetricGroup(3);;
gap> Orbit(g, (1, 2), OnRight);
[ (1,2), (1,3), (), (2,3), (1,3,2), (1,2,3) ]
gap> Orbit(g, (1, 2), OnPoints);
[ (1,2), (2,3), (1,3) ]

Который GAP оная сажа тупо вызывает через pexpect. Скотч, проволока, синяя изолента. И вот как-то всё оно так.

HeipaVai1o ()

Скажите, а чем это отличается от простого Python'a с математическими библиотеками и ноутбуком?

anonymous ()
Ответ на: комментарий от anonymous

axiom/fricas гораздо лучше чем maxima в символьных преобразованиях (в интегрировании в частности). Есть хорошая встроенная документация, так как пишется с использованием литературного программирования. Работает довольно медленно и для численных расчетов лучше выбрать более подходящие инструменты.

Сабж тоже пробовал года три назад - осталось впечатление недоделанности. Радует, что проект развивается.

feofan ★★★★ ()

Программа действительно хорошая, даже в варианте установки со всеми исходниками для обновления пересборкой весит меньше пресловнутого матлаба. Что касается набора функций - он неплох, очень неплох для студента электрика. Приятные чертежи, веб-интерфейс, встроенное версионирование (автоматическое). К сожалению для моей специальности (электропривод и автоматика) не является заменой матлабу - его приходится заменять на Scilab, тратя время на адаптацию методичек и чтение его плохой справки.
За три года постоянного использования Sage мной было выявлено несколько недостатков:
1) Неполная реализация обратного преобразования Лапласса (не умеет в теорему запаздывания), что сводит на нет применимость в более-менее сложных моделях.
2) Графики - нет встроенной функции для построения графиков с несколькими шкалами. Отличить в подписи тип линии сплошной и пунктиром - только если знаешь заранее что пунктир обозначается чуть-чуть более короткой линией.
3) Шрифты на графиках - для интеграции с латехом хочу использовать CMU, но матплотлиб не воспринимает из него кириллицу. Режим матплотлиба с использованием латеха не работает из-за неизменяемой экстра-кривой преамбулы рубящей на корню кириллицу в формулах (товарищи элитисты-математики, кириллица в формулах у инженеров-электриков была есть и будет, и никуда от этого не деться, особенно у электромехаников, где на 26 букв латинского алфавита есть под сотню разнообразных значений которые надо как-то обозначать).

madarexxx ()
Ответ на: комментарий от omegatype

А вы пробовали шрифты менять на графиках? Может быть подскажете как поменять шрифт на Computer Modern Unicode (чтобы смотрелось однородно с латехом).

madarexxx ()

Спасибо за отзывы о разных CAS. Буду иметь в виду.

anonymous ()
Ответ на: комментарий от madarexxx

Для интеграции с латехом экспортируй данные в CSV и юзай pgfplots.

anonymous ()
Ответ на: комментарий от madarexxx

Шаришь. Бери офис с экселем и не парь людям мозг.

anonymous ()
Ответ на: комментарий от anonymous

то есть вы предлагаете поменять хороший годный инструмент из-за небольшой проблемы? логично однако

madarexxx ()
Ответ на: комментарий от madarexxx

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

anonymous ()
Ответ на: комментарий от anonymous

меня интересует как просто поменять шрифт на графиках :) в принципе и так устраивает, но хочется органичного вида с латехом. Вставка картинок в латех работает так как мне нужно.

madarexxx ()
Ответ на: комментарий от madarexxx

Это называется «отделение формы от содержания», чувырло.

anonymous ()
Ответ на: комментарий от anonymous

анонимусы не могут без оскорблений? ну в принципе чего ещё от них ожидать?

madarexxx ()
Ответ на: комментарий от madarexxx

http://matplotlib.org/users/usetex.html http://ask.sagemath.org/question/10210/sage-latex-how-to-change-a-font-for-ax...

from matplotlib import rc, rcParams
rc('text',usetex=True)
rc('font',**{'family':'serif','serif':['Computer Modern Unicode']})

Но как в графику вставить кириллические символы - сходу не понял, мне на практике не приходилось.

Ещё есть манёвр, может пригодиться - это экспортировать в PGF. Например, у нас принято писать \phi малую как в https://en.wikipedia.org/wiki/Phi#/media/File:Phi_uc_lc.svg а matplotlib выдаёт другое начертание, которое скорее похоже на косо перечёркнутый ноль. В этом случае эскпортируем в pgf, в преамбулу файла ставим

\usepackage{upgreek}
\renewcommand{\phi}{\ensuremath{\upvarphi}}
и это подцепится в графике. Это почерпнул в https://habrahabr.ru/post/157153/

omegatype ★★ ()
Ответ на: комментарий от anonymous

Отделение формы от содержания произошло на этапе получения точек для построения в виде numpy array, дополнительный шаг в виде csv никакого большего структурного отделения не даёт.

omegatype ★★ ()
Ответ на: комментарий от madarexxx
from matplotlib import rc

rc('text', usetex=True)
rc('text.latex',unicode=True)
rc('text.latex',preamble='\usepackage[utf8]{inputenc}')
rc('text.latex',preamble='\usepackage[russian]{babel}')

font = {'family':'serif',
        'serif':['Computer Modern Unicode'],
        'size': 12, }

rc('font', **font)

plot(sin, 0, 2 * pi, legend_label=ur'Кириллический текст и формула с $f_\textup{кириллическим текстом} = \sin(\phi)$')

И вот тут ещё пример с кастомной преамбулой, позволяющей вставлять в формулу юникод, м.б. пригодится http://matplotlib.org/users/pgf.html

omegatype ★★ ()
Ответ на: комментарий от omegatype

Спасибо большое! Сейчас нет Sage под рукой, но выглядит рабочим.

madarexxx ()
Ответ на: комментарий от madarexxx

Неполная реализация обратного преобразования Лапласса (не умеет в теорему запаздывания)

Мне кажется, это не очень сложно заимплементить.

mix_mix ★★★★★ ()
Ответ на: комментарий от mix_mix

к сожалению я сам не программист и не математик, мне это не потянуть :( в универе пытают электрическими машинами и теорией электропривода

madarexxx ()
Ответ на: комментарий от omegatype

Это действительно сработало! Правда у меня остался один маленький вопрос к людям писавшим этот матплотлиб - почему экранирование кириллицы в формуле с помощью \text из amsmath (а не \textup) вызывает падение с километровой ошибкой ordinal not in range... А включение в преамбулу mathtext, вообще вызывает broken pipe.
Чую после того как допишу курсовой проект буду катать багрепорты во все инстанции ^_^

madarexxx ()
Ответ на: комментарий от madarexxx

Раз уж пошла такая пьянка, позволю поделиться ещё парой наблюдений:

  • в Sage зачем-то есть масштабирующий коэффициент для размера шрифтов подписей по осям - axes_labels_size, по-умолчанию 1.6, поэтому если попросить шрифт 10, а потом сохраниться в pgf - получим по осям 16-ый шрифт (а еще pdflatex может выдать warning на нестандартный размер шрифта),
  • Размер шрифта, выставленный через rc('font', **font) в случае использования Sage-вских обёрток будет переписан, для обёрток надо использовать fontsize

Таким образом, у меня построение графика во всю ширину страницы на данный момент имеет вид:

# Figure size
golden_mean = (sqrt(5) - 1.0) / 2.0
inches_per_pt = 1.0 / 72.27
fig_width_pt = 497.92325  # Get this from LaTeX using \showthe\columnwidth
fig_width = fig_width_pt * inches_per_pt
fig_height = fig_width * golden_mean
LATEX_FULL_PAGE_FIG_SIZE = [fig_width, fig_height]

# Plotting keywords
PLOT_KWD = {'marker': '.',
            'fontsize': 12,
            'figsize': LATEX_FULL_PAGE_FIG_SIZE,
            'frame': True,
            'gridlines': 'automatic',
            'axes': False,
            'color': 'black',
            'axes_labels': (r'$f$', ''),
            'axes_labels_size': 1, }

p = line(zip(x, y), **PLOT_KWD)
omegatype ★★ ()
Последнее исправление: omegatype (всего исправлений: 2)
Ответ на: комментарий от madarexxx

Отличить в подписи тип линии сплошной и пунктиром

Это называется legend_handlelength (см. sage.plot.graphics.Graphics.save, Matplotlib: Horizontal Linelength in Legend, matplotlib.legend.Legend):

p = plot(sin, 0, 2 * pi, legend_label='sin') + plot(cos, 0, 2 * pi, legend_label='cos', linestyle='--')
p.show(legend_handlelength=4)

omegatype ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.