LINUX.ORG.RU

Нужны советы математиков (физиков и т.д.) по выбору ПО

 , , ,


0

4

Доброго времени суток, ЛОР!

Возможно, такие вопросы лучше задавать на dxdy, но в вопросах выбора ПО часто оказывается более полезным мнение людей, для которых компьютер не черный ящик. Если среди нас найдется несколько математиков, то будет вообще круто.

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

Но в некоторые моменты хочется проверить какую-то догадку сначала на нескольких случайных примерах. График построить, подвигать какой-нибудь ползунок с параметром, чтобы посмотреть изменения, быстро перемножить 3-4 матрицы с символьными коэффициентами и упростить результат (если смысловых ошибок нет, то результат получается очень красивый, а руками это 3-4 страницы и 5 раз переделывать). Иногда нужно и численно интегрировать. В общем, я подумал, что если использовать какое-то математическое ПО, то дело пойдет быстрее.

Чем я пользовался:

Maple - не свежая версия, лицензия на которую была в университете (лет 5 назад). Тогда я был от нее в восторге, но сейчас понимаю, что это не из-за ее сверхкрутости, а из-за того, что это был мой первый опыт с подобным ПО. Главный минус - не свободное и платное.

Wolfram Mathematica - аналогично Maple в плане минуса. Как по мне, самый меинстримный вариант сейчас. Пару раз пользовался.

Wolfram Alpha - самое классное в этой штуке то, что можно вообще не париться над синтаксисом. Тупо пишешь и в большинстве случаев он тебя понимает.

Maxima. Сам не пользовался, мельком наблюдал за своей девушкой, когда она работала. Она от нее в восторге, но я подозреваю, что это может быть первое впечатление от математического ПО, как у меня с Maple. Просил девушку быстро проверить мне несколько символьных преобразований с матрицами и решений СЛУ, все сделано красиво и экспортировано в tex.

Scilab. Прочитал по диагонали весь мануал и подробно пару разделов. Была какая-то конкретная задача, нужно было выполнить вычисления и по итогу построить пару графиков. Все сделал, разобрался довольно быстро, но особой эйфории не испытал.

IPython - жутко понравилась идея, т.к. я люблю Python, но из математики только баловался с вычислениями при помощи numpy. SymPy, Sage и т.д. пока прошли мимо меня, к сожалению.

Да, еще хотел отметить, что понравилась возможность создавать интерактивные манипуляторы в Wolfram. Я сначала подумал, что хочу такое, а потом увидел, что такое есть.

Теперь, собственно, почему возникают глупые вопросы. Если бы с студенческие годы я видел дальше собственного носа (Maple, Wolfram), то я бы давно перепробовал уже все пакеты и раздавал бы сам советы. Но сейчас у меня мало времени, которое я могу уделить изучению чего-то. Хочется не бросаться на разные вещи, а изучить что-то одно (ну или пару) так, чтобы проникнуться идеологией работы и быстро решать возникающие задачи.

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

Спасибо всем, кто дочитал.

★★★★★

Мои 5 копеек: IPython, кмк, совсем не подходит для эпизодического применения, так или иначе надо много чего помнить или лезть в документацию. Здесь чисто консольный интерфейс показывает себя не с лучшей стороны.

Есть достаточно мейнстримные варианты в виде Matlab и Mathematica. С первым сталкивался, там всё весьма неплохо, пока не начинаешь писать под него код (мне, по сравнению с python+numpy+scipy+matplotlib, вообще не понравилось). Со вторым не сталкивался, но знакомый, много пишущий под него, говорит примерно то же самое.

Также пользовался немного Maxima (не кодинг, а мышконажимательство). Она весьма хороша среди свободных CAS, но со стабильностью не всегда хорошо. Например, некоторое время назад она устойчиво падала при вводе скобок в диалогах при включенном автоматическом дополнении закрывающей скобки. Еще бывало, что лисповский движок зависал так, что его надо было руками прибивать SIGKILL'ом. Хотя, возможно, это в большей степени дело кривых рук дебиановских мейнтейнеров.

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

octave с дополнительными модулями с octaveforge, мне её хватало, чтобы решать задачки курсов на курсере, где они matlabовские, хотя simulinkа, там, например, нет.

dn2010 ★★★★★
()

Из свободных:

Для символьных вычислений --- Maxima. У неё есть GUI wxMaxima. Работает достаточно стабильно. Имеет некоторые ограничения, например преобразование Лапласа считает для множителей не выше 2-й степени. Численные интегралы по-моему брать не может, но нужно уточнить в документации.

Для численных вычислений Octave --- это аналог Matlab, совместимый с ним по синтаксису, но без Simulink и части библиотек. Последняя версия имеет свой GUI.

Ещё существует OpenAxiom. Его тоже стоит посмотреть, возможно понравится. Судя по описанию это аналог Maple/Mathematica, но его я не смотрел.

Из несвободных:

Maple, Matlab, и Mathematica имеют версии под Linux.

DarthVadimius ★★★★
()

Почему-то мне кажется что это больше дело вкусов и предпочтений. Матрицы и СЛАУ умеют все, так что где тебе комфортно и где ты привык, там и сиди.

morse ★★★★★
()
Последнее исправление: morse (всего исправлений: 1)
Ответ на: комментарий от aquadon

Без понятия. Я матлабом по университетской лицензии пользуюсь, не задумывался над альтернативами.

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

В Scilab могут не обрадовать кое-какие недоделки. У Matlab обширнее справка, с включениями теории. Я не математик, поэтому мне этот вариант показался удобным.

Движки и графики в Scilab рисовать можно, подтверждаю. Есть модуль для создания GUI.

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

OpenAxiom

Её смотрел я - ИМХО, лучшая из свободных CAS в символьном интегрировании - интегрирует сильно точнее, чем maxima, например. Но считает весьма медленно и в качестве числодробилки не годится.

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

Численные интегралы по-моему брать не может, но нужно уточнить в документации.

может. Лично брал.

Есть ещё reduce

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

Водовка, картофанчик

лучшая из свободных CAS в символьном интегрировании

А оно зачем-нибудь нужно?

Мне вот от CAS требуются в основном три вещи: 1) упрощение выражений, 2) визуализация чего угодно быстро интерактивно 3) чтоб любые понадобившиеся функции и алгоритмы были доступны «на кончиках пальцев».

У свободных CAS со всем этим пичально.

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

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

feofan ★★★★★
()
Ответ на: Водовка, картофанчик от HeipaVai1o

Ты уверен, что у всех ровно такие же потребности? Я написал про то, чем воспользовался и проверил лично я.

По пунктам 1 и 3 есть мысль, что стоит потыкать reduce. Но сам с ним не работал, поэтому не уверен. По 2 пункту - matplotlib.

Ну и у меня последнее время другие задачи, поэтому стоит обратиться к другим источникам.

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

Было всего два форка: OpenAxiom и Fricas сразу после того, как были освобождены исходники Axiom. Возникли из-за не адекватного поведение ведущего разработчика, который в результате остался в гордом одиночестве пилить Axiom, а все остальные разошлись по форкам. Более активная компания собралась рядом с исходниками Fricas.

Evgueni ★★★★★
()
Ответ на: Водовка, картофанчик от HeipaVai1o

Есть интерфейс maxima (возможно axiom тоже) к texmacs если вдруг нужна визуализация. Также визуализация как минимум ответов maxima есть в emacs.

Evgueni ★★★★★
()

Начну с SymPy, его пробовал самым первым и могу сказать что это самая убогая хр*нь! Пользоваться жутко неудобно (документация тоже дрянь), последней каплей стала: plot3d(1/(y-x), (x,-5,5), (y,-5,5)). Maxima простая как валенок, незнаю есть ли вменяемый гуй, тот что идет из коробки не понравился. В комплекте с Maxima идет пакет для Emacs'a, откуда и пользуюсь. Есть не все, например отсутствует дифференциал нескольких переменных, двойной лимит, ... , плохо рисует сложные разрывы Plot3D[1/(x^2 + y^2 - 1), {x, -2, 2}, {y, -2, 2}]. Но пользоваться ей удобно, в отличей от SymPy и Sage(неправильно рисовала график). Fluent syntax Wolfram Alpha хорош до той поры пока нет трехэтажных дробей, тк не понимает он что ты хочешь (приходиться спрашивать уже на Wolfram Language). Был забавный косяк когда Wolfram Alpha говорила что ряд расходится, а Wolfram Mathematica говорила наоборот (и была права).

Хватает возможностей Maxima, используй ее, если нет потрать час на Wolfram Language и иди регистрировать бесплатный аккаунт Wolfram Mathematica Online (или купи).

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

Matlab/Octave не пользовался для этого есть python, а Maple решила на 20% меньше «х*тр*ж*пых» интегралов по сравнению с Wolfram mathematica в прошлогоднем тесте.

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

octave с дополнительными модулями с octaveforge, мне её хватало, чтобы решать задачки курсов на курсере, где они matlabовские, хотя simulinkа, там, например, нет.

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

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

любая попытка решить которые блокируется самими разрабами

А поподробнее, ты о чём?

у октавы есть генетические проблемы с быстродействием

На моих скриптах вроде работает не сильно медленнее матлаба, иногда быстрее. Что за проблемы?

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

А поподробнее, ты о чём?

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

Первое - есть политика все кроме самых базовых вещей делать через m-script чтоб упростить поддержку кода. И понятие этих самых «базовых вещей» достаточно субъективно. Например при работе с ФС производительность октавы в некоторых случаях на несколько порядков (раз так в 1000) медленнее чем у матлаба, именно из-за подобного подхода (много строк). Несколько раз была идея сделать пачку пакетов с заменой самых низовых м-функций на кресты, но руки дошли только до нескольких.

Вторая проблема что разрабы забили хрен на адекватный допил JITа и взялись пилить гуй, хотя в целом QtOctave не так уж и плох если так хочется гуя. JIT работает емнип только на простых циклах с 10000+ итерациями.

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

Четвертая проблема - принцип «посоны доделают». В итоге имеем уйму либ, которые вроде работают, но процентов так на 80, а остальные 20% в лучшем случае заткнуты хитрыми костылями, которые при отсутствии JITа дают просто поразительный эффект.

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

Первое - есть политика все кроме самых базовых вещей делать через m-script чтоб упростить поддержку кода.

По-моему, разумно. Хотя файловый ввод/вывод, наверное, всё-таки это «базовая вещь».

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

Я лично с этим не согласен, да. Гуем ни в матлабе, ни в октаве не пользуюсь (не путать с визуализацией), пишу всё в emacs. Но, видимо, это в угоду матлабовскому хомячью...

многопоточность, OpenCL и прочие плюшки

Многопоточность вроде используется, если векторизованный код писать. По крайней мере на лин.алгебре я вижу 400% загруз моего четырехпоточного проца... OpenCL — баловство, ИМХО, как мимнимум, на текущем этапе. Ни Octave, ни Matlab не создавались для HPC, это средства *прототипизации*. Нужно выжать всё из 100500 ядерного кластера или видеокарт — welcome to Fortran/C++.

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

У октавы достаточно приличная часть проблем с быстродействием решается компиляцией её с правильными библиотеками векторной алгебры, да и матлаб тоже не эталон скорости вычислений.

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

Хотя файловый ввод/вывод, наверное, всё-таки это «базовая вещь».

в этом и штука. понятие «базовых вещей» не всегда логически обоснованно, и периодически скорость конкретно приносится в жертву. Типичный пример - я им слал замену функции dir, написанную на плюсах вместо м-скрипта. Разница в скорости работы (для примера была взята директория /lib) - 0.3 сек против 126 сек. Не взяли.

Многопоточность вроде используется, если векторизованный код писать. По крайней мере на лин.алгебре я вижу 400% загруз моего четырехпоточного проца

dn2010, ответ и тебе тоже. Да, векторизация позволяет некисло все ускорить, но как было правильно сказано - нужны «правильные библиотеки лин алгебры». По сути это слегка не октавы заслуга. Если по сути - основные проблемы октавы в избыточном использовании операций над строками и в отсутствии JITа. В идеале надо как минимум перелопатить все файлы которые используют тот же strjoin, но опять же - сейчас все пилят гуй.

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