2014 dxdy logo

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

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




Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Есть ли будущее у Maple?
Сообщение15.11.2016, 11:40 


11/07/16
801
В настоящее время имеются две общематематические компьютерные системы - 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 
Заслуженный участник


27/06/08
4058
Волгоград
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 
Заслуженный участник


25/02/11
1786
Имхо, есть будущее у Maple. По крайней мере, на ближайшие годы. Если уж MathCad жив... Вот о чьем будущем вопрос кажется более актуальным :-)

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

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

 Профиль  
                  
 
 Re: Есть ли будущее у Maple?
Сообщение19.11.2016, 13:53 


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

 Профиль  
                  
 
 Re: Есть ли будущее у Maple?
Сообщение19.11.2016, 14:51 


11/07/16
801
Спасибо всем за отзывы. Пока отреагирую на часть одного из них.
Цитата:
Многие численные вещи вроде интегралов, ОДУ и прочего 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 
Заслуженный участник


09/05/12
25179
Markiyan Hirnyk в сообщении #1170069 писал(а):
Математика в три раза быстрее.
Вообще говоря, в обоих случаях не указан шаг интегрирования, по-видимому, обе системы выбирают его из каких-то своих соображений. Следовательно, он может оказаться разным, а тогда сравнение быстродействия не имеет смысла.

 Профиль  
                  
 
 Какое значение имеет шаг?
Сообщение19.11.2016, 15:36 


11/07/16
801
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 
Заслуженный участник


09/05/12
25179
Markiyan Hirnyk в сообщении #1170079 писал(а):
Результаты совпадают (Во втором случае можно показать больше цифр.).
Только отсюда совпадение шагов интегрирования (более того, даже используемых методов) никак не следует.

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

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

 Профиль  
                  
 
 Re: Есть ли будущее у Maple?
Сообщение19.11.2016, 23:09 


11/07/16
801
Цитата:
Кстати, не знаю, заметили ли Вы или нет, но при первом сравнении две системы решали разные задачи. 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 
Заслуженный участник


25/02/11
1786
Markiyan Hirnyk в сообщении #1170069 писал(а):
Давайте проверим на моем компе:

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

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

 Профиль  
                  
 
 Re: Есть ли будущее у Maple?
Сообщение19.11.2016, 23:18 


28/07/13
165
Markiyan Hirnyk в сообщении #1170160 писал(а):
Извините, Вы виляете. Одна и та же задача численно решается двумя системами, решения совпадают, сравнивается время. При чем здесь методы и шаг?

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

 Профиль  
                  
 
 Re: Есть ли будущее у Maple?
Сообщение19.11.2016, 23:40 


11/07/16
801
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 
Заслуженный участник


09/05/12
25179
Markiyan Hirnyk в сообщении #1170160 писал(а):
Извините, Вы виляете.
Мне кажется, что я твержу одно и то же.
Markiyan Hirnyk в сообщении #1170160 писал(а):
Одна и та же задача численно решается двумя системами, решения совпадают, сравнивается время. При чем здесь методы и шаг?
При том, что задача простая и получить требуемый результат можно слишком легко. Предположим, что одна система решает все явным методом Эйлера первого порядка, а вторая - каким-нибудь предикторно-корректорным методом с переменным шагом, качество кода обоих систем одинаково. На простой задаче без изысков первая легко обгонит вторую, однако из этого никак не следует, что первая лучше.

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

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

 Профиль  
                  
 
 Беспредметный разговор
Сообщение20.11.2016, 00:53 


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

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

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

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

 Профиль  
                  
 
 Re: Есть ли будущее у Maple?
Сообщение20.11.2016, 01:16 
Заслуженный участник


09/05/12
25179
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  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group