[an error occurred while processing this directive]
Ответ (+)
(«Телесистемы»: Конференция «Цифровые сигнальные процессоры (DSP) и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено SM 30 июля 2003 г. 00:35
В ответ на: Если не очень накладно, могли бы Вы более подробно объяснить, как это сделать, или посоветуйте, пожалуйста, литературу или ссылки где можно почитать. отправлено msn 29 июля 2003 г. 23:50

Единственное, что могу так сразу посоветовать - это "spline toolbox" в матлабе. По ссылке найдутся доки к нему - там должна быть довольно подробно изложена математика происходящего. Да и смоделировать это дело и поиграться в матлабе - самое оно.

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

Примерно так (один из вариантов):

имеем точки a,b,c,d,e,f. Намерено начну с точки b (дальше объясню почему так) считаем приближенно первые производные для точек b и с. Как (c-a)/delta_x(c,a) и (d-b)/delta_x(d,b) соответственно. Считаем вторую производную в точке b равной нулю например. Далее рассчитываем такой полином Fbc(x) который: 1) проходит через точки b и c. 2) В точках b и c имеет соответствующие вычисенным 1-е производные. 3). В точке b имеет 2-ю производную, равную нулю. Далее. Берем следующие точки - b,c,d,e. Для них считаем первые производные (d-b)/delta_x(d,b) и (e-c)/delta_x(e,c). Вычисляем 2-ю производную Fbc в точке c. Рассчитываем такой полином Fcd(x) который: 1) проходит через точки c и d. 2) В точках c и d имеет соответствующие вычисенным 1-е производные. 3). В точке с имеет 2-ю производную, равную вычисленной для Fbc для этой точке. И так далее до конца данных.

Отдельный вопрос - это граничные условия. Для точки "a" посчитать первую производную не реально (ну, приблизительно, можно взять из рассчета (b-a)/delta_x(b,a)). Тем более 2-ю. По-этому их надо задать как-то изначально. Либо как константы какие-то, зная поведение интерполируемой функции в начале, либо как-то еще. Задав эти граничные условия появляется возможность вычислить полином для точек a и b (Fab). После этого при вычислении полинома Fbc можно уже взять правильную 2-ю производную.

Еще добавочка - производную для точки можно считать например не как (для точки b) (c-a)/delta_x(c,a) а как среднее между (b-a)/delta_x(b,a) и (c-b)/delta_x(c,b). В определенных случаях это дает хороший выигрыш. Думаю и в данном конкретном случае надо делать именно так.


Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru