![]() КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Интерполяция
На практике интерполяцию выполняют, как правило, тогда когда имеется выборка отсчетов функции 3.1. Кусочная интерполяция Одномерная табличная интерполяция может быть выполнена функцией interp1, позволяющей решать задачу несколькими методами. Обращение к ней имеет следующий вид: yi=interp1(x,y,xi, метод); где х и у – векторы значений узлов таблицы и соответствующие им значения моделируемой функции; xi – вектор узлов интерполяции; метод – строковая константа, задающая метод интерполяции: 'nearest' – ступенчатая, 'linear' – линейная (принята по умолчанию), 'cubic' – кубическая, 'spline' – кубическими сплайнами. Функция не позволяет получить аналитические выражения интерполяционных функций (интерполянт), выдает только их значения между узлами таблицы. Пример. Зададим синусоиду шестью точками и проведем кубическую интерполяцию на более мелкой сетке (рис. 5.3). x=1:6; y=sin(x); xi=1:0.5:6; xh=1:0.1:6;% абсциссы для рисования плавных кривых model_cubic=interp1(x,y,xh,'cubic'); yh=sin(xh);% плавная кривая синусоиды yc=interp1(x,y,xi,'cubic'); plot(xh,model_cubic,'k-.',xh,yh,'m-',xi,yc,'r*',x,y,'ko'), grid legend('модель','sin(x)') Рис. 5.3. Кусочная кубическая интерполяция синусоиды Полученная модель лишь отдаленно напоминает синусоиду. Качество моделирования можно улучшить, задав большее количество узлов.
3.2. Кубические сплайны Кубические сплайны – это сопряженные (плавно стыкующиеся друг с другом) многочлены третьей степени. Интерполяцию кубическими сплайнами осуществляет функция spline. Обращение уi= spline(x,y,xi); интерполирует значение вектора y, заданного при значениях аргумента, представленных в векторе х, и выдает значения моделирующей функции в виде вектора уi при значениях аргумента, заданных вектором хi. Если вектор х не указан, по умолчанию принимается, что он имеет такую же длину, как и вектор у, и любой его элемент равен порядковому номеру этого элемента. Шаг по х и по хi не обязательно должен быть постоянным (в частном случае хi может быть и скаляром). Моделируемая функция f (x) может быть задана и аналитически. Функция spline не позволяет получить аналитические выражения интерполяционных сплайнов (их коэффициенты). Но обращение pp=spline(x,y); возвращает так называемую вспомогательную рр-форму сплайнов. Коэффициенты же кубических сплайнов можно узнать, обратившись к функции unmkpp [br,coefs]=unmkpp(pp); В результате в векторе coefs будут размещены коэффициенты сплайнов, в br – разбиения по х. Значения кусочно-гладких сплайнов для заданных значений аргумента вычисляет функция ppval ppval(pp,xi). Пример. Зададим синусоиду шестью точками и проведем интерполяцию кубическими сплайнами на более мелкой сетке. x=1:6; y=sin(x); xi=1:0.5:6; yi=spline(x,y,xi) xh=1:0.1:6;% абсциссы для рисования плавных кривых yh=sin(xh);% кривая синусоиды pp=spline(x,y); [br,coefs]=unmkpp(pp); modelsin=ppval(pp,xh); plot(x,y,'ko',xi,yi,'r*',xh,yh,'m-',xh,modelsin,'k-'), grid В результате работы программы будут получены одиннадцать отсчетов интерполяционных сплайнов: шесть из них будут совпадать с табличными значениями, пять – получены для промежуточных точек х = {1,5 2,5 3,5 4,5 5,5} ys = 0.8415 1.0194 0.9093 0.5902 0.1411 -0.3497 -0.7568 -0.9676 -0.9589 -0.7298 -0.2794 В частности для xi = 1,5 получено значение уi = 1,0194. Решение (рис.5.4) демонстрирует погрешность интерполяции: значение Рис. 5.4. Интерполяция кубическими сплайнами
3.3. Интерполяция произвольной нелинейной функцией Интерполяция произвольной нелинейной функцией может быть выполнена с помощью fsolve, решающей систему нелинейных уравнений. Обращение к ней имеет вид: coef=fsolve(mfile,x0); где coef – искомые параметры интерполирующей функции; х0 – начальное приближение к coef; mfile – указатель на имя m-файла, описывающего систему уравнений. Пример: пусть неизвестная функция задана таблицей значений
Необходимо получить аналитическое выражение для этой функции. Выберем вид интерполяционной функции, воспользовавшись графоаналитическим методом – построим исходные точки. График функции в виде точек таблицы похож на степенную функцию (рис. 5.6). Выберем в качестве интерполяционной функцию вида Рис. 5.6. Интерполяция степенной функцией
Подставим в систему соответствующие значения х и у из таблицы. Запишем m-функцию function system=sysur(coef) global y x system=[coef(1)*coef(2)^x(1)+coef(3)-y(1); coef(1)*coef(2)^x(3)+coef(3)-y(3); coef(1)*coef(2)^x(5)+coef(3)-y(5)]; и файл-сценарий global y x; x=1:5; y=[6.5 20 53.5 167 473]; x0=[1; 1; 1;]; coef=fsolve(@sysur,x0) В результате выполнения скрипта с m-функцией получим следующий вектор коэффициентов моделирующей функции coef = 1.9850 2.9876 0.5698 Следовательно, интерполяционная функция будет иметь вид у м=1,9850·2,9876 х +0,5698. Моделирующая кривая у м(х) в обязательном порядке пройдет через первую, третью и пятую точки таблицы, по которым были определены ее параметры, но необязательно через вторую и четвертую (рис. 5.6). Примечание: по правилам использования стандартной функции fsolve m-функция, описывающая решаемую систему уравнений, должна иметь один формальный параметр – искомые коэффициенты. Для пересылки в файл-функцию sysur значений векторов х и у в головной программе и в функции объявляются глобальные данные (после слова global указывается перечень глобальных переменных через пробел).
Дата добавления: 2014-11-08; Просмотров: 1423; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |