Pull to refresh

Comments 52

Maple — штука хорошая. В своё время в университете только его и использовал.
Но на практике — символьные вычисления используются довольно редко.
Ещё у maple хромает интеграция со всеми существующими языками программирования(кое-как взаимодействует только с С)

Поэтому для решеня чего-нибудь «по-быстрому» и интеграции этого решения в систему использую
SciPy
на практике — символьные вычисления используются довольно редко.


При работе с групповым анализом, разного рода полуаналитическими методами для решения спектральных краевых задач, построении асимптотических решений Maple себя зарекомендовал прекрасно, хотя для его успешного применения нужно понимать как используемые алгоритмы (при численном счёте), так и саму математическую основу процесса (при аналитическом).
Как и kbtsiberkin, использую символьные вычисления для спектральных краевых задач. Мне Mathcad сильно помогает с символьными вычислениями с матрицами для вывода общих форм, когда лень умножать три матрицы 3 х 3 руками (часто встречается с тензорами в электромагнетизме). Часто использую символьные вычисления, для быстрой разработки прототипов в Mathcad: есть сложное интегральное уравнение, при решении которого используются производные ядра (kernel function). Разница в скорости между численным дифференцированием-интегрированием и подстановкой символьного решения даже на небольших примерах может быть значительна. Кроме того, символьные вычислении незаменимы при «вычитывании» своих статей перед публикациями — удобно отлавливать опечатки.
Я сейчас на перепутье — выбираю между Maple и Mathematica, учитывая, что все численные расчеты выполняются в Matlab. Можете как-то прокомментировать?
Не берусь давать конкретных советов, ибо с Mathematica мы работали мало. Но, насколько мне известно, у нее функциональность больше, и больше форматов экспорта поддерживается. Возможно, и с интеграцией дела лучше обстоят.
UFO just landed and posted this here
Использовать и то и то накладно — две лицензии. Вообще, есть лицензия на Matlab Symbolic Toolbox, который на движке MuPad. Трудно найти в инете внятный непредвзятый сравнительный обзор трех систем. Вроде, считается, что движки Maple или Mathematica мощнее MuPad будут, но на сколько это правда — не знаю.
Загнал в MuPad интегралы из поста. С первым все без проблем, а со вторым не справился. Даже после указанной замены переменных. Хотя, очень вероятно, что я просто не умею им пользоваться.
UFO just landed and posted this here
На всякий случай уточню — это вы про Mathematica?
UFO just landed and posted this here
Поддержу предыдущего оратора. Я тоже использовал несколько систем(Mathcad, Maple, Mathematica, MatLab) для моих, прямо скажем, не супер сложных задач. Мне больше всего понравилась Mathematica, так как у неё самая толковая и подробная справка, и приятный Lisp-подобный язык. Дальше в моем рейтинге идет MatLab, но только в силу своей чрезвычайной распространенности. Затем идет Maple и в самом конце плетется Mathcad(возможно самая нестабильная система из всех 4).

А не встречали ли Вы аналог функции Hint из Maple в Mathematica?
UFO just landed and posted this here
Попробуйте для начала максиму. Потом возможно дозреете и до замены матлаба на октаву.
Да ладно. На данный момент мне не известны сколько бы то ни было серьезные конкуренты Simulink. В моей области (системный анализ и управление) Matlab+Simulink — стандарт де факто.
Судя по моему знакомству с работой зарубежных научных центорв, Scilab + Scicos вполне заменяет Simulink там, где этому надо учить студентов, а профессиональные разработчики чаще используют голую октаву, поскольку вся необходимая математика в ней и так есть, а графический конструктор профессионалу больше мешает. Относительно стандарта де-факто верится не очень, поскольку в тех местах, где есть серьезная наука я гораздо чаще вижу октаву, чем матлаб (хотя там IT-service поставит то, что попросишь).

И, кстати, даже если я тут и не прав, это не аннулирует совет попробовать максиму.
Зарубежных центров в какой области? Моя компетенция – системный анализ и управление. Я сам профессионально занимаюсь научными исследованиями в этой области, знаком со многими ведущими российскими исследователями, с зарубежными исследователями и разработчиками. Видел крупные научные центры, европейские исследовательские университеты, участвовал в совместных проектах. В общем, все то, что «серьезная наука». И я уверенно заявляю – Matlab+Simulink являются в этой области стандартом де факто. В образовании, действительно, иногда используют Scilab, но не часто.
Насколько я понимаю, вы занимаетесь signal&image processing? У вас, наверное, обстоит иначе.
Да, теорией управления я не занимался, а «системный анализ» вообще готов признать наукой только наравне с коллекционированием марок, уж извините (да, я знаю, что это название используется и вполне вменяемыми людьми, но только из коньюнктурных соображений, причем они сами понимают и признают это).

Позаниматься я успел кучей областей и могу рассказать о своем опыте. Список всех областей мне приводить лень, назову полярные области: обработка сигналов, распознавание образов, алгебраическая топология, дифференциально-разностные уравнения, фурье-оптика, оптика электронно-лучевых систем, обработка изображений (имеются в виду только области, где были получены результаты уровня публикации в журналах класса IEEE Trans). Так вот, однажды, после месяца, проведенного за отловом ошибок в Wavelet Toolbox из Matlab-а (было найдено около десятка тонких ошибок), я ввел полный мораторий на использование matlab-а в своих проектах. Я очень хорошо понимаю — по аналогичной ситуации в области signal processing — как создается впечатление того, что matlab — это мэйнстрим и стандарт де-факто. В этой области тоже многие так считают — просто судя по количеству статей, использующих этот инструмент и ссылающихся на него. И все хорошо до тех пор, пока человек не захочет наконец понять, как же на самом деле работает то чудо, которое он сотворил в этом чудо-пакете (а это обычно происходит в тот момент, когда у него появляется желание внедрить свои результаты в промышленный продукт). И вот тогда начинаются самые интересные чудеса. А потом оказалось, что по этому критерию очень легко отличать людей, которые делают реально используемые вещи: они не используют matlab или используют его как большой и удобный калькулятор, не более. Ну и чтобы быть полностью справедливым, скажу, что в этом смысле октава ничем не лучше матлаба, но у нее гораздо более адекватная для большого калькулятора цена :)
Что же, я не знаком с теми областями, которые вы перечислили. Похоже, что там Matlab используется без Simulink (по моим же ощущениям, сейчас именно Simulink становится флагманским продуктом Mathworks).
1) Большинство статей, ссылающихся на Matlab и использующих его в примерах — это и есть то, что я понимаю под «стандартом де факто». :) По крайне мере, когда я участвовал в совместных проектах нескольких научных центров, то никто не спрашивал, «В чем будем делать модели?». Спрашивали, «У вас какая версия используется?».
2) Естественно, возможны и ошибки. Особенно в относительно молодых тулбоксах. Какой же сложный проект от этого свободен? Хотя, должен сказать, мне встречалось некоторое «неожиданное поведение», но явные ошибки – ни разу. Вы, кстати, о своих найденных ошибках разработчикам тулбокса сообщили?
3) По поводу внедрения — у меня есть опыт внедрения систем управления, разработанных в Matlab, сверхпрецизионные системы слежения. Они сейчас находятся в эксплуатации и, вроде, тьфу-тьфу-тьфу. Так что утверждение «люди, делающие реальные вещи, не использую matlab» мне кажется неверным.

Повторю свой тезис. В моей области (системный анализ и управление) у Matlab+Simulink нет известных мне серьезных конкурентов, использование именно этого пакета является доминирующим в экспертном сообществе. Естественно, это не идеальный инструмент, он имеет свои слабые стороны и огрехи. Также он предполагает достаточно высокий уровень компетенции у пользователя. Его бездумное использование может привести к бездумным результатам и «интересным чудесам».

Особенно в относительно молодых тулбоксах.

Да, это был 1998 или 1999 год и wavelet toolbox только появился. Но при этом у меня вейвлетное преобразование уже несколько лет как было реализовано и меня все же уговорили попробовать в очередном проекте matlab и wavelet toolbox. Когда оказалось, что все работает иначе и заведомо неправильно и мне пришлось потратить месяц на поиск ошибок, я был очень зол, тем более, что пакет далеко не бесплатный.

о своих найденных ошибках разработчикам тулбокса сообщили?

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

есть опыт внедрения систем управления, разработанных в Matlab

И как Вы реализовывали на C те вещи, которые в Ваших исходных системах выполнялись ядром matlab-а? Только не говорите, что Ваши «сверхпрецизионные системы слежения» линковались с matlab-овскими библиотеками, тогда моя подорванная вера в разумность мира окончательно разрушится :)
Ну да, в 98-99 это был релиз тулбокса v1.0. Мне чужды ваши религиозные представления о бакгрепортах. Если бы мне мешал серьезный баг в купленной мной программе, я бы точно тряс бы техподдержку. А что, триал версии тулбокса в те годы не было?

Мне не очень понятен вопрос про реализацию, что именно вас интересует? Я, как разработчик регулятора, понял, чего я хочу, и объяснил это программисту. Дал ему схему, построенную на базовых примитивах (на элементах задержки). Мы с ним договорились, о том, в каком виде я ему буду передавать рассчитанные параметры, договорились о формате представления данных. Программист реализовал эту схему на целевом контроллере, мы прогнали набор контрольных тестов, которые показали, что результаты обработки входных данных в контроллере и в аналогичной схеме, собранной на примитивах в MatLab, совпадают. Все, на этом работа программиста в области реализации регулятора закончилась, в дальнейшем я обращался к нему, только если для какого-то из новых проектов надо было менять схему.
Далее я разрабатывал систему управления в Matlab+Simulink, используя все предоставляемые матлабом высокоуровневые возможности. Система сначала моделировалось, потом тестировалось на подключенном оборудовании. Когда результаты тестирования меня устраивали, я переводил полученную систему управления в низкоуровневое представление на элементах задержки. Точнее, запускал ранее написанный скрипт, который средствами матлаба осуществлял переход. Проверял работоспособность полученной схемы в матлабе. Далее скрипт генерировал на выходе файл с таблицей коэффициентов в том виде, о котором мы договорились с программистом. Этот файл добавлялся к конфигурационным файлам оборудования, проводились тестирования на железе с контроллером. Все.
Таким образом, вся разработка регуляторов проходила на верхнем уровне в Матлабе. Затем полученная система верхнего уровня по единожды разработанному совместно с программистом алгоритму приводилась к виду, реализованному в контроллере. Я не припомню таких ситуаций, чтобы схема в матлабе работала, а в контроллере нет, и чтобы это не было каким-то аппаратным сбоем.
Я уже плохо помню, мы получали какую-то академическую лицензию, которая была для нас то ли бесплатной, то ли очень дешевой, но собирались покупать полную лицензию и использовать в коммерческой геофизической системе. Но прогноз того, насколько часто придется «трясти техподдержку», оказался неутешительным и мы вернулись к самописной реализации, в которой, кстати, за все годы использования не нашлось ни одного бага.

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

Знаете, я буду вопринимать это как комплимент. :) Нам с программистом пришлось несколько подумать, чтобы сделать этот сценарий максимально простым, независимо от использованной в матлабе математики. А там несколько посложнее, чем ПИД подобрать.
Естественно компимент. Неужели можно было подумать иначе?
«системный анализ» вообще готов признать наукой только наравне с коллекционированием марок


Очень странно это слышать. «Системный анализ и управление» — это часть утвержденного ВАК названия специальности. В частности, это специальность 05.13.01 — Системный анализ, управление и обработка информации в технических системах. Я к тому, что это не какая-то коньюктурная терминология, а строго формализованная специальность со своим паспортом и прочими атрибутами. Я специально использовал это словосочетание, чтобы избежать возможных разночтений при наличии формального названия.

Естественно, системный анализ (в данном контексте) — не наука, никто этого и не говорил. Это некоторая область знаний, которая строится, главным образом, вокруг теории управления со всем множеством ее подразделов. Но так же включает в себя некоторые разделы computer science, теории информации, некоторые технические дисциплины и другое. Не наука, область знаний. Ближайший аналог перевода — Control science & engineering.

Мне кажется, что вы что-то другое поняли под «системным анализом».
Нет, я все правильно понял. В математике есть теория управления, специальность 01.01.02 («Дифференциальные уравнения, динамические системы и оптимальное управление») и это как бы наука. А специальность 05.13.01 как раз не включает в себя (это явно написано в паспорте специальности) «автоматизированные системы управления технологическими процессами и производствами», «программное обеспечение вычислительных машин, комплексов и компьютерных сетей», «системы математического моделирования», т.е. все то, что образует хоть какой-то научный костяк в рамках того, что за рубежом называется «Control science». Да, я математический шовинист, я знаю :)
Да, я математический шовинист

Это кое-что объясняет. :)
У нас с вами различное понимание «научного костяка». Давайте не будем погружаться в терминологические диспуты и закроем тему.
Что касается maxim. Это open-source, правильно? Мой скромный опыт подсказывает, что у open-source проектов зачастую дела с документацией, обучающими материалами и т.п. обстоят не очень хорошо. Мне же хочется пакет с минимальной кривой обучения, чтобы как можно быстрее начать использовать новый инструмент для решения задач. Скажите, как у maxim обстоят дела с документацией, сообществом и временем вхождения? Я не ёрничаю, мне действительно интересно.
У Вас очень распространенное заблуждение и мой опыт полностью противоречит Вашему.

Относительно конкретно максимы мне трудно оценивать время вхождения. Лично я начал ее использовать после примерно часа листания мануала и потом я еще изредка к нему обращался в неоднозначных случаях. Хотя как основной инструмент я никогда ее не использовал (насколько я понимаю, символьная алгебра является более-менее основным инструментом только для специалистов в области квантовой теории поля).

Вот, например, подходящий список руководств: maxima.sourceforge.net/documentation.html
Кстати, Maxima стартовала далеко не как Open Source проект (почитайте на досуге про ее историю в википедии) и судя по отзывам физиков-теоретиков по качеству символьной математики ее обгоняет только Reduce, который используют в самых суровых приложениях. Но по красивойсти интерфейса ситуация прямо противоположная, поэтому большинство использует абсолютно худшую систему символьной алгебры с самым няшным интерфейсом.
Пойду скачаю, посмотрю. Давайте так, если абстрагироваться от цены (Mathematica не сильно дорогая), то какие преимущества у Maxima перед той же Mathematica?

Абсолютно худшая система символьной алгебры с няшным интерфейсом — это вы сейчас о ком именно?
Поскольку я эти системы использовал только на любительском уровне, то могу ответить только со слов тех людей, которые используют их профессионально. Во-первых, профессиональное использование систем компьютерной алгебры подразумевает написание скриптов, реализующих символьные вычисления, уровень сложности которых не позволяет выполнять их в интерактивном режиме. Удобство написания таких скриптов — один из важных критериев и в этом плане максима удобнее. Второй важный критерий — эффективность, скорость выполнения преобразований. Здесь на первом месте вроде бы все еще находится reduce и за ним уже идет максима. Понятно, что все это может интересовать только тех, чьи символьные вычисления выполняются по несколько часов и более, т.е. физиков. Ну и худшая по этим критериям система вроде бы очевидна — вольфрам-маткматика.
Я посмотрел maxima. Про документированность оставим, любой может сходить по вашей ссылке и посмотреть. Сейчас не об этом. Есть у меня система image. Я пишу
assume(z1>0); assume(z2>0); 
solve([9*z1-3*z2+2=0,3*sqrt(z1)=z2],[z1,z2]);

и мне maxima отвечает, что не может найти решения. Если я руками возведу второе уравнение в квадрат и запишу
assume(z1>0); assume(z2>0); 
solve([9*z1-3*z2+2=0,(3*sqrt(z1))^2=z2^2],[z1,z2]);

то оба решения находятся. Что я делаю не так? Беглый просмотр документации на функцию solve мне не помог.
UFO just landed and posted this here
Да, обычный solve() работает только с многочленами. Лечится так:

(%i1) load(to_poly_solve);
Loading maxima-grobner $Revision: 1.6 $ $Date: 2009-06-02 07:49:49 $
(%o1)   /usr/share/maxima/5.30.0/share/to_poly_solve/to_poly_solve.mac
(%i2) to_poly_solve([9*z1-3*z2+2=0,3*sqrt(z1)=z2],[z1,z2]);
                               1                 4
(%o2)             %union([z1 = -, z2 = 1], [z1 = -, z2 = 2])
                               9                 9
Многое из того, что делают на Simulink удобнее делается на Modelica. Есть много реализаций, от проприетарной вольфрамовской, до свободных, типа OpenModelica. Есть интерфейс для косимуляции, позволяющий взаимодействовать с Simulinkом.
Рекомендую использовать в паре MATLAB+Mathematica. Если только одну систему хочется — надо смотреть на задачи.
Да, с интеграцией и практическим применением не всё очевидно, соглашусь. Всё-таки, конёк СКА — показательность. Их хорошо в процессе обучения использовать (разумеется, как дополнительную помощь, но не решение всех проблем), ну или для псевдонаучной работы: мат. модели иллюстрировать, оптимизационные задачки решать.

За наводку на SciPy спасибо, не знала о таком.
>> Просто потому, что было интересно — найдется ли такое уравнение, которое не смогут решить ни Maple, ни Maxima?

Будучи студентом я пробовал запихнуть туда интегралы из второго тома задачника Кудрявцева. Где-то в 30% случаев ответ выходил как какие-то адовые спецфункции. Может что-то изменилось с тех пор, конечно.
Спецфункции часто выходят потому, что нужно указывать предположения ($Assumptions в Mathematica), которые в задаче часто очевидны (например, что какая-нибудь степень в интеграле это натуральное число), а матпакет об этом не знает.

А вообще можно придумать много интегралов, которые не берут матпакеты, например, такой интеграл возьмёт догадливый десятиклассник, но Математику он вводит в глубокий ступор:
image
Теорема Гаусса, да. Но также можно заметить в интеграле наличие параметров , и , так что интеграл будет зависеть от них, поэтому не 1. (Здесь должен быть рассказ про студента, сдающего ТФКП, но ничего о ней не знающего кроме факта, что все интегралы в ТФКП равны .)

Решение интеграла
Если приглядеться, то можно заметить, что это иксовая компонента интеграла по шару:
image
Тут внимательный десятиклассник вспоминает из физики задачку про вычисление ускорения свободного падения внутри и снаружи Земли. В ней надо было найти массу Земли внутри сферы с радиусом image. После чего пишет ответ:
image, если image и image, если image

> с противниками компьютерной алгебры можно поспорить — при правильном применении она нисколько не расслабляет мозг, а наоборот — развивает логическое (и прочее) мышление.

Так с этим никто не будет спорить. Проблема в том, что становясь сильнее в применении инструментов, мы становимся слабее в «вырубить топором и собрать без гвоздей». Становясь технологичнее мы становимся более зависимыми от технологий. Грубо говоря, если что-то можно собрать из кубиков, зачем тогда это вытачивать из монолита? (из монолита будет легче, крепче,… но дороже, т.к. дольше и требует уникальной квалификации). Сейчас проблема в том, что из кубиков не все можно собрать. Но прогресс инструментов не стоит на месте.

PS: Кесарю, кесарево. Хочет человек выживать в лесу зимой в Оймяконе (выводит на бумаге теорему в 500 стр) — пусть развлекается и не тянет туда всех.
Если тренер заставляет прыгуна с шестом бегать, а прыгун говорит, что он лучше не побежит, а на машине доедет (потому что машина ездит быстрее и вообще лучше, хотя с шестом прыгать и не может), то кто прав — тренер или прыгун? Существующая система тренировочных упражнений в математике развивает не умение брать конкретные интегралы (что в реальной жизни математикам нужно еще меньше, чем всем осталньным), а общую аналитическую культуру.
Полностью согласен. Вопрос только в целях обучения. Сколько миру нужно прыгунов?
В тему интересный доклад на TED — Конрад Вольфрам: Как учить детей настоящей математике с помощью компьютеров
(это не Стивен Вольфрам, который WolframAlpha & Matematica)
Он там все правильно говорит, но он смотрит на вещи с высоты человека, который все это уже знает. К сожалению пока что опыт говорит, что такой прыжок чаще всего приводит к увечьям (вполне возможно, что мы просто еще не умеем прыгать через эту пропасть).

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

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

Mathematica ближе к прикладным исследованиям, а также тяжеловесной обработке и визуализации больших объёмов экспериментальных данных, на что недвусмысленно намекают её прекрасные возможности по импорту-экспорту данных, построению графиков, развитое структурирование данных в виде таблиц, а также лёгкое и быстрое встроенное распараллеливание. Привлекают мощные инструменты статистического и спектрального анализа данных. Например, встроенный вейвлет-анализ в ней появился раньше остальных пакетов. Средства аналитического исследования и работы с символьными выражениями в Mathematica выглядят не настолько удобными, как в Maple, хотя внешне они выглядят более изящно. Ну а развитая структура опций команд позволяет добиться скорее более удобного представления результата, а выбор методов обработки выражений оказывается как-то затруднителен.

Mathlab, насколько понимаю (с ним не работал), ориентирован на обработку строго численной информации и на интеграцию с оборудованием, а также на численный анализ, что делает его инженерно-техническим инструментов.
Меня одного удивило что автор сей математической статьи — девушка. Это так приятно — внезапно узнать что еще остались представительницы прекрасного пола, чей мозг отягощен не только сведением губ перед зеркалом с айфоном. Респект!
Спешу вас уверить, что ситуация не настолько безнадежна! Я имею радость быть знакомой не с одной, и не с двумя, а очень многими девушками, размышляющими о математике и прочих интеллектуальных вещах.
Maple… Сколько же воспоминаний из университета накатило-то, а!
У него был очень большой минус — когда дело доходило до не-символьных вычислений, он тормозил жутко.
Sign up to leave a comment.

Articles