Интерполяция функций с помощью Scilab
Автор: Daniil11111111 • Май 15, 2021 • Реферат • 1,630 Слов (7 Страниц) • 506 Просмотры
1. Интерполяция функций с помощью Scilab
Интерполяция – частный случай аппроксимации, когда аппроксимирущая кривая " Q(x,c_j)" проходит через все точки таблицы, то есть
[pic 1]
Здесь f(xi) – значения функции в заданных точках (узлах) xi, сj – коэффициенты аппроксимирующей кривой.
Задача интерполяции может быть сформулирована следующим образом: функция y=f(x) задана в виде таблицы:
x | x0 | x1 | … | xn |
y | y0 | y1 | … | yn |
Требуется вычислить значение функции в точке x*, не совпадающей ни с одним из узлов таблицы. Если эта точка лежит между узлами таблицы (то есть xi<x*<xi+1), то такая задача называется интерполяцией. Если точка x* лежит за пределами таблицы (т. е. x*<x0 или x*>xn) , то говорят о задаче экстраполяции. Всюду в дальнейшем будем предполагать, что значения аргумента х расположены в строго возрастающем порядке: x0<x1<x2<…<xn.
Задача интерполяции решается в два этапа. Сначала строится интерполяционная кривая (в нашем случае – интерполяционный полином), а затем в уравнение кривой подставляется точка (или вектор) x*, в которой требуется вычислить значение функции, то есть решение задачи интерполяции есть число (или вектор) [pic 2]
Далее рассмотрим, как можно решить задачу интерполяции в среде Scilab с помощью функций interpln, linear_interpn, datafit, interp и smooth. Во всех примерах будет построен график интерполяционного полинома.
1.1. Линейная интерполяция
1.1.1. Функция interpln
Если заданы значения функции в двух точках (xi, yi) и (xi+1,yi+1), то используя линейную интерполяцию значение функции в точке х вычисляют по формуле [pic 3] Для линейной интерполяции в Scilab применяются функции interpln и linear_interpn.
Синтаксис функции interpln:
[y1]=interpln(xyd,x1)
Аргументами функции являются:
xyd – матрица, состоящая из двух строк – координат векторов одинаковой размерности х и y. x – значения аргумента, y - значения функции. Координаты вектора х должны идти в возрастающем порядке.
x1 – вектор, содержащий точки, в которых нужно вычислить значения функции. Значения функции y1 вычисляют при помощи линейной интерполяции. Значения функции за пределами таблицы, то есть при x<xmin и x>xmax (задача экстраполяции), вычисляют по двум первым и двум последним точкам заданной таблицы соответственно.
Пример 1.1. Функция задана в виде таблицы из пяти точек:
x | 1 | 10 | 20 | 30 | 40 |
y | 1 | 30 | -10 | 20 | 40 |
Нанести на график исходные данные и ломаную, полученную линейной интерполяцией. С помощью линейной интерполяции вычислить значения функции в точках -1.2, 23.5 и 41.4.
clf();clear;x=[1 10 20 30 40];y=[1 30 -10 20 40]; plot2d(x',y',[-3],"011"," ",[-10,-30,50,50]); xx=[-1.2 23.5 41.4];y1=interpln([x;y],-4:45);y2=interpln([x;y],xx); disp(" х y");disp([xx;y2]') plot2d((-4:45)',y1',[5],"000");gca.children.children.thickness=3 legend("Точки интерполяции","Интерполяционная кривая",2) gca.thickness=3 Результат работы программы: х y2 -1.2 -6.0888889 23.5 0.5 41.4 42.8 |
[pic 4]
Рис. 1.1. Линейная интерполяция с помощью функции interpln
В приведенной программе установлены границы рамки графика: х (от ‒10 до 50) и y (от ‒30 до 50). Сам график функции построен на отрезке от ‒4 до 45. Значения функции в промежуточных точках вычислялись линейной интерполяцией/экстраполяцией.
...