2014 dxdy logo

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

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


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


Посмотреть правила форума



Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Метод конечных разностей (?) для скоростей и ускорений
Сообщение13.04.2025, 11:08 


26/08/13
67
У меня есть таблица координат тела $x_i$ в равноудалённые (с шагом $\Delta t$) моменты времени $t_i$.
Задача заключается в том, чтобы найти скорости $v_i$ и ускорения $a_i$.

Правильно ли я понимаю, что лучше всего искать скорости в виде $v_i=\frac{x_{i+1}-x_{i-1}}{2\Delta t}$?
И тогда ускорения можно выразить аналогичным способом: $a_i = \frac{v_{i+1}-v_{i-1}}{2\Delta t}$.

Или есть какие-то более точные методики?

 Профиль  
                  
 
 Re: Метод конечных разностей (?) для скоростей и ускорений
Сообщение13.04.2025, 12:04 
Заслуженный участник


07/08/23
1413
Если вы хотите $v_i$ выражать только через $x_{i - 1}$, $x_i$ и $x_{i + 1}$, тогда ваша формула для скорости самая точная и она даёт честную производную для многочленов второй степени. Но вообще можно использовать и более далёкие $x_i$, просто вычисления станут сложнее, а точность повысится при дополнительных условиях на функцию (условия в виде оценок на старшие производные).

Ускорение у вас выражено через $x_{i - 2}$, ..., $x_{i + 2}$, а среди формул с такими переменными есть и получше. Если использовать только значения $x_{i - 1}$, $x_i$, $x_{i + 1}$, то надо брать $a_i = \frac{x_{i - 1} - 2 x_i + x_{i + 1}}{\Delta t^2}$. Для функции $x = t^4$ ваша формула даст $a_0 = 8 \Delta t^2$, моя — $a_0 = 2 \Delta t^2$, а точное значение $a_0 = 0$, так что моя формула в $4$ раза точнее.

 Профиль  
                  
 
 Re: Метод конечных разностей (?) для скоростей и ускорений
Сообщение13.04.2025, 13:17 
Заслуженный участник
Аватара пользователя


11/03/08
10204
Москва
Значения точные? Уравнения движения тела известны (с точностью до коэффициентов)?

 Профиль  
                  
 
 Re: Метод конечных разностей (?) для скоростей и ускорений
Сообщение13.04.2025, 13:31 
Аватара пользователя


26/05/12
1835
приходит весна?
paladin17 в сообщении #1681962 писал(а):
Или есть какие-то более точные методики?
Есть!

Самый правильный подход будет заключаться в том, чтобы зная, по какому закону двигается тело, зафитить значения координат соответствующей функцией и найти параметры этой функции. Затем просто подставить эти параметры и время в функции скорости и ускорения. Например, есть груз с пружиной на стержне. Есть масса, есть жёсткость, есть трение (вязкое или сухое), через эти параметры описывается траектория (синус или синус на затухающую экспоненту или куски синуса, сшитые вместе) и точки фитятся функцией, задающей эту траекторию (она может быть кусочно-заданной, как например, в случае сухого трения). Одно очень важное достоинство этого метода в том, что когда измерения координат содержат случайные погрешности, то при фите их влияние взаимно уничтожится. Не до конца, разумеется, но чем больше точек зафичено при фиксированном уровне шума, тем точнее будут искомые параметры системы, и, соответственно, находимые затем величины скорости и ускорения.

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

 Профиль  
                  
 
 Re: Метод конечных разностей (?) для скоростей и ускорений
Сообщение13.04.2025, 13:48 
Заслуженный участник
Аватара пользователя


01/09/13
4796
B@R5uk в сообщении #1681982 писал(а):
А именно, выдумать свой закон движения, который будет подходить под имеющиеся данные.

Потрясающий алгоритм

 Профиль  
                  
 
 Re: Метод конечных разностей (?) для скоростей и ускорений
Сообщение13.04.2025, 14:01 
Аватара пользователя


26/05/12
1835
приходит весна?
Geen в сообщении #1681983 писал(а):
Потрясающий алгоритм
Разумеется! ТС, собственно, ему и следует, когда пишет формулы:
paladin17 в сообщении #1681962 писал(а):
$$v_i=\frac{x_{i+1}-x_{i-1}}{2\Delta t}$$ $$a_i = \frac{v_{i+1}-v_{i-1}}{2\Delta t}$$
Или предложенная ниже тоже, для ускорения:
dgwuqtj в сообщении #1681968 писал(а):
$$a_i = \frac{x_{i - 1} - 2 x_i + x_{i + 1}}{\Delta t^2}$$
Закон движения в данном случае "тело в точке движется так, как если бы оно двигалось по параболе (в переменных время-координата), проходящей через эту точку и две соседние". Абсолютно выдуманный из головы закон движения.

 Профиль  
                  
 
 Re: Метод конечных разностей (?) для скоростей и ускорений
Сообщение13.04.2025, 14:24 
Заслуженный участник


07/08/23
1413
Вообще есть же учебники по численным методам, там всё это где-то ближе к началу разбирается.

 Профиль  
                  
 
 Re: Метод конечных разностей (?) для скоростей и ускорений
Сообщение13.04.2025, 14:47 
Заслуженный участник
Аватара пользователя


26/01/14
4941
paladin17 в сообщении #1681962 писал(а):
У меня есть таблица координат тела $x_i$ в равноудалённые (с шагом $\Delta t$) моменты времени $t_i$.
Задача заключается в том, чтобы найти скорости $v_i$ и ускорения $a_i$.

Правильно ли я понимаю, что лучше всего искать скорости в виде $v_i=\frac{x_{i+1}-x_{i-1}}{2\Delta t}$?
Тут есть проблема: обычно координаты известны приближённо. И если при этом шаг $\Delta t$ слишком мал (а он в знаменателе), то погрешности в $x_{i+1}$ и $x_{i-1}$ на него поделятся и станут очень большими. Если так случится, то Вы это увидите, нарисовав график найденной таким образом скорости: она будет прыгать туда-сюда и выглядеть неправдоподобно. Тогда есть смысл "разредить" данные: взять шаг $\Delta t$ побольше, в разы больше того, который в Ваших данных.

Если известна погрешность данных и оценка на модуль ускорения (это при нахождении скорости; при нахождении ускорения понадобится оценка как минимум на третью производную) - тогда можно выбирать $\Delta t$ не на глазок, а по формуле. Почитайте про регуляризацию численного дифференцирования.

См., например:
Бахвалов, Жидков, Кобельков. Численные методы, глава 2 "Интерполяция и численное дифференцирование", два параграфа про численное дифференцирование ближе к концу главы;
Калиткин. Численные методы, глава 3 "Численное дифференцирование"

 Профиль  
                  
 
 Re: Метод конечных разностей (?) для скоростей и ускорений
Сообщение13.04.2025, 14:56 
Заслуженный участник
Аватара пользователя


01/09/13
4796
B@R5uk в сообщении #1681986 писал(а):
ТС, собственно, ему и следует

Конечно нет. В процитированных фрагментах речь идёт о представлении произвольной функции рядом. И никто не выдумывает ничего.

 Профиль  
                  
 
 Re: Метод конечных разностей (?) для скоростей и ускорений
Сообщение13.04.2025, 15:17 
Аватара пользователя


26/05/12
1835
приходит весна?
Mikhail_K в сообщении #1681992 писал(а):
Тогда есть смысл "разредить" данные: взять шаг $\Delta t$ побольше, в разы больше того, который в Ваших данных.
Нужно не прореживать данные, а фитить достаточно большое число точек полиномом/сплайном достаточно малой степени/числом параметров. Тогда шум усреднится, а ключевые особенности движения останутся. В книгах про численное дифференцирование и регуляризацию про это должны рассказывать по идее. Впрочем, ничего не побьёт грамотно составленную физическую модель системы, в которой наблюдается движение.

 Профиль  
                  
 
 Re: Метод конечных разностей (?) для скоростей и ускорений
Сообщение13.04.2025, 15:33 
Заслуженный участник
Аватара пользователя


26/01/14
4941
B@R5uk в сообщении #1681996 писал(а):
Нужно не прореживать данные, а фитить достаточно большое число точек полиномом/сплайном достаточно малой степени/числом параметров.
Не знаю, что такое "фитить", но при малом шаге $\Delta t$ и заметных погрешностях проводить полином любой степени через известные точки подряд не имеет смысла. Во всяком случае, если проводить его точно (а сплайн - это именно точное проведение графика многочлена через несколько соседних точек). Представьте последовательность точек, "вихляющуюся" туда-сюда из-за погрешностей, или идущую "ступеньками" из-за округлений. Нет смысла проводить через них график многочлена точно. Если проводить, то с пропусками нескольких точек. Конечно, возможны и ситуации, когда шаг $\Delta t$ из исходных данных и так хорош и увеличивать его не нужно.

 Профиль  
                  
 
 Re: Метод конечных разностей (?) для скоростей и ускорений
Сообщение13.04.2025, 15:44 


27/08/16
11640
paladin17 в сообщении #1681962 писал(а):
Или есть какие-то более точные методики?
Есть, но, во-первых, нужна модель динамики объекта, во-вторых, нужна модель шума, приводящего к ошибкам измерений. В общем случае просто неизвестных параметров, перебираете всё пространство допустимых параметров модели и шума, максимизируя вероятность появления у вас именно такой выборки. Обычно такой полный перебор невозможен, да и нет в наличии точной динамической модели, поэтому придумывают разные упрощения, хорошо работающие в тех или иных случаях.

 Профиль  
                  
 
 Re: Метод конечных разностей (?) для скоростей и ускорений
Сообщение13.04.2025, 15:59 
Аватара пользователя


26/05/12
1835
приходит весна?
Mikhail_K в сообщении #1681998 писал(а):
Не знаю, что такое "фитить"
Жаргонный термин из обработки результатов измерений. Происходит от английского to fit a curve. Это действие НЕ ЯВЛЯЕТСЯ проведением полинома (или какой либо другой кривой) в точности через точки. Как правило минимизируются суммы квадратов отклонений или другие функции (в зависимости от задачи, данных, характера шума, желаемой точности и допустимой трудоёмкости решения), а количество параметров кривой значительно меньше числа точек.
Mikhail_K в сообщении #1681998 писал(а):
а сплайн - это именно точное проведение графика многочлена через несколько соседних точек
Нет, это НЕ именно! Всё зависит от того, как вы сделаете. Сплайн — это функция с аргументом(ами) и параметрами. Ничто не мешает выбрать количество параметров значительно меньше числа точек и зафитить им как и любой другой функцией.

-- 13.04.2025, 16:06 --

Mikhail_K в сообщении #1681998 писал(а):
через известные точки подряд не имеет смысла
Когда имеется шум, проводить в точности не имеет смысла вообще (ну кроме случая, когда деваться больше некуда). И не важно, как они удалены. Ещё раз повторюсь: подгон (фит) кривой с малым числом параметров под большое число точек с шумом этот шум усредняет и выделяет из него искомые особенности движения (или другую полезную информацию). Иметь при этом адекватную модель системы очень желательно, но не обязательно.

 Профиль  
                  
 
 Re: Метод конечных разностей (?) для скоростей и ускорений
Сообщение13.04.2025, 16:12 


27/08/16
11640
B@R5uk в сообщении #1682007 писал(а):
Сплайн — это функция с аргументом(ами) и параметрами.
Сплайн - это изначально металлическая гибкая линейка, зафиксированная в отдельных точках, энергия упругой деформации которой минимизировалась и давала гладкую кривую, проходящую через эти точки. Если рассматривать сплайны в более широком смысле, хорошо бы просто этот смысл сначала определить, а не спорить о нём.

 Профиль  
                  
 
 Re: Метод конечных разностей (?) для скоростей и ускорений
Сообщение13.04.2025, 16:12 


26/08/13
67
dgwuqtj в сообщении #1681968 писал(а):
Если вы хотите $v_i$ выражать только через $x_{i - 1}$, $x_i$ и $x_{i + 1}$, тогда ваша формула для скорости самая точная и она даёт честную производную для многочленов второй степени. Но вообще можно использовать и более далёкие $x_i$, просто вычисления станут сложнее, а точность повысится при дополнительных условиях на функцию (условия в виде оценок на старшие производные).

Благодарю. А как это сделать? С более далёкими, я имею в виду.
Если это есть в литературе, которую уже посоветовали, то, наверное, сам найду.
Евгений Машеров в сообщении #1681980 писал(а):
Значения точные? Уравнения движения тела известны (с точностью до коэффициентов)?

Значения точные, но уравнения движения неизвестны.
Mikhail_K в сообщении #1681992 писал(а):
См., например:
Бахвалов, Жидков, Кобельков. Численные методы, глава 2 "Интерполяция и численное дифференцирование", два параграфа про численное дифференцирование ближе к концу главы;
Калиткин. Численные методы, глава 3 "Численное дифференцирование"

Большое спасибо! Гляну, что там пишут.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу 1, 2  След.

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



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

Сейчас этот форум просматривают: confabulez


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

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