Ошибка в построении массива решений дифференциальной системы

Форум пользователей пакета Maple

Модератор: Admin

Nusha341
Сообщения: 5
Зарегистрирован: Ср мар 06, 2019 10:32 am

Ошибка в построении массива решений дифференциальной системы

Сообщение Nusha341 » Вс мар 31, 2019 1:59 am

Добрый день!
Подскажите, пожалуйста, что я делаю не так.
Решаю систему дифференциальных уравнений. dsol:=dsolve({sys,ic}),numeric,method=ck45,maxfun=500000);
Задаю период, количество точек, шаг
for i from 0 to N do ds:=dsol(h*i); T[i]:=rhs(ds[1]); X[i]:=rhs(ds[2]); Y[i]:=rhs(ds[3]) od;
Все работает. Все точки выводятся
Следующая задача вывести точки через период.
M:=30;-количество периодов
L:=M*T;
for k from 0 to L do ds:=dsol(T*k); T[k]:=rhs(ds[1]); X[k]:=rhs(ds[2]); Y[k]:=rhs(ds[3]) od;
Ошибка
Error, final value in for loop must be numeric or character
L у меня число(2/5*pi). Непонятно, что исправить, чтобы заработало
Спасибо!

Markiyan Hirnyk
Сообщения: 1343
Зарегистрирован: Вс дек 04, 2011 11:07 pm

Re: Ошибка в построении массива решений дифференциальной системы

Сообщение Markiyan Hirnyk » Вс мар 31, 2019 10:04 am

Вот упрощенная версия вашей проблемы и один из возможных способов ее решения:

Код: Выделить всё

restart; L := 20*Pi; for k from 0 to L do print(k) end do;
Error, final value in for loop must be numeric or character
L := floor(20*Pi); for k from 0 to L do print(k) end do;

Nusha341
Сообщения: 5
Зарегистрирован: Ср мар 06, 2019 10:32 am

Re: Ошибка в построении массива решений дифференциальной системы

Сообщение Nusha341 » Вс мар 31, 2019 11:25 am

Спасибо за совет
Действительно работает. Но это очень сильная погрешность
Я в итоге по вашему примеру просто заменила Pi=3,14. Погрешность меньше, но тоже работает.
Спасибо!

Markiyan Hirnyk
Сообщения: 1343
Зарегистрирован: Вс дек 04, 2011 11:07 pm

Re: Ошибка в построении массива решений дифференциальной системы

Сообщение Markiyan Hirnyk » Вс мар 31, 2019 2:12 pm

Nusha341, пожалуйста, объясните
Но это очень сильная погрешность

Nusha341
Сообщения: 5
Зарегистрирован: Ср мар 06, 2019 10:32 am

Re: Ошибка в построении массива решений дифференциальной системы

Сообщение Nusha341 » Ср апр 17, 2019 10:49 pm

Я грубо сказала, но получается, что мы вместо, например, 5.67 получим 6. А когда у нас цифры колебаются от 5 до 6, то точность до целых будет не показательна

Markiyan Hirnyk
Сообщения: 1343
Зарегистрирован: Вс дек 04, 2011 11:07 pm

Re: Ошибка в построении массива решений дифференциальной системы

Сообщение Markiyan Hirnyk » Чт апр 18, 2019 6:36 am

Nusha341, Вы пишете
что мы вместо, например, 5.67 получим 6.

Во первых, целая часть 5.67 равна 5, а не 6. Далее, в Мэйпле

Код: Выделить всё

sum(f(n), n = 1 .. 5.67);
                f(1) + f(2) + f(3) + f(4) + f(5)
sum(f(n), n = 1 .. 5);
                f(1) + f(2) + f(3) + f(4) + f(5)

Если у Вас еще имеются недоуменные вопросы, пожалуйста, задавайте их.