Математический форум Math Help Planet http://mathhelpplanet.com/ |
|
Метод Рунге-Кутта с автоматическим шагом http://mathhelpplanet.com/viewtopic.php?f=64&t=71434 |
Страница 1 из 1 |
Автор: | Susanna Gaybaryan [ 15 окт 2020, 16:48 ] |
Заголовок сообщения: | Метод Рунге-Кутта с автоматическим шагом |
Доброго времени суток) Получила задание, решить уравнение методом Рунге - Кутта 3го порядка с автоматическим выбором шага. Графики строила на python и шаг задавала сама: import math Помогите, пожалуйста, разобраться с автоматическим выбором шага) |
Автор: | searcher [ 15 окт 2020, 17:26 ] |
Заголовок сообщения: | Re: Метод Рунге-Кутта с автоматическим шагом |
Susanna Gaybaryan писал(а): Помогите, пожалуйста, разобраться с автоматическим выбором шага) К сожалению не знаком с Питоном и в вашей программе ничего не понимаю. Выбор шага можно сделать следующим образом. На каждом шаге выполнять итерации двумя версиями алгоритмов. Скажем Рунге-Кутты 4-го порядка и 5-го. Если их результаты сильно отличаются, то мы шаг уменьшаем. Если результаты хорошо совпадают, то мы можем шаг увеличить. Детали (что такое "хорошо совпадают" и т.д.) продумайте сами. Ну, или в специальных книгах смотрите. |
Автор: | lexus666 [ 15 окт 2020, 17:31 ] |
Заголовок сообщения: | Re: Метод Рунге-Кутта с автоматическим шагом |
Не силен в численных методах, но мне кажется, что шаг нужно выбирать по скорости изменения подынтегральной функции. Т.е. отталкиваться нужно от производной функции. Если производная мала, то шаг можно сделать побольше, в противном случае уменьшить. |
Автор: | Emphatic18 [ 16 окт 2020, 06:33 ] |
Заголовок сообщения: | Re: Метод Рунге-Кутта с автоматическим шагом |
Susanna Gaybaryan, я думаю Вам будет полезно скачать книгу "О.Б.Арушанян, С.Ф.Залеткин, Решение систем обыкновенных дифференциальных уравнений одношаговыми методами. Учебное пособие, МГУ, 2018", в этой книге много материала как раз по вашей теме. Для контроля точности лучше использовать так называемый контрольный член, значение которого после сравнивается с допустимой погрешностью, либо используется мера погрешности. В зависимости от результата сравнения шаг либо уменьшается, либо увеличивается. Уменьшение или увеличесние шага задается в определенных границах. Таким образом по ходу решения получается переменный шаг. Уменьшение или увеличение шага можно делать по разным схемам, в книге все есть. По ссылке можете посмотреть пример реализации такого решения для системы ОДУ методом РК 4-го порядка точности. Здесь для контроля точности вычисляется мера погрешности, причем покомпонентно т.е. для каждого уравнения системы индивидуально. Правда код на фортране (и программа немного не закончена, но она работает). А это пример результата ее работы: ▼ результат
|
Автор: | Emphatic18 [ 16 окт 2020, 07:53 ] |
Заголовок сообщения: | Re: Метод Рунге-Кутта с автоматическим шагом |
А это решение Вашего уравнения при eps=1e-10 и начальном шаге 1e-3 ▼ решение
|
Автор: | Emphatic18 [ 19 окт 2020, 20:18 ] |
Заголовок сообщения: | Re: Метод Рунге-Кутта с автоматическим шагом |
В процессе тестирования и доработки в программе исправлен ряд позиций. Боле правильный результат решения вашего уравнения. Шаговая точность принята 1e-9, начальный шаг 5е-3. Y ( 1) = 4.4810693E-01 Неявный метод трапеций на том же числе шагов дает очень близкий результат, правда шаг здесь равномерный, а у РК судя по общему числу итераций 277, шаг был изменен примерно в середине участка интегрирования. Решение = 4.4810684E-01 на 1000 шагах результат тот же, но это все же метод 2-го порядка (зато по моему на том же числе шагов он дает более точный результат чем явный метод трапеций, надо бы дополнительно протестить). Решение = 4.4810693E-01 |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |