2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу 1, 2  След.
 
 Есть ли будущее у Maple?
Сообщение15.11.2016, 11:40 
В настоящее время имеются две общематематические компьютерные системы - Maple и Mathematica. Другие системы либо обладают существенно меньшими возможностями (MathCad, Maxima, Sage), либо больше ориентированы на числовые методы и моделирование (MATLAB). Примерно с 2005 года лидером является Mathematica, что подтверждено объективными тестами.
Причин тому несколько: в Mathematica вложено в несколько раз больше средств и труда; более эффективное управление. Качество команд Maple оставляет желать лучшего. Вот яркий пример:
Код:
restart; with(NumberTheory):
CodeTools:-Usage(MultiplicativeOrder(89, 13^1000));
memory used=6.41MiB, alloc change=32.00MiB, cpu time=4.77m, real time=5.04m, gc time=15.62ms
...

и
Код:
MultiplicativeOrder[89, 13^1000] // Timing

{0.421875, ...}

Разница в скорости 678.4 раз.
Меня тревожат не столько разница в скорости кодов (на самом деле во многих случаях она не существенна, однако во многих случаях важна), сколько низкое качество разработок (например, пакет NumberTheory в Maple 2016 - это наспех перелицованный пакет numtheory) и отсутствие новых идей ( Mathematica за последнее время внедрила, в частности, команду FindFormula с элементами искусственного интеллекта и команду GreenFunction.
Мне не понятна, например, цель пакета DocumentTools с его кнопочками, ползунками и колесиками. Откровенно говоря, Мэйпл похож на книги Дьяконова: куча багов и несуразиц. Вот пример двух команд Мэйпла, производящих противоречащие ответы:
Код:
series(piecewise(x <= 0, 2*(1-cos(x)), x^2), x, 3);
Error, (in series/Heaviside) no series at 0
MultiSeries:-series(piecewise(x <= 0, 2*(1-cos(x)), x^2), x, 3);
                               x^2

Вспомним еще, что Мэйпл содержит серию точных решателей: solve, ReaDomain:-solve, Student[Calculus1]:-Roots,LinearAlgebra:-LinearSolve, isolve, msolve, SolveTools:-PolynomialSystem, SolveTools:-Semialgebraic (вроде бы все перечислил), зачастую дающих разные ответы. Для сравнения, у Математики только два точные решатели Solve и Reduce.
Имеются несколько команд для пределов и интегралов. Рано или поздно разработчикам Мэйпла придется наводить здесь (и не только здесь) порядок. Как-то не представляю эту чистку авгиевых конюшен.
Однако монополия вредна, должна быть конкуренция, хотя бы для проверки результатов сложных кодов.
Maple обладает рядом достоинств - учебные программы пакета Student, DirectSearch, OrthogonalExpansions, GraphTheory (перечень можно продолжить).
Жизнь покажет, сможет ли Maplesoft перестроиться и сделать Maple достойным соперником Mathematica. В противном случае Европейский Союз и/или Российская Федерация (Российская система Эврика была на уровне первых версий Maple в начале 90-ых годов.) могут начать создавать собственные общематематические компьютерные системы.
Высказав личную точку зрения, хотел бы узнать мнение коллег.

 
 
 
 Re: Есть ли будущее у Maple?
Сообщение19.11.2016, 12:02 
Markiyan Hirnyk в сообщении #1169193 писал(а):
Высказав личную точку зрения, хотел бы узнать мнение коллег.

Раз уж остальные коллеги молчат, выскажусь.

Сравнивать Maple с Mathematica мне весьма трудно, поскольку с последней знаком, разве что, через WolframAplha.

Поэтому расскажу, как я пришел к Maple.
Более 20 лет назад я купил компьютер (в университете, где я работаю, персональные компы аналогичного класса появились года на три-четыре раньше). Вскоре мне подарили на день рождения (вполне себе пиратский, а какой же еще?) диск с математическим софтом. Там были MatCad, MathLab, Mathematica, Maple и уже не помню чего еще. И я принялся осваивать эти продукты. Без книжек и Интернета, изредка используя встроенные Help'ы, но преимущественно методом тыка. MatCad, Mathematica упорно не хотели поддаваться этому методу. С MathLab'ом дела обстояли несколько лучше, но меня больше интересовала компьютерная алгебра, а не численные методы.
А вот Maple пошел как-то сразу. Оказалось, что интерфейс Maple, логика и идеология разработчиков мне близки и естественны.
Поэтому, когда в учебных планах появились дисциплины "Информационные технологии в математике" etc, именно я продавил приобретение лицензионного Maple (я, конечно, заикался, что не мешало бы приобрести и другие продукты, но даже то, что удалось уговорить начальство на Maple, по меркам сегодняшнего дня, выглядит чудом).
И только позже, когда я стал общаться с другими пользователями матпакетов, я с удивлением обнаружил, что большинство из них раздражает именно то, что мне сразу приглянулось - интерфейс Maple.
Типичное не мое мнение: "Я понимаю, что Maple имеет больше возможностей, но зато у MatCad'а удобный интерфейс". То, что это мнение - мнение большинства, подтверждает и политика самой MapleSoft, сделавший базовым так называемый Стандартный интерфейс, а Классический оставившей (спасибо им за это!) для таких как я.

По поводу ошибок.
Я не имею большого опыта работы с другими пакетами, но уверен, что ошибки есть и там. По крайней мере, в MatCad'е я за пару дней мучений обнаружил их почти столько же, сколько за 20 лет интенсивной эксплуатации Maple.
Я трижды обращался к разработчикам Maple с указанием ошибок (еще несколько раз поленился). Один раз они не удостоили меня ответом, а два раза признали ошибки и выполнили обещание устранить их в следующих версиях.

О быстродействии.
Сравнивать разные пакеты не так просто. Соотношение скоростей может резко меняться в зависимости от решаемой задачи.
Но, в целом, в теории чисел, где проблема быстродействия для меня наиболее актуальна, Maple, конечно, тихоход. Поэтому я (в минимальной степени достаточной для интересующих меня задач) освоил PARI/GP (спасибо dxdy и лично maxal'у).
Но на PARI я запускаю только финальную часть задачи. А всю отладку и подготовку делаю на Maple.

О перспективах.
Тревожным звонком является позиция одного из отцов-основателей, Гастона Гонне, заявившего, что его детище достигло своего потолка.
Но лично я всерьез переходить на что-то другое не собираюсь. Как говорится, "поздняк метаться!" :-( :-)

 
 
 
 Re: Есть ли будущее у Maple?
Сообщение19.11.2016, 13:34 
Имхо, есть будущее у Maple. По крайней мере, на ближайшие годы. Если уж MathCad жив... Вот о чьем будущем вопрос кажется более актуальным :-)

Другое дело, что математика развивается подинамичнее. Как подчеркивает Вольфрам, из-за хорошо продуманных базовых принципов, положенных в основу. Относительно недавно Вольфрам переименовал язык математики в язык Wolfram :D И позиционируется он уже не как средство для математических расчетов, а как полноценный язык программирования и универсальный инструмент разработки любых приложений, включая всякие промышленные проекты, хранение и обработку больших массивов данных и т.д. И действительно уже так используется. А поскольку сейчас все чаще в программах приходится применять различные математические методы (а заодно базы фактов из разных областей знания), которые в математике весьма успешно реализованы... Давно уже создана интегрированная среда разработки на базе Eclipse. Все как у больших :-) Поэтому математика, возможно, занимает уже не совсем ту же нишу, что и Maple, может вкладывать в развитие больше ресурсов и все такое.

Но у Maple язык больше похож на Си или Паскаль, так что тем, кто привык к таким языкам, оно проще. Многие численные вещи вроде интегралов, ОДУ и прочего Maple считает быстро. А если сравнить, сколько народа считает численно, а сколько использует пакеты для алгебры и теории чисел, то перекос будет в сторону первых. Так что большинство пользователей вряд ли будут менять Maple на что-то другое, если он их устраивает.

 
 
 
 Re: Есть ли будущее у Maple?
Сообщение19.11.2016, 13:53 
У Maple порог вхождение ниже и кривая обучения более пологая. Для многих пользователей это решающий фактор. Это как Си/Паскаль против Хаскеля: если нужно решить задачу обычному человеку, то написать страницу кода на Си/Паскале проще, чем три строчки на Хаскеле, делающие то же самое. Maple это не Си, и Mathematica не Хаскель, но в общих чертах ситуация та же.

 
 
 
 Re: Есть ли будущее у Maple?
Сообщение19.11.2016, 14:51 
Спасибо всем за отзывы. Пока отреагирую на часть одного из них.
Цитата:
Многие численные вещи вроде интегралов, ОДУ и прочего Maple считает быстро.

Давайте проверим на моем компе:
Код:
CodeTools:-Usage(dsolve({diff(y(x), x)+y(x)^2*x = 1, y(0) = 0}, numeric));
memory used=0.65MiB, alloc change=0 bytes, cpu time=47.00ms, real time=868.00ms, gc time=0ns

Код:
NDSolve[{y'[x] + y[x]^2 == 1, y[0] == 0}, y[x], {x, 0, 5}] // Timing
{0.015625, {{y[x] -> InterpolatingFunction[{{0., 5.}}, <>][x]}}}

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

 
 
 
 Re: Есть ли будущее у Maple?
Сообщение19.11.2016, 15:07 
Markiyan Hirnyk в сообщении #1170069 писал(а):
Математика в три раза быстрее.
Вообще говоря, в обоих случаях не указан шаг интегрирования, по-видимому, обе системы выбирают его из каких-то своих соображений. Следовательно, он может оказаться разным, а тогда сравнение быстродействия не имеет смысла.

 
 
 
 Какое значение имеет шаг?
Сообщение19.11.2016, 15:36 
Pphantom в сообщении #1170073 писал(а):
Вообще говоря, в обоих случаях не указан шаг интегрирования, по-видимому, обе системы выбирают его из каких-то своих соображений. Следовательно, он может оказаться разным, а тогда сравнение быстродействия не имеет смысла.

Код:
sol := dsolve({diff(y(x), x)+y(x)^2*x = 1, y(0) = 0}, numeric):
sol(2);
          [x = 2., y(x) = HFloat(0.7722121152783059)]

Код:
s = NDSolve[{y'[x] + y[x]^2*x == 1, y[0] == 0}, y[x], {x, 0, 5}];
(y[x] /. s) /. x -> 2.
{0.772212}

Результаты совпадают (Во втором случае можно показать больше цифр.).

 
 
 
 Re: Есть ли будущее у Maple?
Сообщение19.11.2016, 22:20 
Markiyan Hirnyk в сообщении #1170079 писал(а):
Результаты совпадают (Во втором случае можно показать больше цифр.).
Только отсюда совпадение шагов интегрирования (более того, даже используемых методов) никак не следует.

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

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

 
 
 
 Re: Есть ли будущее у Maple?
Сообщение19.11.2016, 23:09 
Цитата:
Кстати, не знаю, заметили ли Вы или нет, но при первом сравнении две системы решали разные задачи. Mathematica получила уравнение с разделяющимися переменными, тривиально решающееся аналитически, возможно, это и было причиной роста быстродействия.

Нет, вот результат для того же уравнения ( файл по требованию через Dropbox):
Код:
NDSolve[{y'[x] + y[x]^2*x == 1, y[0] == 0}, y[x], {x, 0, 5}] // Timing
{0.015625, {{y[x] -> InterpolatingFunction[{{0., 5.}}, <>][x]}}}

Цитата:
Только отсюда совпадение шагов интегрирования (более того, даже используемых методов) никак не следует.

Извините, Вы виляете. Одна и та же задача численно решается двумя системами, решения совпадают, сравнивается время. При чем здесь методы и шаг?

 
 
 
 Re: Есть ли будущее у Maple?
Сообщение19.11.2016, 23:15 
Markiyan Hirnyk в сообщении #1170069 писал(а):
Давайте проверим на моем компе:

У меня совсем другие числа. Правда, версии не последние. Вы эту проверку как первую команду после открытия запускали что ли? Так пока соответствующие ядра подгрузятся. И для математики более корректная команда тут AbsoluteTiming. Вообще, чтобы так проверять скорость, надо сделать цикл, скажем, с $10^4-10^5$ прогонов. А то при таких маленьких временных затратах посторонние факторы на результат влиять могут. Например, похоже, что Maple выводит только целое число миллисекунд. Нажимая одно и тоже по нескольку раз, у меня получалось $1-3$ мс. А математика неизвестно, с какой точностью время выдает. С нормальной проверкой у меня разрыв на вашем примере в 1.5 раза получился. И как сказал Pphantom, еще неизвестно, какие там параметры в вычислениях. И нельзя ли их подогнать так, чтобы Maple считал быстрее при той же точности.

Кроме того, вся эта разница будет хоть как-то сказываться, скажем, для тех, кому надо $10^6$ интегралов посчитать. Для остальных могут быть более важны другие факторы при выборе пакета.

 
 
 
 Re: Есть ли будущее у Maple?
Сообщение19.11.2016, 23:18 
Markiyan Hirnyk в сообщении #1170160 писал(а):
Извините, Вы виляете. Одна и та же задача численно решается двумя системами, решения совпадают, сравнивается время. При чем здесь методы и шаг?

Если уж кто виляет, то вы. То, что ответы до $n$-ого знака совпали на данном конкретном примере ничего не говорит. Численные методы они какбе... численные, то есть зависят чуть более чем полностью от того, каким образом считать и как подробно.

 
 
 
 Re: Есть ли будущее у Maple?
Сообщение19.11.2016, 23:40 
Vince Diesel в сообщении #1170163 писал(а):
Markiyan Hirnyk в сообщении #1170069 писал(а):
Давайте проверим на моем компе:

У меня совсем другие числа. Правда, версии не последние. Вы эту проверку как первую команду после открытия запускали что ли? Так пока соответствующие ядра подгрузятся. И для математики более корректная команда тут AbsoluteTiming. Вообще, чтобы так проверять скорость, надо сделать цикл, скажем, с $10^4-10^5$ прогонов. А то при таких маленьких временных затратах посторонние факторы на результат влиять могут. Например, похоже, что Maple выводит только целое число миллисекунд. Нажимая одно и тоже по нескольку раз, у меня получалось $1-3$ мс. А математика неизвестно, с какой точностью время выдает. С нормальной проверкой у меня разрыв на вашем примере в 1.5 раза получился. И как сказал Pphantom, еще неизвестно, какие там параметры в вычислениях. И нельзя ли их подогнать так, чтобы Maple считал быстрее при той же точности.

Кроме того, вся эта разница будет хоть как-то сказываться, скажем, для тех, кому надо $10^6$ интегралов посчитать. Для остальных могут быть более важны другие факторы при выборе пакета.

Спасибо за квалифицированное обсуждение.
Вот сравнение усредненных времен для нескольких прогонов:
Код:
restart; CodeTools:-Usage(dsolve({diff(y(x), x)+y(x)^2*x = 1, y(0) = 0}, numeric), iterations = 100);
memory used=79.75KiB, alloc change=32.00MiB, cpu time=2.19ms, real time=2.32ms, gc time=0ns

и
Код:
ClearAll[s]; s =
NDSolve[{y'[x] + y[x]^2*x == 1, y[0] == 0}, y[x], {x, 0, 5}] //   RepeatedTiming
{0.0015, {{y[x] -> InterpolatingFunction[{{0., 5.}}, <>][x]}}}

Здесь Математика приводит CPU time. Обе команды (и для Мэйпла и для Математики) без опций. Предварительно комп был очищен. Конечно, каждое сравнение хромает. Как было мною сказано, в целом Математика имеет большое преимущество перед Мэйплом в численных методах - и количественное, и качественное. Если Вас интересует что-то конкретное, пожалуйста, сформулируйте. Постараюсь проверить и сравнить.

-- 19.11.2016, 23:18 --

Вот еще пример.
Код:
NIntegrate[FractionalPart[y - x^2], {x, 0, 2}, {y, 0, 2}] // Timing
{0.25, -0.114382}

и
Код:
restart; st := time(); evalf(Int(frac(-x^2+y), [x = 0 .. 2, y = 0 .. 2]), 4); time()-st;
                            -0.1144
                            173.484

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

 
 
 
 Re: Есть ли будущее у Maple?
Сообщение20.11.2016, 00:20 
Markiyan Hirnyk в сообщении #1170160 писал(а):
Извините, Вы виляете.
Мне кажется, что я твержу одно и то же.
Markiyan Hirnyk в сообщении #1170160 писал(а):
Одна и та же задача численно решается двумя системами, решения совпадают, сравнивается время. При чем здесь методы и шаг?
При том, что задача простая и получить требуемый результат можно слишком легко. Предположим, что одна система решает все явным методом Эйлера первого порядка, а вторая - каким-нибудь предикторно-корректорным методом с переменным шагом, качество кода обоих систем одинаково. На простой задаче без изысков первая легко обгонит вторую, однако из этого никак не следует, что первая лучше.

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

И, кстати, все-таки абстрактный вопрос, уже не для сравнения... известно, какие интеграторы используют обе системы? Или, если они подбираются системой, можно ли выяснить результат подбора? А то я, конечно, несколько привередлив, но, на мой взгляд, без этой информации сравнивать вообще нечего - все очень плохо. :-)

 
 
 
 Беспредметный разговор
Сообщение20.11.2016, 00:53 
Pphantom в сообщении #1170181 писал(а):
Markiyan Hirnyk в сообщении #1170160 писал(а):
Извините, Вы виляете.
Мне кажется, что я твержу одно и то же.
Markiyan Hirnyk в сообщении #1170160 писал(а):
Одна и та же задача численно решается двумя системами, решения совпадают, сравнивается время. При чем здесь методы и шаг?
При том, что задача простая и получить требуемый результат можно слишком легко. Предположим, что одна система решает все явным методом Эйлера первого порядка, а вторая - каким-нибудь предикторно-корректорным методом с переменным шагом, качество кода обоих систем одинаково. На простой задаче без изысков первая легко обгонит вторую, однако из этого никак не следует, что первая лучше.

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

И, кстати, все-таки абстрактный вопрос, уже не для сравнения... известно, какие интеграторы используют обе системы? Или, если они подбираются системой, можно ли выяснить результат подбора? А то я, конечно, несколько привередлив, но, на мой взгляд, без этой информации сравнивать вообще нечего - все очень плохо. :-)

Все это беспредметный разговор, не имеющий смысла. Пожалуйста, четко сформулируйте конкретную задачу. Постараюсь сравнить.
PS. Неполное цитирование не производит положительное впечатлени. Приведу полностью
Цитата:
Извините, Вы виляете. Одна и та же задача численно решается двумя системами, решения совпадают, сравнивается время. При чем здесь методы и шаг?

 
 
 
 Re: Есть ли будущее у Maple?
Сообщение20.11.2016, 01:16 
Markiyan Hirnyk в сообщении #1170185 писал(а):
Все это беспредметный разговор, не имеющий смысла. Пожалуйста, четко сформулируйте конкретную задачу. Постараюсь сравнить.

Куда уж конкретнее-то... Ну ладно, пусть будет конкретнее. Получите численное решение уравнения
$$
\frac{d^2 x}{dt^2}-100\,(1-x^2)\,\frac{dx}{dt}+x=0.
$$
Начальные условия, например, $x(0)=2$, $x'(0)=0$. Досчитать надо до $t=20$.

 
 
 [ Сообщений: 30 ]  На страницу 1, 2  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group