2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Дискретная производная
Сообщение19.03.2015, 13:32 


12/01/10
87
Вопрос к знатокам методов вычислений.

Я сделал класс на C++ для работы с матрицами, заточенный на обработку информации, поступающей от различных внешних устройств (датчики и т.п.). Если кому интересно, то вот этот класс: DMatrix.

В компьютер поступает поток информации, в каждый тик времени из значений параметров формируется новое уравнение, то есть строка матрицы плюс свободный член.
А я хочу, чтобы это было дифференциальное уравнение, которое надо разрешать относительно его коэффициентов. То есть каждый раз я считаю все нужные мне производные и помещаю их значения в матрицы.

Вопрос в том, как правильно считать дискретные производные.

Может, кто подскажет правильный подход, что почитать и т.д.?

 Профиль  
                  
 
 Re: Дискретная производная
Сообщение19.03.2015, 13:49 
Заслуженный участник


09/05/12
25179
oleg777 в сообщении #992430 писал(а):
то есть взятие n-ой производной получается эквивалентно взятию первой производной на менее подробной решетке, то есть с меньшей частотой дискретизации. Что-то я сомневаюсь, что это правильно.
Правильно сомневаетесь. Во-первых, уберите двойку из знаменателя (откуда она там взялась?), во-вторых, корректно раскройте скобки.

 Профиль  
                  
 
 Re: Дискретная производная
Сообщение19.03.2015, 14:09 


05/09/12
2587
Строите интерполяционный полином по любому (лучше нечетному) количеству точек, берете его производную аналитически в центральной точке, приводите подобные/упрощаете выражение и получаете красивые формулы для производных любых порядков при любой желаемой ширине окна (количеству точек). Там получится линейная фильтрация - линейная комбинация отсчетов окна с зеркально равными или инверсными коэффициентами относительно центральной точки (при равномерной сетке, что у вас, судя по всему и есть). И да, лучше считать ее в предположении единичного интервала дискретизации, получая для этого случая числовые коэффициенты фильтра, а потом просто нормировать результат.

 Профиль  
                  
 
 Re: Дискретная производная
Сообщение19.03.2015, 14:32 


12/01/10
87
Pphantom в сообщении #992438 писал(а):
Правильно сомневаетесь. Во-первых, уберите двойку из знаменателя (откуда она там взялась?), во-вторых, корректно раскройте скобки.


Очень извиняюсь, ерунду написал. Вообще-то это для меня не характерно, как-то второпях навалял. Формулу стер, вопрос остался.

-- Чт мар 19, 2015 14:36:07 --

_Ivana в сообщении #992447 писал(а):
Строите интерполяционный полином по любому (лучше нечетному) количеству точек, берете его производную аналитически в центральной точке, приводите подобные/упрощаете выражение и получаете красивые формулы для производных любых порядков при любой желаемой ширине окна (количеству точек). Там получится линейная фильтрация - линейная комбинация отсчетов окна с зеркально равными или инверсными коэффициентами относительно центральной точки (при равномерной сетке, что у вас, судя по всему и есть). И да, лучше считать ее в предположении единичного интервала дискретизации, получая для этого случая числовые коэффициенты фильтра, а потом просто нормировать результат.


Спасибо за наводку, а литературу не подскажете?

И еще: а что, если не полиномами аппроксимировать, а чем-то еще? Гармониками не лучше будет? Или дробями Паде? Рассмотрю все предложения :)

 Профиль  
                  
 
 Re: Дискретная производная
Сообщение19.03.2015, 14:56 
Заслуженный участник


09/05/12
25179
oleg777 в сообщении #992455 писал(а):
И еще: а что, если не полиномами аппроксимировать, а чем-то еще? Гармониками не лучше будет? Или дробями Паде? Рассмотрю все предложения :)
Для этого нужно знать характер зависимости. В общем случае ответ только один - лучше обойтись без численного дифференцирования, если это возможно. :D

 Профиль  
                  
 
 Re: Дискретная производная
Сообщение19.03.2015, 19:18 
Заслуженный участник
Аватара пользователя


04/09/14
5011
ФТИ им. Иоффе СПб
Как писали выше, лучше обойтись, поскольку численное дифференцирование - некорректная задача. Если без этого никак, то есть такой экзотический способ (иногда помогает, особенно, если фильтр хороший придумать). $$\frac{d f(x)}{d x}=\int \frac{dk}{2\pi} \exp(-ikx)ikF(k),$$где $F(k)=\int dx \exp(ikx)f(x)$. Реализуется на быстрых преобразованиях Фурье.

 Профиль  
                  
 
 Re: Дискретная производная
Сообщение19.03.2015, 20:09 


12/01/10
87
Pphantom,
Большое спасибо за подробный ответ!

-- Чт мар 19, 2015 20:29:55 --

Amon,

очень интересно. У меня есть класс, который я сам написал, он здорово молотит БПФ. Поэтому хочется хоть немного поподробнее.

 Профиль  
                  
 
 Re: Дискретная производная
Сообщение19.03.2015, 20:55 
Модератор
Аватара пользователя


16/02/11
3788
Бурашево
_Ivana в сообщении #992447 писал(а):
любых порядков
Любых порядков лучше не надо. Начиная с третьей производной цифровые дифференциаторы становятся очень чувствительны к точности задания коэффициентов.

oleg777 в сообщении #992455 писал(а):
Гармониками не лучше будет?
Зависит всё от того, что считать лучшим. Если сравнивать АЧХ дифференцирующего фильтра с АЧХ идеального дифференциатора, то гармониками не лучше. Книги, которые вас интересуют, имеют название "Цифровая обработка сигналов" и связанные с ним названия. Вот тут http://dsp-book.narod.ru/books.html их много. Мне нравится первая в списке.

 Профиль  
                  
 
 Re: Дискретная производная
Сообщение15.05.2015, 18:37 


27/03/15
3
_Ivana в сообщении #992447 писал(а):
Строите интерполяционный полином по любому (лучше нечетному) количеству точек, берете его производную аналитически в центральной точке, приводите подобные/упрощаете выражение и получаете красивые формулы для производных любых порядков при любой желаемой ширине окна (количеству точек). Там получится линейная фильтрация - линейная комбинация отсчетов окна с зеркально равными или инверсными коэффициентами относительно центральной точки (при равномерной сетке, что у вас, судя по всему и есть). И да, лучше считать ее в предположении единичного интервала дискретизации, получая для этого случая числовые коэффициенты фильтра, а потом просто нормировать результат.


В некоторых случаях разумно вместо полинома строить аппроксимацию Паде. То есть отношение двух полиномов. Это хорошо, если Ваш процесс - не слишком гладкий.

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

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



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

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


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

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