Комментарии 11
Отличный пример «на пальцах» для начинающих!
Я как-то писал решение простейшего ОДУ, но при этом в уравнение еще входило показание одного датчика. Естественно, датчик шумит.
Я сравнивал метод Эйлера, методы Рунге-Кутты и Адамса — Башфорта (из Википедии) разных порядков.
Так вот метод Эйлера оказался лучше всех. Точнее, и, самое главное, использованные методы высокого порядка иногда расходились. Как раз из-за того, что в уравнении присутствует шумный сигнал датчика. Метод Эйлера отклонялся от решения, но всегда к нему возвращался.
Есть ли какие-то простые численные методы, учитывающие неидеальность реальных сигналов?
Я сравнивал метод Эйлера, методы Рунге-Кутты и Адамса — Башфорта (из Википедии) разных порядков.
Так вот метод Эйлера оказался лучше всех. Точнее, и, самое главное, использованные методы высокого порядка иногда расходились. Как раз из-за того, что в уравнении присутствует шумный сигнал датчика. Метод Эйлера отклонялся от решения, но всегда к нему возвращался.
Есть ли какие-то простые численные методы, учитывающие неидеальность реальных сигналов?
Здесь лучше смотреть в сторону фильтров. Классика — фильтр Калмана.
Но если датчик инерциальный, то по высоте (направлению g) ничего толкового не получится практически никогда.
Но если датчик инерциальный, то по высоте (направлению g) ничего толкового не получится практически никогда.
Может это неявный Эйлер был?
что такое неявный Эйлер?
Когда уже сделают формулы в комментах…
Явный метод Эйлера выглядит так
y(i+1) = y(i) + f[y(i), t(i)] * dt
то есть производную мы вычисляем, опираясь на текущее значение фазовой координаты. В неявном методе делают так
y(i+1) = y(i) + f[y(i+1), t(i+1)] * dt
теперь неизвестное значение фазовой координаты достать намного тяжелее, так как оно входит как аргумент правой часть оду. Приходится решать методом Ньютона нелинейное уравнение
y(i+1) — y(i) — f[y(i+1), t(i+1)] * dt = 0
относительно y(i+1). Для систем оду это приводит к необходимости вычислять матрицу Якоби. Но устойчивость метода для жестких систем коллосальна
Явный метод Эйлера выглядит так
y(i+1) = y(i) + f[y(i), t(i)] * dt
то есть производную мы вычисляем, опираясь на текущее значение фазовой координаты. В неявном методе делают так
y(i+1) = y(i) + f[y(i+1), t(i+1)] * dt
теперь неизвестное значение фазовой координаты достать намного тяжелее, так как оно входит как аргумент правой часть оду. Приходится решать методом Ньютона нелинейное уравнение
y(i+1) — y(i) — f[y(i+1), t(i+1)] * dt = 0
относительно y(i+1). Для систем оду это приводит к необходимости вычислять матрицу Якоби. Но устойчивость метода для жестких систем коллосальна
Очень познавательно
хех
Надеюсь, в последующих выпусках будут фигурировать стохастические методы, а не хеллоуворлд от мира численного моделирования:Dдля студентов 1 курса
Про методы повышения точности без уменьшения шага будет статья?
Еще не читал, но после прочтения первой части добавил вторую в закладки. Спасибо.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Моделирование динамических систем: численные методы решения ОДУ