2014 dxdy logo

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

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




На страницу Пред.  1, 2
 
 Ван дер Поль
Сообщение20.11.2016, 10:41 
Пожалуйста. 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 
Markiyan Hirnyk в сообщении #1170247 писал(а):
Понятно, что точное решение $x(t)=2$. Еще вопросы есть?
Вы намеренно даете Mathematica более простые задачи? :wink: Так, знаете ли, можно доказать что угодно. :D

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

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

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

 
 
 
 Re: Есть ли будущее у Maple?
Сообщение20.11.2016, 15:13 
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 
Впредь постараюсь быть внимательнее. Вот исправленные данные для Математики:
Код:
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 
А число значащих цифр ответа можете уравнять?

 
 
 
 Re: Есть ли будущее у Maple?
Сообщение20.11.2016, 16:08 
user14284 в сообщении #1170320 писал(а):
А число значащих цифр ответа можете уравнять?

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

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

 
 
 
 Re: Есть ли будущее у Maple?
Сообщение20.11.2016, 16:22 
Я предвидел, что вы уравняете количество цифр, откинув "лишние" их у мэпла, но в глубине души всё ещё верил, что с этой темой не всё так плохо.

 
 
 
 Re: Есть ли будущее у Maple?
Сообщение20.11.2016, 17:04 
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 
Продавец БАДов 80 уровня. Я уже не дождусь чистого эксперимента. Ну и ладно.

 
 
 
 Недостойное поведение
Сообщение20.11.2016, 19:41 
user14284 в сообщении #1170344 писал(а):
Продавец БАДов 80 уровня. Я уже не дождусь чистого эксперимента. Ну и ладно.

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

 
 
 
 Re: Есть ли будущее у Maple?
Сообщение20.11.2016, 21:24 
Можно не писать 20.0000000000000000000000000000, вместо этого написав просто 20, оно само должно там внутри сконвертироваться в число выбранной точности. Если даже я не прав в последнем, можно сконвертировать все константы в нормально выглядящем выражении в константы указанной точности с помощью SetPrecision/SetAccuracy, плюс ещё есть записи digits`prec и digits``acc.

 
 
 
 Re: Есть ли будущее у Maple?
Сообщение20.11.2016, 21:32 
Аватара пользователя
user14284 в сообщении #1170344 писал(а):
Продавец БАДов 80 уровня.
 !  user14284, замечание за бессодержательное сообщение и личные выпады.

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

(Оффтоп)

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

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

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

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


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