Презентация, доклад по дисциплине Компьютерное моделирование Аппроксимация и интерполяция функций

Содержание

Аппроксимация, интерполяция, экстраполяция Аппроксимация (приближение) функции f(x) - нахождение такой функции g(x) (аппроксимирующей функции), которая была бы близка к заданной. Интерполяция – определение промежуточных значений функции fj по известному набору значений функции fi.Экстраполяция – определение значений

Слайд 1Тема занятия Численные методы интерполяции и аппроксимации функции. Интерполяция и аппроксимация

в пакете компьютерного моделирования
Тема занятия  Численные методы интерполяции и аппроксимации функции. Интерполяция и аппроксимация в пакете компьютерного моделирования

Слайд 2Аппроксимация, интерполяция, экстраполяция
Аппроксимация (приближение) функции f(x) - нахождение такой функции

g(x) (аппроксимирующей функции), которая была бы близка к заданной.
Интерполяция – определение промежуточных значений функции fj по известному набору значений функции fi.

Экстраполяция – определение значений функции за пределами первоначально известного интервала.

Аппроксимация, интерполяция, экстраполяция Аппроксимация (приближение) функции f(x) - нахождение такой функции g(x) (аппроксимирующей функции), которая была бы

Слайд 3Интерполяция
Интерполяция имеет как практическое, так и теоретическое значение. На практике часто

возникает задача о восстановлении непрерывной функции по ее табличным значениям, например полученным в ходе некоторого эксперимента. Для вычисления многих функций оказывается эффективно приблизить их полиномами или дробно-рациональными функциями. Теория интерполирования используется для численного интегрирования, для получения методов решения дифференциальных и интегральных уравнений.

ИнтерполяцияИнтерполяция имеет как практическое, так и теоретическое значение. На практике часто возникает задача о восстановлении непрерывной функции

Слайд 4Задача интерполяции
Пусть функция f(x) задана таблицей своих значений xi, yi: на

интервале [a; b]:


Задача интерполяции - найти функцию g(x), принимающую в точках xi те же значения yi
точки xi – узлы интерполяции
условие g(x)= yi – условие интерполяции
Через заданные точки можно провести бесконечно много кривых, для каждой из которых выполнены все условия интерполяции.
Задача интерполяцииПусть функция f(x) задана таблицей своих значений xi, yi: на интервале [a; b]:Задача интерполяции - найти

Слайд 5Глобальная интерполяция

Функция f(x) интерполируется на всем интервале [a; b] обычно с

помощью единого интерполяционного полинома.



Если количество узловых точек равно n, то степень полинома равна n-1, т.е. на единицу меньше количества узлов интерполяции.



Глобальная интерполяцияФункция f(x) интерполируется на всем интервале [a; b] обычно с помощью единого интерполяционного полинома.Если количество узловых

Слайд 6Интерполяция полиномом
Фактически задача сводится к определению коэффициентов интерполяционного полинома на основании

значений функции в узловых точках.
Существуют различные численные методы решения данной задачи.
В пакете MATLAB имеются специальные функции для построения интерполяционного полинома.
Интерполяция полиномомФактически задача сводится к определению коэффициентов интерполяционного полинома на основании значений функции в узловых точках. Существуют

Слайд 7Визуализация интерполируемой функции в MATLAB
Для примера возьмем исходную функцию


Построим график

данной функции:

>> x=linspace(2,7,1000);
>> y=sin(2.*x).*sin(x);
>> plot(x,y)

Визуализация интерполируемой функции в MATLABДля примера возьмем исходную функцию Построим график данной функции:>> x=linspace(2,7,1000);>> y=sin(2.*x).*sin(x);>> plot(x,y)

Слайд 8Интерполяция полиномом: постановка задачи
Пусть заданы узлы интерполяции:
xнач=2; xконечн=7; шаг Δx=0.5
Значения

функции f(x) определяются в узлах интерполяции по формуле y=sin(2x)*sin(x).
Требуется найти интерполяционный полином, график которого проходит через узловые точки интерполяции.
Чтобы найти этот полином,


надо определить его коэффициенты ai. Для определения коэффициентов, составляется система уравнений. Если количество узлов интерполяции 11 (в нашем случае), то полином 10 степени. Количество коэффициентов аi также равно11.
Интерполяция полиномом: постановка задачиПусть заданы узлы интерполяции: xнач=2; xконечн=7; шаг Δx=0.5Значения функции f(x) определяются в узлах интерполяции

Слайд 9Интерполяция полиномом: расчет коэффициентов матричным методом
Система уравнений для нахождения переменных ai

в матричном виде: W*A=Y,
где A- вектор-столбец переменных ai ( коэффициентов полинома): А=(a1 ; a2 ; a3 ; a4; a5 ; a6 ; a7; a8 ; a9 ; a10 ; a11).
W=матрица Вандермонда
Wij=xin-j степени аргументов в узлах интерполяции
Y- вектор-столбец значений f(x) в узлах интерполяции
Y=(y1 ;y2 ;y3 ;y4 ;y5 ;y6; y7 ;y8 ;y9 ;y10 ;y11)
Матричное решение системы линейных алгебраических уравнений: A=inv(W)*Y

W=

Интерполяция полиномом: расчет коэффициентов матричным методомСистема уравнений для нахождения переменных ai в матричном виде:

Слайд 10Блок-схема программы интерполяции полиномом

Блок-схема программы интерполяции полиномом

Слайд 11Расчет коэффициентов полинома матричным методом в MATLAB
Решаем данную систему в MATLAB:
>>

x=2:0.5:7; % задаем узловые точки
>> y=sin(2*x).*sin(x); % определяем значения y в узловых
>> % точках
>> W=vander(x); % определяем матрицу Вандермонда
>> y1=y'; % преобразуем вектор-строку y в вектор->>%столбец
>> A=inv(W)*y1; % решаем систему уравнений, находим >>% значения коэффициентов интерполяционного полинома


Расчет коэффициентов полинома матричным методом в MATLABРешаем данную систему в MATLAB:>> x=2:0.5:7; % задаем узловые точки>> y=sin(2*x).*sin(x);

Слайд 12Значения коэффициентов полинома
A =
0.00

-0.08
1.39
-14.24
91.86
-386.76
1067.07
-1882.63
1993.82
-1100.64
215.23

a1=0; a2=-0.08; a3=1.39; a4=-14.24; a5=91.86; a6=-386.76;
a7=1067.07; a8=-1882.63; a9=1993.82; a10=-1100.64; a11=215.23

Интерполяционный полином:
Р=0*а^10-0.08*а^9+1.39а8- -14.24а7+91.86а6- -386.76*а^5+1067.07*а^4- -1882.63*а^3+199.82*а^2-
-1100.64*а+215.23



Значения коэффициентов полиномаA =     0.00     -0.08

Слайд 13Расчет промежуточных значений функции в MATLAB при помощи полинома
>> p=a; %

задаем полином с коэффициентами ai
>> x1=2:0.25:7; % задаем промежуточные значения х
>> y1=polyval(p,x1); % вычисляем значения полинома в >>%промежуточных х
>> plot(x,y,x1,y1); %распечатываем графики табличной
>> %функции и интерполирующей функции

Расчет промежуточных значений функции в MATLAB при помощи полинома>> p=a; % задаем полином с коэффициентами ai>> x1=2:0.25:7;

Слайд 14Интерполяция полиномом

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

Слайд 15Глобальная или локальная?
Пример:
>> x=2:0.25:15; % задаем узловые точки
>> length(x)% определяем размерность

массива х
ans =
53 % массив х состоит из 53-х элементов
>> y=sin(2*x).*sin(x); % задаем значения функции в узловых точках
>> W=vander(x); % определяем матрицу Вандермонда
>> y1=y‘ % преобразуем вектор-строку y в вектор столбец
>> a=inv(W)*y1; % вычисляем коэффициенты
Warning: Matrix is close to singular or badly scaled.% предупреждение
Results may be inaccurate. RCOND = 2.790744e-074.
Система плохо обусловлена. Возможна ошибка.

Вывод: При большом количестве узлов интерполяции трудно вычислить интерполяционный полином. MATLAB выдает сообщение о некорректной постановке задачи.
В этом случае применяется локальная интерполяция.

Глобальная или локальная?Пример:>> x=2:0.25:15; % задаем узловые точки>> length(x)% определяем размерность массива хans =   53

Слайд 16 Линейная интерполяция
Узловые точки соединяются отрезками прямых
xi
xi+1
Интерполяция сплайнами (spline (англ.) –

гибкая линейка)

Интерполяция квадратичными сплайнами - через узловые точки проводят отрезки квадратичной параболы.
Интерполяция кубическими сплайнами - через узловые точки проводят отрезки кубической параболы.

xi

xi+1

xi-1

Локальная (кусочно-полиномиальная) интерполяция

На каждом интервале [xi , xi+1 ] строится отдельный интерполяционный полином невысокой степени

Линейная интерполяция Узловые точки соединяются отрезками прямыхxixi+1Интерполяция сплайнами  (spline (англ.) – гибкая линейка)Интерполяция квадратичными сплайнами

Слайд 17Локальная интерполяция функции в MATLAB
Для одномерной табличной интерполяции используется функция interp1:


yi = interp1(x, y, xi, method) — позволяет с помощью параметра method задать метод интерполяции:
'nearest' — ступенчатая интерполяция (по соседним элементам);
'linear' — линейная интерполяция (принята по умолчанию);
'spline' — кубическая сплайн-интерполяция;
'cubic' или 'pchip' — интерполяция многочленами Эрмита.
Выходным аргументом interp1 является вектор промежуточных значений аргументов.

Локальная интерполяция функции в MATLABДля одномерной табличной интерполяции используется функция interp1: yi = interp1(x, y, xi, method)

Слайд 18Блок-схема программы для кусочно-полиномиальной интерполяции

Блок-схема программы для кусочно-полиномиальной интерполяции

Слайд 19Ступенчатая интерполяция и ее визуализация в MATLAB
Используем встроенную функцию: «ступенчатая интерполяция»

- интерполяция по соседним элементам.

>> x=2:0.5:7;
>> y=sin(2.*x).*sin(x);
>> X=linspace(2,7,21);
>>Y1=interp1(x,y,X,'nearest');
>> plot(x,y)
>> hold on
>> plot(X,Y1)
.

Значение в каждой проме-жуточной точке принимается рав-ным ближайшему значению, заданному в таблице.

Ступенчатая интерполяция и ее визуализация в MATLABИспользуем встроенную функцию: «ступенчатая интерполяция» - интерполяция по соседним элементам.>> x=2:0.5:7;>>

Слайд 20Линейная интерполяция и ее визуализация в MATLAB


>> Y=interp1(x,y,X,'linear');
>> plot(x,y)
>> hold on
>>

plot(X,Y)

Используем встроенную функцию: «линейная интерполяция».

Соединение соседних точек отрезками прямых - табличные данные приближаются ломаной линией .

Линейная интерполяция и ее визуализация в MATLAB>> Y=interp1(x,y,X,'linear');>> plot(x,y)>> hold on>> plot(X,Y)Используем встроенную функцию: «линейная интерполяция».Соединение соседних

Слайд 21Интерполяция кубическими сплайнами и ее визуализация в MATLAB


>> Y2=interp1(x,y,X,'spline');
>> plot(x,y)
>> hold

on
>> plot(X,Y2)
Интерполяция кубическими сплайнами – кривыми 3ей степени - обеспечивает отсутствие сильных перегибов кривых в узлах интерполяции. Непрерывность функции и ее 1 и 2 производных на всем интервале интерполирования.

Используем встроенную функцию: «интерполяция кубическими сплайнами».

Интерполяция кубическими сплайнами и ее визуализация в MATLAB>> Y2=interp1(x,y,X,'spline');>> plot(x,y)>> hold on>> plot(X,Y2)Интерполяция  кубическими  сплайнами

Слайд 22Интерполяция многочленами Эрмитами ее визуализация в MATLAB
>> Y3=interp1(x,y,X,'cubic');
>> plot(x,y)
>> hold on
>>

plot(X,Y3)

Используем встроенную функцию: «многочленами Эрмита».




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

Интерполяция многочленами Эрмитами ее визуализация в MATLAB>> Y3=interp1(x,y,X,'cubic');>> plot(x,y)>> hold on>> plot(X,Y3)Используем встроенную функцию: «многочленами Эрмита».Аналогично интерполированию

Слайд 23Сравнение погрешностей методов интерполяции функции yi=sin(2*X).*sin(X) в MATLAB
Файл-функция для определения погрешности:
function

p=pogr(X,Y);
yi=sin(2.*X).*sin(X);
P=abs(yi-Y);
p=P;
max (p)
end

Сравнение погрешностей методов интерполяции функции yi=sin(2*X).*sin(X) в MATLABФайл-функция для определения погрешности:function p=pogr(X,Y);yi=sin(2.*X).*sin(X);P=abs(yi-Y);p=P;max (p)end

Слайд 24Погрешность ступенчатой интерполяции:
>> X=linspace(2,7,51);
>> Y=interp1(x,y,X,'nearest');
>> p=pogr(X,Y)

ans =

0.3752

Погрешность ступенчатой интерполяции:>> X=linspace(2,7,51);>> Y=interp1(x,y,X,'nearest');>> p=pogr(X,Y)ans =  0.3752

Слайд 25Погрешность линейной интерполяции:
>> X=linspace(2,7,51);
>> Y1=interp1(x,y,X,'linear');
>> p1=pogr(X,Y1)

ans =

0.1400

Погрешность линейной интерполяции:>> X=linspace(2,7,51);>> Y1=interp1(x,y,X,'linear');>> p1=pogr(X,Y1)ans =  0.1400

Слайд 26Погрешность интерполяции кубическими сплайнами:
>> X=linspace(2,7,51);
>> Y2=interp1(x,y,X,'spline');
>> p2=pogr(X,Y2)

ans =

0.0545

Погрешность интерполяции кубическими сплайнами:>> X=linspace(2,7,51);>> Y2=interp1(x,y,X,'spline');>> p2=pogr(X,Y2)ans =  0.0545

Слайд 27Погрешность интерполяции многочленами Эрмита:
>> X=linspace(2,7,51);
>> Y3=interp1(x,y,X,'cubic');
>> p3=pogr(X,Y3)

ans =

0.1046
Вывод: наименьшую

погрешность дает интерполяция кубическими сплайнами
Погрешность интерполяции многочленами Эрмита:>> X=linspace(2,7,51);>> Y3=interp1(x,y,X,'cubic');>> p3=pogr(X,Y3)ans =  0.1046Вывод: наименьшую погрешность дает интерполяция кубическими сплайнами

Слайд 28Аппроксимация функций
Аппроксимацией (приближением) функции f(x) называется нахождение такой функции g(x) (аппроксимирующей

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

Аппроксимация функцийАппроксимацией (приближением) функции f(x) называется нахождение такой функции g(x) (аппроксимирующей функции), которая была бы близка к

Слайд 29Аппроксимация функций в MATLAB
Одна из наиболее известных аппроксимаций — полиномиальная. В

системе MATLAB определены функции аппроксимации данных полиномами по методу наименьших квадратов — полиномиальной регрессии. Это выполняет функция, приведенная ниже:
– polyfit(x, y, n) – возвращает вектор коэффициентов полинома р(х) степени n, который с наименьшей среднеквадратичной погрешностью аппроксимирует функцию у(х).

Аппроксимация функций в MATLABОдна из наиболее известных аппроксимаций — полиномиальная. В системе MATLAB определены функции аппроксимации данных

Слайд 30Аппроксимация функции y=sin(2x)·sin(x) полиномами
>> x=2:0.5:7;
>> y=sin(2.*x).*sin(x);
>> p=polyfit(x,y,3) % аппроксимация полиномом 3-ей

степени
p =
-0.0113 0.1514 -0.3862 -0.3429
>> x1=2:0.1:7;
>> y1=polyval(p,x1);
>> plot(x,y,x1,y1)
Аппроксимация функции y=sin(2x)·sin(x) полиномами>> x=2:0.5:7;>> y=sin(2.*x).*sin(x);>> p=polyfit(x,y,3) % аппроксимация полиномом 3-ей степениp =  -0.0113  0.1514

Слайд 31Аппроксимация полиномом 3-ей степени

Аппроксимация полиномом 3-ей степени

Слайд 32Аппроксимация полиномом 5-й степени
>> p1=polyfit(x,y,5) % аппроксимация полиномом 5-й степени
p1 =
0.0444

-1.0084 8.7876 -36.5622 72.4682 -55.0805
>> y2=polyval(p1,x1);
>> plot(x,y,x1,y2)
Аппроксимация полиномом 5-й степени>> p1=polyfit(x,y,5) % аппроксимация полиномом 5-й степениp1 =0.0444  -1.0084  8.7876 -36.5622

Слайд 33Аппроксимация полиномом 5-й степени

Аппроксимация полиномом 5-й степени

Слайд 34Аппроксимация полиномом 7-й степени

Аппроксимация полиномом 7-й степени

Слайд 35Аппроксимация полиномом 10-й степени

Аппроксимация полиномом 10-й степени

Слайд 36Влияние степени полинома на вид приближающей функции
При увеличении степени полинома график

приближающей кривой лучше отражает форму графика аппроксимирующей функции.
Если степень полинома равна n-1, где n – количество узловых точек, то аппроксимирующая кривая проходит через узловые точки, т.е. аппроксимация превращается в интерполяцию.
Если степень полинома больше n, то задача имеет бесконечное множество решений, и MATLAB выводит сообщение об этом. При этом форма приближающей кривой на границах интервала далека от формы кривой аппроксимируемой функции.
Влияние степени полинома на вид приближающей функцииПри увеличении степени полинома график приближающей кривой лучше отражает форму графика

Слайд 37Аппроксимация полиномом 20-й степени

Аппроксимация полиномом 20-й степени

Слайд 38Метод наименьших квадратов
Для оценки «близости» функций выбирают тот или иной критерий

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


Метод наименьших квадратовДля оценки «близости» функций выбирают тот или иной критерий согласия. Эти критерии основаны на использовании

Слайд 39Нахождение приближающей функции в виде линейной функции методом наименьших квадратов
Пусть функция

f(x) в точках xi принимает значения yi.



Требуется найти аппроксимирующую (приближающую) функцию g(x).

Приближающую функцию будем определять в виде:
g(x)=a·x+b

Для нахождения данной функции, необходимо определить параметры a и b.
Нахождение приближающей	 функции в виде линейной функции методом наименьших квадратовПусть функция f(x) в точках xi принимает значения

Слайд 40Нахождение приближающей функции в виде линейной функции методом наименьших квадратов
В результате

математических выкладок по нахождению экстремума этой функции получаем систему уравнений , с помощью которой определяем параметры а и b линейной приближающей функции g(x)=a·x+b.






Для применения критерия близости в методе наименьших квадратов необходимо найти минимум функции:

Нахождение приближающей	 функции в виде линейной функции методом наименьших квадратовВ результате математических выкладок по нахождению экстремума этой

Слайд 41Система уравнений
Мх, Мх2, Мхy – коэффициенты уравнений, определяемые по формулам:

Система уравненийМх, Мх2, Мхy – коэффициенты уравнений,  определяемые по формулам:

Слайд 42Задача
В одной системе координат построить графики табличной функции и аппроксимирующей функции.



Решим

задачу матричным методом в пакете MATLAB
ЗадачаВ одной системе координат построить графики табличной функции и аппроксимирующей функции.Решим задачу матричным методом в пакете MATLAB

Слайд 43Блок-схема программы нахождения приближающей функции в виде линейной функции методом наименьших

квадратов
Блок-схема программы нахождения приближающей	 функции в виде линейной функции методом наименьших квадратов

Слайд 44Программа для нахождения приближающей функции в виде линейной функции методом наименьших

квадратов

M-файл нахождения приближающей линейной функции:
clear all % очищаем рабочую область
x=input(‘вектор значений xi>>');% диалоговый ввод переменных хi
y=input(‘вектор значений yi>>'); % диалоговый ввод переменных yi
n=length(x) % определение размерности вектора х
Mx=sum(x)/n % вычисление коэффициента системы уравнений
My=sum(y)/n % вычисление коэффициента системы уравнений
xy=x.*y; % поэлементное перемножение векторов x и y
Mxy=sum(xy)/n % вычисление коэффициента системы уравнений
x2=x.^2; % поэлементное возведение в квадрат вектора х
Mx2=sum(x2)/n % вычисление коэффициента системы уравнений
A=[Mx2 Mx;Mx 1]; % введение матрицы коэффициентов левой части системы…
уравнений
B=[Mxy;My]; % введение матрицы коэффициентов правой части системы уравнений
ab=inv(A)*B; % решение системы уравнений
a=ab(1) % угловой коэффициент приближающей линейной функции
b=ab(2) % свободный член приближающей линейной функции
Y=a*x+b; % аналитическое выражение для приближающей линейной функции
plot(x,y,x,Y) % построение графиков исходной и приближающей функций

Программа для нахождения приближающей	 функции в виде линейной функции методом наименьших квадратовM-файл нахождения приближающей линейной функции:clear all

Слайд 45Нахождение приближающей функции в виде линейной функции (задача)
вектор значений хi>>[1 1.5

2.5 3.0 4.5 5.1 6.2]
вектор значений yi>>[67 101 168 202 301 334 404]
n =
7
Mx =
3.400000000000000
My =
2.252857142857143e+002
Mxy =
9.724571428571428e+002
Mx2 =
14.742857142857142
a =
64.874326750448859
b =
4.713003334187988


Нахождение приближающей	 функции в виде линейной функции (задача)вектор значений хi>>[1 1.5 2.5 3.0 4.5 5.1 6.2]вектор значений

Слайд 46Визуализация линейной приближающей функции

Визуализация линейной приближающей функции

Слайд 47Путем построения кубического сплайна с помощью стандартной MATLAB процедуры interp1 определить

значение термо-ЭДС термоэлектрического преобразователя ПП(S) при температуре 180оС, если известны значения термо-ЭДС при следующих температурах:

Задача 1 на закрепление новой темы

Путем построения кубического сплайна с помощью стандартной MATLAB процедуры interp1 определить значение термо-ЭДС термоэлектрического преобразователя ПП(S) при

Слайд 48Решение задачи 1
>> t=50:50:200;
>> E=[0.299 0.645 1.029 1.44];
>> t1=180;
>> E1=interp1(t,E,t1,'spline')
E1 =

1.2731
Решение задачи 1>> t=50:50:200;>> E=[0.299 0.645 1.029 1.44];>> t1=180;>> E1=interp1(t,E,t1,'spline')E1 =  1.2731

Слайд 49С помощью стандартных MATLAB процедур polyfit и polyval определить сопротивление платинового

термопреобразователя сопротивления при температуре 780оС путем аппроксимации полиномом 2-го порядка статической характеристики, которая представлена в таблице:

Задача 2 на закрепление новой темы

С помощью стандартных MATLAB процедур polyfit и polyval определить сопротивление платинового термопреобразователя сопротивления при температуре 780оС путем

Слайд 50>> t=650:50:950;
>> R=[166.55 174.46 182.23 189.86 197.33 204.66 211.85];
>> p=polyfit(t,R,2)
p

=
-0.0000 0.1976 50.4029
>> R1=polyval(p,780)
R1 =
186.5429

Решение задачи 2

>> t=650:50:950;>> R=[166.55 174.46 182.23 189.86 197.33 204.66 211.85]; >> p=polyfit(t,R,2)p =  -0.0000  0.1976

Что такое shareslide.ru?

Это сайт презентаций, где можно хранить и обмениваться своими презентациями, докладами, проектами, шаблонами в формате PowerPoint с другими пользователями. Мы помогаем школьникам, студентам, учителям, преподавателям хранить и обмениваться учебными материалами.


Для правообладателей

Яндекс.Метрика

Обратная связь

Email: Нажмите что бы посмотреть