Линейная интерполяция Matlab




Аппроксимация

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

МНК (Метод Наименьших Квадратов)

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

Суть МНК заключается в следующем: для табличных данных, полученных в результате эксперимента, отыскать аналитическую зависимость, сумма квадратов уклонений которой от табличных данных во всех узловых точках была бы минимальной.

Аппроксимация в Matlab по МНК осуществляется с помощью функции polyfit. Функция p = polyfit(x, y, n) находит коэффициенты полинома p(x) степени n, который аппроксимирует функцию y(x) в смысле метода наименьших квадратов. Выходом является строка p длины n+1, содержащая коэффициенты аппроксимирующего полинома.

Пример (аппроксимация с помощью встроенных MATLAB функций):

Осуществить аппроксимацию в Matlab табличных данных x = [0, 0.1, 0.2, 0.3, 0.5] и y = [3, 4.5, 1.7, 0.7, -1]. Применяя метод наименьших квадратов, приблизить ее многочленами 1-ой и 2-ой степени. Для каждого определить величину среднеквадратической ошибки. Построить (на одном листе) графики и заданной таблично функции (ломанная линия) и приближающих ее многочленов 1-ой и 2-ой степени.

x = [0, 0.1, 0.2, 0.3, 0.5];

y = [3, 4.5, 1.7, 0.7, -1];

grid on

plot(x, y, '*r');

xi = min(x):0.1:max(x);

N = 1; % степень

coeff1 = polyfit(x, y, N);

y2 = 0;

for k=0:N

y2 = y2 + coeff1(N-k+1) * xi.^k;

end

hold on; plot(xi, y2, 'r');

N = 2;

coeff2 = polyfit(x, y, N);

y3 = 0;

for k=0:N

y3 = y3 + coeff2(N-k+1) * xi.^k;

end

hold on; plot(xi, y3, 'g');

 

std(y-(coeff1(1)*x+coeff1(2)))

std(y-(coeff2(1)*x.^2+coeff2(2)*x+coeff2(3)))

Вывод:

ans = 0.9253

ans = 0.8973

Пример (аппроксимации без использования специальных функций MATLAB):

Найти у(0.25) путём построения аппроксимирующего полинома методом наименьших квадратов согласно данным:

x: 0, 0.1, 0.2, 0.3, 0.5

y: 3, 4.5, 1.7, 0.7, -1

p: 0.5, 0.8, 1.6, 0.8, 0.1

Построить этот полином без учёта весовых коэффициентов с использованием определителя Вандермонда и стандартных операторов.

%Задаем массивы данных:

x = [0; 0.1; 0.2; 0.3; 0.5];

y = [3;4.5;1.7;0.7;-1];

%Строим матрицу W – матрицу Вандермонда с вырезанным первым столбцом:

W = vander(x);

W = W(1:5,2:5);

%Вычисляем элементы матрицы А как произведение транспонированной матрицы W и просто матрицы W

A = W'*W;

%Вычисляем элементы вектора b

b = W'*y;

%Решая систему уравнений Aa = b, находим значения вектор-столбца a:

a = inv(A)*b

%Это будут коэффициенты аппроксимирующего полинома.

%Проверяем, используя методы MATLAB = функцию polyfit:

qq = polyfit(x,y,3)

%Получаем аппроксимированные значения y:

x1 = [-0.2:0.001:0.7];

y1 = a(1)*x1.^3 + a(2)*x1.^2 + a(3)*x1 + a(4);

%Строим график функции

plot(x,y,'*');

hold on;

grid on;

plot(x1,y1,'Color','r');

%Находим значение в точке x = 0.25

x2 = 0.25;

y2 = a(1)*x2^3 + a(2)*x2^2 + a(3)*x2 + a(4)

Вывод:

a =

228.1447

-176.0984

22.7745

3.1590

qq = 228.1447 -176.0984 22.7745 3.1590

y2 = 1.4113

Интерполяция

Интерполяция (интерполирование) — процесс нахождения промежуточных значений по ряду данных, для восполнения пробелов между точными значениями приближенными. Точные значения так же называют узловыми точками.

Линейная интерполяция Matlab

Алгоритм интерполяции определяется способом вычисления приближенных значений между точными. Наиболее простым и очевидным вариантом является построение прямой между двумя узловыми точками. Этот метод называется методом линейной интерполяции.

В Matlab такой способ реализован с помощью команды

interp1(x,y, xi, 'linear') или просто interp1(x,y, xi), где x и y массивы из табличных данных (координаты точек), xi — массив промежуточных точек, координаты которых требуется найти.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-07-03 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: