Я как-то писал решение простейшего ОДУ, но при этом в уравнение еще входило показание одного датчика. Естественно, датчик шумит.
Я сравнивал метод Эйлера, методы Рунге-Кутты и Адамса — Башфорта (из Википедии) разных порядков.
Так вот метод Эйлера оказался лучше всех. Точнее, и, самое главное, использованные методы высокого порядка иногда расходились. Как раз из-за того, что в уравнении присутствует шумный сигнал датчика. Метод Эйлера отклонялся от решения, но всегда к нему возвращался.
Есть ли какие-то простые численные методы, учитывающие неидеальность реальных сигналов?
Здесь лучше смотреть в сторону фильтров. Классика — фильтр Калмана.
Но если датчик инерциальный, то по высоте (направлению g) ничего толкового не получится практически никогда.
то есть производную мы вычисляем, опираясь на текущее значение фазовой координаты. В неявном методе делают так
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). Для систем оду это приводит к необходимости вычислять матрицу Якоби. Но устойчивость метода для жестких систем коллосальна
Аааа, вспомнил.
Я неявные методы сразу отбросил, из-за того, что в решение входит метод Ньютона с неопределенным количеством итераций, а решение надо выдавать в реальном времени.
Может, я в чем-то не прав.
Моделирование динамических систем: численные методы решения ОДУ