Дискуссионный математический форумМатематический форум
Математический форум Math Help Planet

Обсуждение и решение задач по математике, физике, химии, экономике

Теоретический раздел
Часовой пояс: UTC + 3 часа [ Летнее время ]
новый онлайн-сервис
число, сумма и дата прописью

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: Моделирование движения небесных тел
СообщениеДобавлено: 30 дек 2020, 16:11 
Не в сети
Последняя инстанция
Аватара пользователя
Зарегистрирован:
15 мар 2016, 15:08
Сообщений: 9390
Cпасибо сказано: 122
Спасибо получено:
1726 раз в 1634 сообщениях
Очков репутации: 235

Добавить очки репутацииУменьшить очки репутации
Заинтересовался задачей моделированием движения небесных тел на компьютере. Пока запрограммировал метод Рунге-Кутта 2-го и 4-го порядка. На простейшем уравнении [math]\ddot{x}+x=0[/math] , которое преобразовал в систему [math]\dot{x} =y[/math] , [math]\dot{y} = -x[/math] , столкнулся с эффектом нарастания ошибок. Величина [math]x^2+y^2[/math] , которая по идее должна оставаться постоянной, в методе второго порядка за миллион итераций возросла в [math]10^{10}[/math] раз. Хотя в начале вычислений ошибка увеличивалась линейно. Видимо она растёт по закону [math]e^{ \alpha t}- \beta[/math] , что в начале вычислений воспринимается как линейный закон. Метод четвёртого порядка ведёт себя более прилично. Но всё равно за [math]10^7[/math] итераций ошибка составила [math]13[/math] процентов. Сейчас стоит вопрос о выборе метода, который сохраняет точность на протяжении большого количества итераций. Буду рад советам.

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Моделирование движения небесных тел
СообщениеДобавлено: 02 янв 2021, 11:08 
Не в сети
Последняя инстанция
Аватара пользователя
Зарегистрирован:
15 мар 2016, 15:08
Сообщений: 9390
Cпасибо сказано: 122
Спасибо получено:
1726 раз в 1634 сообщениях
Очков репутации: 235

Добавить очки репутацииУменьшить очки репутации
Тема почти мистическая. Явно витает ореол таинственности. Огромное разнообразие методов. И, главное, огромное разнообразие суждений об этих методах, которые противоречат друг другу. Я думаю, что это нормально для активно развивающейся области науки. Для введения в предмет можно взять книгу Бордовициной Т.В. "Современные численные методы в задачах небесной механики" и книги Авдюшева. Собственно по методам решения дифференциальных уравнений (для различных областей применения) есть книги Арушаняна, Батчера, Хайрера и множество других. Проиллюстрирую мистичность для начала на примере методов Рунге-Кутты. Бордовицина пишет, что метод Рунге-Кутты 4-го порядка недостаточен для задач небесной механики. Попробуем увеличить порядок метода. И тут возникает сложность, что для определения коэффициентов метода Рунге-Кутты нужно для начала составить некоторую систему нелинейных уравнений. Уже это непросто. Ну, допустим сделали это. После чего возникает гораздо более нетривиальная задача эту систему решить. Причём система может и не иметь решения. Тогда приходится увеличивать количество стадий метода. И система может иметь множество решений. В этом случае исследователь находит какое-то одно. Публикует его в виде некоторой матрицы коэффициентов. Хорошо, если без опечатков. А то всякое бывает. И тут возникает любопытный вопрос. А если у нас есть множество методов, которые зависит от нескольких параметров, как выбрать из них наилучший? И в каком смысле наилучший? Метод, который может выглядеть точнее, может показывать худшую устойчивость. И тут возникает мнение, что вообще явные методы демонстрируют плохую устойчивость и надо переходить к неявным методам. И тут возникает нетривиальный вопрос, а как организовать вычисления в неявных методах, чтобы они выполнялись не слишком долго. И тут возникает мнение, что вообще методы Рунге-Кутты в принципе весьма трудозатратные (по количеству вычислений) и не самые точные. И надо искать другие. И т. д. и т.п.

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Моделирование движения небесных тел
СообщениеДобавлено: 03 янв 2021, 19:39 
Не в сети
Гений
Зарегистрирован:
02 июн 2018, 08:50
Сообщений: 659
Cпасибо сказано: 21
Спасибо получено:
105 раз в 103 сообщениях
Очков репутации: 16

Добавить очки репутацииУменьшить очки репутации
А вопрос в жесткости задачи? Такое, как вариант, может наблюдаться при малых изменениях одной переменной одновременно с большими изменениями других. Явные методы на жестких задачах могут требовать очень большого числа шагов и при этом не давать необходимую точность, а при относительном крупном шаге "идти в разнос". Но очень большое число шагов как затратно по времени так и может отрицательно повлиять на точность решения по причине ограниченной "машинной точности" при работе с очень маленьким шагом. Неявные методы здесь работают лучше, есть неявные методы Рунге-Кутты высоких порядков, хотя не до бесконечности, методы Гира или Розенброка. Неявные методы малых порядков (1-2) менее точны, зато они А-устойчивы. Неявные методы сами по себе более затратны по вычислениям на каждом шаге, зато на жестких задачах не обязательно сильно уменьшать шаг и как результат можно обойтись на порядки меньшим числом шагов при решении всей задачи.

Задачи "средней" жесткости можно решать и явными способами простым увеличением количества шагов или, для сокращения времени вычислений, применять методы с переменным шагом интегрирования при которых на каждом шаге осуществляется контроль точности и, при необходимости, регулирование величины шага (на "жестких" участках шаг уменьшается, на "мягких" увеличивается). Иногда может помочь масштабирование задачи, без изменения самой системы ДУ.

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Моделирование движения небесных тел
СообщениеДобавлено: 04 янв 2021, 04:30 
Не в сети
Гений
Зарегистрирован:
02 июн 2018, 08:50
Сообщений: 659
Cпасибо сказано: 21
Спасибо получено:
105 раз в 103 сообщениях
Очков репутации: 16

Добавить очки репутацииУменьшить очки репутации
Попробовал решить Вашу систему явным методом РК-4.

[math]\left\{\!\begin{aligned}
& x'=y \\
& y'=-x
\end{aligned}\right.[/math]


Но вроде бы ошибки такой не получается. Но не знаю полного условия задачи которую Вы тестировали. Я на промежутке 0...100 прогнал при начальных условиях x = 1, y = 1. Если у Вас другие условия напишите, будет интересно изучить вопрос.

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Моделирование движения небесных тел
СообщениеДобавлено: 04 янв 2021, 16:01 
Не в сети
Последняя инстанция
Аватара пользователя
Зарегистрирован:
15 мар 2016, 15:08
Сообщений: 9390
Cпасибо сказано: 122
Спасибо получено:
1726 раз в 1634 сообщениях
Очков репутации: 235

Добавить очки репутацииУменьшить очки репутации
Emphatic18 писал(а):
Но вроде бы ошибки такой не получается. Но не знаю полного условия задачи которую Вы тестировали. Я на промежутке 0...100 прогнал при начальных условиях x = 1, y = 1. Если у Вас другие условия напишите, будет интересно изучить вопрос.

Я не думал, что кто-то попытается повторить мои вычисления. Поэтому не полностью их описал. У меня отрезок интегрирования был от 0 до 100000 с шагом 0.1. То есть, если эта модель соответствует круговому вращению лёгкого тела вокруг массивного неподвижного, то это получается 15915 оборотов и 62.8 шага на оборот (примерно). Начальные условия: [math]x(0)=1[/math] , [math]y(0)=0[/math] .
Emphatic18 писал(а):
А вопрос в жесткости задачи?

А тут вопрос для меня неясный. Понятно, что в той модели, что я привёл в первом посту, никакой жёсткости нет. А вот если моделировать реальное движение планет вокруг Солнца, то тут временами местами возникает жёсткость. Это когда две планеты сближаются между собой. Жёсткость тут не очень сильная. Но со временем она накапливается. Если моделировать солнечную систему на миллионы лет вперёд, то оказывается за эти миллионы лет возникает непредсказуемость поведения. И малые ошибки в начальных данных вырастают за эти миллионы лет в ошибки гигантские. И хотелось бы, чтобы численные методы интегрирования несильно бы портили тут картину (если это вообще возможно). Пока думаю про методы Рунге-Кутты явные и неявные и не только 4-го порядка. Дело в том, что это одношаговые методы и поэтому обладают массой удобств. Они сами стартуют. В любой метод времени можно изменить размер шага как угодно. Более того, этот размер шага может быть разный для каждой планеты. То есть, если две планеты близко подходят к друг к другу, мы можем дополнительно промоделировать взаимодействие только этих двух планет с более мелким шагом и более высокой точностью. Мы можем слегка модифицировать метод с целью соблюдения физических законов сохранения на каждом шаге. Мы можем контролировать точность вычисления. Как со всем этим обстоит в других методах, я не знаю. Но их не сбрасываю со счетов и буду постепенно с ними знакомиться.

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Моделирование движения небесных тел
СообщениеДобавлено: 05 янв 2021, 07:49 
Не в сети
Гений
Зарегистрирован:
02 июн 2018, 08:50
Сообщений: 659
Cпасибо сказано: 21
Спасибо получено:
105 раз в 103 сообщениях
Очков репутации: 16

Добавить очки репутацииУменьшить очки репутации
Чуть позже позанимаюсь подробнее, но пока увидел вот что. Помимо суммы квадратов переменных, которая должна быть равна 1 для данного примера, нужно смотреть еще и на приходящую к концу вычислений фазу, она от накопления погрешности может "уезжать" на столь больших промежутках интегрирования, а это значит что планета окажется не в том месте. Поэтому тестировать лучше для окончания диапазона кратного [math]\pi[/math] . Тогда при правильном решении на выходе должно получаться [math]X=0[/math], [math]Y=1[/math].

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Моделирование движения небесных тел
СообщениеДобавлено: 12 янв 2021, 11:46 
Не в сети
Гений
Зарегистрирован:
02 июн 2018, 08:50
Сообщений: 659
Cпасибо сказано: 21
Спасибо получено:
105 раз в 103 сообщениях
Очков репутации: 16

Добавить очки репутацииУменьшить очки репутации
Попалась лецкия о численных методах решения систем ДУ, если интересно посмотрите (если еще не видели).

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

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Моделирование движения небесных тел
СообщениеДобавлено: 28 фев 2021, 21:31 
Не в сети
Профи
Аватара пользователя
Зарегистрирован:
13 янв 2020, 18:36
Сообщений: 367
Откуда: Cambridge
Cпасибо сказано: 110
Спасибо получено:
104 раз в 102 сообщениях
Очков репутации: 3

Добавить очки репутацииУменьшить очки репутации
searcher
В принципе, можно сразу запрогать уравнение Ньютона и ковыряться в методе интегрирования. В книжке Бородовиценной все не так просто. Рунге - Кутта 4-го порядка очень хорошо считает движение небесных тел, с небольшими ошибками, но взяв шаг в 0.01 вы обрекли себя на накопление ошибок. Слишком крутой шаг вы взяли. Я бы брал от 30 секунд. А если интересна эта тема то есть книжка П. Даффет-Смит, Практическая астрономия с калькулятором и Оливер Монтенбрук, Томас Пфлегер, Астрономия на персональном компьютере.
Для более точных расчетов лучше использовать эфемериды, на сайте JPL NASA лежат, с точностью до угловых секунд.

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Моделирование движения небесных тел
СообщениеДобавлено: 01 мар 2021, 22:21 
Не в сети
Последняя инстанция
Аватара пользователя
Зарегистрирован:
15 мар 2016, 15:08
Сообщений: 9390
Cпасибо сказано: 122
Спасибо получено:
1726 раз в 1634 сообщениях
Очков репутации: 235

Добавить очки репутацииУменьшить очки репутации
Elphen Lied
Спасибо за информацию! Книги как-то раньше закачивал. Надо будет посмотреть.

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

 Похожие темы   Автор   Ответы   Просмотры   Последнее сообщение 
Моделирование процесса

в форуме Исследование операций и Задачи оптимизации

yuta_86

4

372

21 дек 2015, 16:00

Имитационное моделирование

в форуме Теория вероятностей

igoom

0

233

24 дек 2017, 21:49

Математическое моделирование

в форуме Математическая статистика и Эконометрика

Seilor

1

234

30 апр 2020, 00:03

Моделирование сознания

в форуме Объявления участников Форума

filoverum

0

370

26 июн 2015, 10:40

Математическое моделирование

в форуме Исследование операций и Задачи оптимизации

gvazartin

1

227

30 ноя 2020, 16:27

Имитационное моделирование

в форуме Исследование операций и Задачи оптимизации

Back

0

228

23 окт 2018, 03:10

Математическое моделирование СМО

в форуме Теория вероятностей

mymla

2

401

31 мар 2016, 10:19

Математическое моделирование

в форуме Численные методы

olga20101995

1

181

27 фев 2020, 17:06

Математическое моделирование

в форуме Электричество и Магнетизм

cuttheknot

1

498

27 мар 2021, 15:43

Моделирование RC- цепи

в форуме Электричество и Магнетизм

BratSinot

0

434

19 ноя 2017, 00:18


Часовой пояс: UTC + 3 часа [ Летнее время ]



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

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


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

Найти:
Перейти:  

Яндекс.Метрика

Copyright © 2010-2023 MathHelpPlanet.com. All rights reserved