усреднения решения системы дифференциальных уравнений

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

Модератор: Admin

fenix85
Сообщения: 141
Зарегистрирован: Вт мар 01, 2011 12:06 pm

усреднения решения системы дифференциальных уравнений

Сообщение fenix85 » Чт янв 04, 2018 1:20 pm

Суть моей проблемы заключается в том, что есть осциляционные решения диф. уравнений и ети осцилляции надо погасить, то есть найти функцию средних значений между осцилляциями. Есть идея сделать это методом наименьших квадратов - найти соответствующие кривые и их значение в нуле и затем подстановкой в начальные условия СДУ получить решения без осцилляций. Но беда в том, что я не знаю как применить метод наименьших квадратов к существующим чисельнным решениям диф. уравнений з помощью with(CurveFitting)-:LeastSquares. Буду очень благодарен за любую помощь. Добавляю файл, решения к которым надо применить усреднения обозначении красным цветом.
Вложения
search.rar
(48.81 КБ) 18 скачиваний

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

Re: усреднения решения системы дифференциальных уравнений

Сообщение Markiyan Hirnyk » Чт янв 04, 2018 8:21 pm

Можно применить усреднение, например, таким образом:

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

plot([x+2*sin(x), (int(t+2*sin(t), t = x-3 .. x+3))/(2*3)], x = 3 .. 25);

fenix85
Сообщения: 141
Зарегистрирован: Вт мар 01, 2011 12:06 pm

Re: усреднения решения системы дифференциальных уравнений

Сообщение fenix85 » Пт янв 05, 2018 1:47 pm

это вы построили для x + 2 * sin (x), спасибо. Но в откуда мне знать какая кривая будет усреднения для решения диф. уравнений? тем более что в перспективе я буду менять коэффициенты начальных условий и форма кривых будет постоянно меняться. Мне известно, чтоwith(CurveFitting)-:LeastSquares сам предлагает кривую для аппроксимации решения https://www.maplesoft.com/support/help/maple/view.aspx?path=CurveFitting%2FLeastSquares.
Нужно например построить такую кривую для Z7 (x), с возможностью получать доступ к значениям усреднения кривой в точке, чтобы получить значение в нуле и затем его подставлять в начальные условия для вторичного интегрирования

fenix85
Сообщения: 141
Зарегистрирован: Вт мар 01, 2011 12:06 pm

Re: усреднения решения системы дифференциальных уравнений

Сообщение fenix85 » Пт янв 05, 2018 4:29 pm

нужно каким-то образом превратить решение диф. уравненний в массивы точек и передавать массив в LeastSquares так как в примере на странице документации [[x1,y1], [x2,y2], ..., [xn,yn]]. я пока не нашол как это можно зделать((

Kitonum
Сообщения: 2040
Зарегистрирован: Ср дек 31, 2008 1:55 pm
Откуда: г. Пенза

Re: усреднения решения системы дифференциальных уравнений

Сообщение Kitonum » Пт янв 05, 2018 7:10 pm

...нужно каким-то образом превратить решение диф. уравненний в массивы точек ...

Это можно сделать как в примере ниже. Из численного решения извлечён список точек [x, y(x)] , где x изменяется от 0 до 5 с шагом 0.1 :
restart;
Eq:=diff(y(x),x)=x^2+y(x)*sin(x):
ics:=y(0)=1:
Sol:=dsolve({Eq, ics}, numeric);
y:=x->rhs(Sol(x)[2]);
L:=[seq([x,y(x)], x=0..5, 0.1)];

Если вы используете опцию output=listprocedure , то функцию y задавайте так:
y:=eval(y(x), Sol);

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

Re: усреднения решения системы дифференциальных уравнений

Сообщение Markiyan Hirnyk » Пт янв 05, 2018 8:22 pm

Kitonum, проще

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

Interface(rtablesize = 200):
 Eq := diff(y(x), x) = x^2+y(x)*sin(x):
 ics := y(0) = 1:
 Sol := dsolve({Eq, ics}, numeric, output = Array([seq(j, j = 0 .. 10, .1)]))

fenix85
Сообщения: 141
Зарегистрирован: Вт мар 01, 2011 12:06 pm

Re: усреднения решения системы дифференциальных уравнений

Сообщение fenix85 » Пт янв 05, 2018 9:30 pm

уважаемый Китонум у меня к сожалению не получается то что вы предложили чтобы построить график ... (((
Вложения
new_1.rar
(35.52 КБ) 19 скачиваний

Kitonum
Сообщения: 2040
Зарегистрирован: Ср дек 31, 2008 1:55 pm
Откуда: г. Пенза

Re: усреднения решения системы дифференциальных уравнений

Сообщение Kitonum » Пт янв 05, 2018 10:24 pm

Вот исправленная версия
new_1_new.rar
(64.62 КБ) 21 скачивание


PS. Команда LearstSquares по умолчанию сглаживает линейной функцией. Но у вас тренд не линейный, а параболический. Поэтому замените своё w на
w := LeastSquares(L, x, curve = a*x^2+b*x+c);

fenix85
Сообщения: 141
Зарегистрирован: Вт мар 01, 2011 12:06 pm

Re: усреднения решения системы дифференциальных уравнений

Сообщение fenix85 » Сб янв 06, 2018 12:25 pm

Большое спасибо!!! Правда там кубический многочлен хорошо приближает срединную функцию. Но как взять значение срединной функции в нуле? Z5c(0) не проходит...
Вложения
new_2.rar
(45.05 КБ) 25 скачиваний

fenix85
Сообщения: 141
Зарегистрирован: Вт мар 01, 2011 12:06 pm

Re: усреднения решения системы дифференциальных уравнений

Сообщение fenix85 » Сб янв 06, 2018 3:49 pm

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

>  z5c := t -> Z5c(t)
>  z5c(0);
Error, (in Z5c) too many levels of recursion

Kitonum
Сообщения: 2040
Зарегистрирован: Ср дек 31, 2008 1:55 pm
Откуда: г. Пенза

Re: усреднения решения системы дифференциальных уравнений

Сообщение Kitonum » Сб янв 06, 2018 8:27 pm

fenix85 писал(а):Источник цитаты

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

>  z5c := t -> Z5c(t)
>  z5c(0);
Error, (in Z5c) too many levels of recursion

Проблема в том, что у Вас Z5c определено как выражение, а не как процедура. Поэтому Maple не понимает, что вместо x надо подставить 0. Напишите так:
z5c := t->eval(Z5c, x = t) ;
z5c(0);

fenix85
Сообщения: 141
Зарегистрирован: Вт мар 01, 2011 12:06 pm

Re: усреднения решения системы дифференциальных уравнений

Сообщение fenix85 » Пн янв 08, 2018 2:32 pm

Спасибо! Чтобы посмотреть на результат всех стараний нужно повторно решить систему диф. уравнений но уже с новыми усредненными данными по скоростях и новыми константами Е и Ф. Нужно как-то подставить новые константы в систему, у меня система осталась со старыми константами. Не подскажите как это сделать?
Вложения
new_3.rar
(119.2 КБ) 19 скачиваний

Kitonum
Сообщения: 2040
Зарегистрирован: Ср дек 31, 2008 1:55 pm
Откуда: г. Пенза

Re: усреднения решения системы дифференциальных уравнений

Сообщение Kitonum » Пн янв 08, 2018 3:00 pm

Далее сами во всём этом разбирайтесь. Я уже подсказал Вам достаточно.