2014 dxdy logo

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

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


Правила форума


В этом разделе нельзя создавать новые темы.

Если Вы хотите задать новый вопрос, то не дописывайте его в существующую тему, а создайте новую в корневом разделе "Помогите решить/разобраться (М)".

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

Не ищите на этом форуме халяву, правила запрещают участникам публиковать готовые решения стандартных учебных задач. Автор вопроса обязан привести свои попытки решения и указать конкретные затруднения.

Обязательно просмотрите тему Правила данного раздела, иначе Ваша тема может быть удалена или перемещена в Карантин, а Вы так и не узнаете, почему.



Начать новую тему Ответить на тему
 
 Осцилляции в решении ОДУ численным методом
Сообщение21.02.2008, 00:59 
Заслуженный участник
Аватара пользователя


20/01/06
1037
Хотел сначала написать в комп. раздел. Я решаю систему ОДУ методом Рунге-Кутта 4го порядка. Решение себя ведет довольно странно. Гладкая кривая при больших значениях аргумента начинает быстро осциллировать. Решение как бы является суммой ожидаемого решения и какой-то синусоиды, амплитуда которой растет с ростом аргумента. Период синусоиды не равен шагу сетки, он на порядок больше. Сетка довольно густая. Как с этим бороться? Что можно почитать?

 Профиль  
                  
 
 
Сообщение21.02.2008, 01:27 
Заслуженный участник


22/01/07
605
Ну, первое, что приходит в голову, если "ожидаемое" решение имеет вид, скажем, $\cos(x)$, а общее - $C_1 \cos(x)+C_2 x \sin(x)$, то маленькие погрешности в начале могут дать заметное при больших временах второе слагаемое.

 Профиль  
                  
 
 Re: Осцилляции в решении ОДУ численным методом
Сообщение21.02.2008, 07:54 
Заслуженный участник
Аватара пользователя


11/04/07
1352
Москва
Freude писал(а):
Период синусоиды не равен шагу сетки, он на порядок больше. Сетка довольно густая. Как с этим бороться? Что можно почитать?


Если Вы сами писали Рунге-Кутта, то процедуру необходимо протестировать на линейном гармоническом осцилляторе и убедиться, что до времени в несколько десятков периодов амплитуда и фаза совпадают с теоретическим решением.

Если У Вас шаг по времени много меньше отмеченной Вами осцилляции, то Ваши уравнения содержат колебательную часть и ее нужно дополнительно исследовать. В нелинейных колебаниях нередко встречаются колебательные процессы, проявляющиеся не сразу, а при определенном сочетании параметров. Попробуйте линеаризовать Вашу систему уравнений и аналитически выделить хотя бы собственную частоту.

 Профиль  
                  
 
 
Сообщение21.02.2008, 21:48 
Заслуженный участник


09/01/06
800
А может решение так и должно себя вести?

Систему в студию!

 Профиль  
                  
 
 
Сообщение22.02.2008, 19:36 
Заслуженный участник
Аватара пользователя


20/01/06
1037
Спасибо за дельные советы. Метод действительно я сам писал. Как и советовал Zai, опробовал его на гармоническом осцилляторе - работает нормально. Приводить систему не хочу в виду ее громоздкости (200 уравнений все-таки и не все из них однотипные). В ходе численных экспериментов заметил, что осцилляции исчезают при увеличении шага сетки по времени. До сих пор не пойму что это такое. Самое обидное, что я думал, что сетка достаточно густая - 900 тыс. узлов! А нет, теперь довел ее до млн.

 Профиль  
                  
 
 
Сообщение23.02.2008, 08:07 
Заслуженный участник
Аватара пользователя


11/04/07
1352
Москва
Freude писал(а):
В ходе численных экспериментов заметил, что осцилляции исчезают при увеличении шага сетки по времени.


Для шага по времени существует ограничение по минимальному значению. Причин этому может быть несколько. Одна из них следующая.
Пусть уравнение имеет вид:
$ \dot x =1.0
$x(0)=1.0
Интегрируем явно
$x(t+ \Delta t)=x(t)+1.0*\Delta t
Мантисса представления числа с плавающей точкой на компьютере при двойной точности ограничена 16 значащими цифрами. При шаге меньшем $10^{-16} у Вас
численное решение не будет изменяться.

 Профиль  
                  
 
 
Сообщение23.02.2008, 12:22 
Заслуженный участник
Аватара пользователя


20/01/06
1037
Это не причина. Всегда можно увеличить точность, используя дополнительную память. Другими словами, густая сетка может свидетельствовать не о большой точности, а о том, что отрезок, на котором происходит интегрирование уравнений, очень большой (мы рассматриваем большой временной интервал). Какое ограничение обычно на числа сверху? Т.е. какое самое большое число может обработать машина?

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Модераторы: Модераторы Математики, Супермодераторы



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

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


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

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