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, Супермодераторы



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

Сейчас этот форум просматривают: DariaRychenkova


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

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