Off: Как правильно аппроксимировать ф-цию?
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено demask 10 ноября 2003 г. 10:06

Заданы некие данные в виде маленькой таблицы аргумент-функция. Нужно аппроксимировать по ним функциональную зависимость. Вопрос - как сделать это правильно? Фишка в том, что значение данных заранее неизвестно, а интервал следования аргументов в этой таблице может быть очень неравномерным, т.е. например: 0,1,10,100,1000,5000,10000. При использовании кубических сплайнов (или более высоких степеней) получается полнейшая билеберда - в точках перегиба получаются огромные погрешности в сравнении с реальной функцией - а использовать кусочно-линейную интерполяцию не очень бы хотелось. Вот поясняющий кусок кода на матлабе (кстати, а чем в нем отличается csapi от spapi с параметром k=3?):

%% This sample builts function approximation using different
%% ways of interpolation

% initial lookup table that describes
% required functional dependence
x=[0 1 10 100 1000 5000 10000];
y=[2 2 3 4 4 5 6];
% perform interpolation
sp2=spapi(2,x,y);
sp3=spapi(3,x,y);
spc=csapi(x,y);
% plot graphics:
% blue - cubic splain with csapi()
% green - cubic splain with spapi()
% read - piecewise-linear interpolation
hold on
fnplt(spc,'b',2);
fnplt(sp3,'g',2);
fnplt(sp2,'r',2);
xxyy=[0 10000 0 8];
axis(xxyy)
plot(x,y,'o')
hold off


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

Ответы



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

E-mail: info@telesys.ru