2014 dxdy logo

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

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




Начать новую тему Ответить на тему На страницу Пред.  1, 2
 
 Ван дер Поль
Сообщение20.11.2016, 10:41 


11/07/16
825
Пожалуйста. C Мэйплом:
Код:
restart; sol := CodeTools:-Usage(dsolve({((D@@2)(x))(t)-(100*(1-x(t)^2))*(D(x))(t)+x(t) = 0, x(0) = 2, (D(x))(0) = 0}, x(t), numeric, range = 0 .. 21), iterations = 100);
memory used=0.54MiB, alloc change=59.57MiB, cpu time=23.12ms, real time=23.35ms, gc time=781.25us
proc(x_rkf45)  ...  end;
sol(20);
                                         
         [t = 20., x(t) = HFloat(1.8582344900479963),
                                   

            d                                 
           --- x(t) = HFloat(-0.007575005557763678)]
            dt                                   

Теперь с Математикой:
Код:
ClearAll[s]; s =  NDSolve[{x''[t] - 100*(1 - x[t]^2)*x'[t] == 0, x[0] == 2,   x'[0] == 0}, x[t], {t, 0, 21}] // RepeatedTiming
{0.0022, {{x[t] -> InterpolatingFunction[{{0., 21.}}, <>][t]}}}

Поскольку затрудняюсь извлечь решение для $t=20.0$ из $s$ с ходу (а в воскресное утро искать в справках как-то не хочется), то перерешаем без засечки времени:
Код:
ClearAll[u, s]; u = NDSolve[{x''[t] - 100*(1 - x[t]^2)*x'[t] == 0, x[0] == 2,  x'[0] == 0}, x[t], {t, 0, 21}]
{{x[t] -> InterpolatingFunction[{{0., 21.}}, <>][t]}}
x[t] /. u /. t -> 20.0
{2.}

Понятно, что точное решение $x(t)=2$. Еще вопросы есть?

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


09/05/12
25179
Markiyan Hirnyk в сообщении #1170247 писал(а):
Понятно, что точное решение $x(t)=2$. Еще вопросы есть?
Вы намеренно даете Mathematica более простые задачи? :wink: Так, знаете ли, можно доказать что угодно. :D

Кстати, пожалуй, интервал времени был маловат, до интересного места Maple не добралась (а Mathematica и не могла). Можно поменять коэффициент $100$ на $20$, а конечной точкой взять $t=40$.

 Профиль  
                  
 
 Re: Есть ли будущее у Maple?
Сообщение20.11.2016, 15:04 


11/07/16
825
Pphantom в сообщении #1170267 писал(а):
Markiyan Hirnyk в сообщении #1170247 писал(а):
Понятно, что точное решение $x(t)=2$. Еще вопросы есть?
Вы намеренно даете Mathematica более простые задачи? :wink: Так, знаете ли, можно доказать что угодно. :D

Пожалуйста, ясно изложите ваши претензии.

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


09/05/12
25179
Markiyan Hirnyk в сообщении #1170304 писал(а):
Пожалуйста, ясно изложите ваши претензии.
А это так не видно? Берем первое сообщение с численным интегрированием ОДУ:
Markiyan Hirnyk в сообщении #1170069 писал(а):
Код:
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]}}}

Математика в три раза быстрее.
Maple решает уравнение
$$ \frac{dy}{dx}+x\,y^2 = 1, $$
Mathematica - уравнение
$$ \frac{dy}{dx}+y^2 = 1.$$
Из результатов делаются далеко идущие выводы. Далее решается задача про осциллятор ван дер Поля:
Markiyan Hirnyk в сообщении #1170247 писал(а):
Пожалуйста. C Мэйплом:
Код:
restart; sol := CodeTools:-Usage(dsolve({((D@@2)(x))(t)-(100*(1-x(t)^2))*(D(x))(t)+x(t) = 0, x(0) = 2, (D(x))(0) = 0}, x(t), numeric, range = 0 .. 21), iterations = 100);
memory used=0.54MiB, alloc change=59.57MiB, cpu time=23.12ms, real time=23.35ms, gc time=781.25us
proc(x_rkf45)  ...  end;
sol(20);
                                         
         [t = 20., x(t) = HFloat(1.8582344900479963),
                                   

            d                                 
           --- x(t) = HFloat(-0.007575005557763678)]
            dt                                   

Теперь с Математикой:
Код:
ClearAll[s]; s =  NDSolve[{x''[t] - 100*(1 - x[t]^2)*x'[t] == 0, x[0] == 2,   x'[0] == 0}, x[t], {t, 0, 21}] // RepeatedTiming
{0.0022, {{x[t] -> InterpolatingFunction[{{0., 21.}}, <>][t]}}}


однако Maple достается правильное уравнение
$$\frac{d^2 x}{dt^2}-100\,(1-x^2)\,\frac{dx}{dt}+x=0,$$
а Mathematica - опять упрощенное
$$\frac{d^2 x}{dt^2}-100\,(1-x^2)\,\frac{dx}{dt}=0.$$

Один раз ошибиться, безусловно, может каждый. Но два раза подряд, в одну и ту же сторону, удобную для "обоснования" Вашей позиции... это, пожалуй, уже слишком много, не находите?

 Профиль  
                  
 
 Виноват, исправляюсь
Сообщение20.11.2016, 15:33 


11/07/16
825
Впредь постараюсь быть внимательнее. Вот исправленные данные для Математики:
Код:
ClearAll[s]; s = NDSolve[{x''[t] - 100*(1 - x[t]^2)*x'[t] + x[t] == 0, x[0] == 2,     x'[0] == 0}, x[t], {t, 0, 21}] // RepeatedTiming
{0.0045, {{x[t] -> InterpolatingFunction[{{0., 21.}}, <>][t]}}}
ClearAll[u, s]; u = NDSolve[{x''[t] - 100*(1 - x[t]^2)*x'[t] + x[t] == 0, x[0] == 2,   x'[0] == 0}, x[t], {t, 0, 21}]
{{x[t] -> InterpolatingFunction[{{0., 21.}}, <>][t]}}
x[t] /. u /. t -> 20.0
{1.85823}

Все равно Математика в несколько раз быстрее.

-- 20.11.2016, 14:46 --

Цитата:
Кстати, пожалуй, интервал времени был маловат, до интересного места Maple не добралась (а Mathematica и не могла). Можно поменять коэффициент $100$ на $20$, а конечной точкой взять $t=40$.

Код:
restart; sol := CodeTools:-Usage(dsolve({((D@@2)(x))(t)-(20*(1-x(t)^2))*(D(x))(t)+x(t) = 0, x(0) = 2, (D(x))(0) = 0}, x(t), numeric, range = 0 .. 41), iterations = 100);
memory used=297.32KiB, alloc change=44.34MiB, cpu time=16.09ms, real time=35.45ms, gc time=0ns
proc(x_rkf45)  ...  end;
sol(40);
                                         
         [t = 40., x(t) = HFloat(1.8078111787164883),                                         

            d                                   
           --- x(t) = HFloat(-0.03981528821224333)]
            dt                                   

Код:

ClearAll[s]; s =  NDSolve[{x''[t] - 20*(1 - x[t]^2)*x'[t] + x[t] == 0, x[0] == 2,     x'[0] == 0}, x[t], {t, 0, 41}] // RepeatedTiming
{0.0084, {{x[t] -> InterpolatingFunction[{{0., 41.}}, <>][t]}}}
ClearAll[u, s]; u = NDSolve[{x''[t] - 20*(1 - x[t]^2)*x'[t] + x[t] == 0, x[0] == 2,   x'[0] == 0}, x[t], {t, 0, 41}];
x[t] /. u /. t -> 40.0
{1.80781}

 Профиль  
                  
 
 Re: Есть ли будущее у Maple?
Сообщение20.11.2016, 15:52 


28/07/13
165
А число значащих цифр ответа можете уравнять?

 Профиль  
                  
 
 Re: Есть ли будущее у Maple?
Сообщение20.11.2016, 16:08 


11/07/16
825
user14284 в сообщении #1170320 писал(а):
А число значащих цифр ответа можете уравнять?

Код:
t = 20., x(t) = HFloat(1.8582344900479963

Эти цифры где-то после $1.85823$ бессодержательны и не нужны. Математика их не выводит. Насколько я понимаю, это сделано намеренно. Увеличить число цифр в результате Математики можно, но зачем?

 Профиль  
                  
 
 Re: Есть ли будущее у Maple?
Сообщение20.11.2016, 16:22 


28/07/13
165
Я предвидел, что вы уравняете количество цифр, откинув "лишние" их у мэпла, но в глубине души всё ещё верил, что с этой темой не всё так плохо.

 Профиль  
                  
 
 Re: Есть ли будущее у Maple?
Сообщение20.11.2016, 17:04 


11/07/16
825
user14284 в сообщении #1170334 писал(а):
Я предвидел, что вы уравняете количество цифр, откинув "лишние" их у мэпла, но в глубине души всё ещё верил, что с этой темой не всё так плохо.
Уважаемый user14284, не теряйте веру в человечество:
Код:
ClearAll[u, s]; u = NDSolve[{x''[t] -   20.0000000000000000000000000000*(1 - x[t]^2)*x'[t] + x[t] ==  0.0000000000000000000000000000000,   x[0] == 2.00000000000000000000000000000,    x'[0] == 0.00000000000000000000000}, x[t], {t, 0, 41}, AccuracyGoal -> 15, PrecisionGoal -> 15, WorkingPrecision -> 20];
x[t] /. u /. t -> 40.0000000000000000000000
{1.8078108538040247197}

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


28/07/13
165
Продавец БАДов 80 уровня. Я уже не дождусь чистого эксперимента. Ну и ладно.

 Профиль  
                  
 
 Недостойное поведение
Сообщение20.11.2016, 19:41 


11/07/16
825
user14284 в сообщении #1170344 писал(а):
Продавец БАДов 80 уровня. Я уже не дождусь чистого эксперимента. Ну и ладно.

Обратился с жалобой на ваше недостойное поведение.

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


27/04/09
28128
Можно не писать 20.0000000000000000000000000000, вместо этого написав просто 20, оно само должно там внутри сконвертироваться в число выбранной точности. Если даже я не прав в последнем, можно сконвертировать все константы в нормально выглядящем выражении в константы указанной точности с помощью SetPrecision/SetAccuracy, плюс ещё есть записи digits`prec и digits``acc.

 Профиль  
                  
 
 Re: Есть ли будущее у Maple?
Сообщение20.11.2016, 21:32 
Админ форума
Аватара пользователя


19/03/10
8952
user14284 в сообщении #1170344 писал(а):
Продавец БАДов 80 уровня.
 !  user14284, замечание за бессодержательное сообщение и личные выпады.

 Профиль  
                  
 
 Есть ли будущее у Maple?
Сообщение20.11.2016, 21:45 


28/07/13
165

(Оффтоп)

Toucan в сообщении #1170415 писал(а):
замечание за бессодержательное сообщение и личные выпады.

Я лишь контатировал факт, что ТС, вопреки прямым и неоднократным указаниям публики, избегает проведения чистого эксперимента, тем самым бездоказательно утверждая о превосходстве одного пакета над другим. То, что я мог обидеть чувства одного человека, назвав его продавцом БАДов, конечно, является преступлением значительно большим, чем ввод в заблуждения всей аудитории данной ветки. Каюсь.

 Профиль  
                  
 
 Re: Есть ли будущее у Maple?
Сообщение20.11.2016, 21:57 
Админ форума
Аватара пользователя


19/03/10
8952
 !  user14284, замечание за пререкания с модератором в тематическом разделе.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 30 ]  На страницу Пред.  1, 2

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



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

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


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

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