3. Приближение функций
1. Многочлены.
Многочлен в MatLab задается вектором его коэффициентов. Например, введем многочлен
p = [1 0 3.2 -5 .2 0 0.5 1 -3]
Значение многочлена в точке
вычисляет команда polyval,
например, в точке
:
polyval(p, 1)
Аргумент может быть матрицей или вектором, при этом результат также будет матрицей или вектором.
2. Интерполяционный многочлен.
Пусть задана сеточная функция
x |
|
|
….. |
|
y |
|
|
…... |
|
и требуется приблизить эту сеточную функцию многочленом
,
удовлетворяющим условиям интерполяции:
.
Коэффициенты интерполяционного
многочлена
– решение системы линейных уравнений
.
Матрица этой системы представляет собой, так называемую матрицу Вандермонда, которая в MatLab задается функцией vander. Неизвестные коэффициенты можно найти путем левого матричного деления «\».
Например, построим интерполяционный многочлен для заданной таблицы
|
0,5 |
1 |
2 |
3 |
4 |
|
1,5 |
0 |
1 |
2 |
1,2 |
и вычислим приближенное значение
при
.
Создадим М-файл list_12.
В результате работы программы получим графики табличной функции и интерполяционного многочлена:
и вывод в командном окне
ТАБЛИЦА
0.5 1 2 3 4
1.5 0 1 2 1.2
ИНТЕРПОЛЯЦИОННЫЙ МНОГОЧЛЕН P_4
0.21905 -2.4905 9.4667 -13.252 6.0571
ЗНАЧЕНИЕ МНОГОЧЛЕНА В ТОЧКЕ x_0 = 3.5
P_x_0 =
1.7321
3. Кусочно-многочленная интерполяция.
1) Интерполяция по соседним элементам
– способ интерполяции данных, при которой значения в каждой промежуточной точке принимается равным ближайшему значению, заданному в таблице.
2) Линейная интерполяция
– это способ, при котором соседние точки соединены отрезками прямых.
3) Интерполяция сплайнами.
Все эти способы интерполяции реализуются встроенной функцией interp1.
yi = interp1(x, y, xi, ’method’)
x – массив абсцисс табличной функции;
y – массив ординат табличной функции;
xi – промежуточные точки, в которых необходимо вычислить значения интерполирующей функции;
Параметр method может принимать одно из следующих значений:
nearest – интерполяция по соседним элементам;
liner – линейная интерполяция;
spline – интерполяция кубическим сплайном.
Выходным аргументом interp1 является вектор yi значений интерполирующей функции.
Рассмотрим таблицу из предыдущего примера и построим для неё различные интерполирующие функции. Текст программы приведем в list_13.
Графики
Вывод в командное окно
ТАБЛИЦА
0.5 1 2 3 4
1.5 0 1 2 1.2
ЗНАЧЕНИЕ ИНТЕРП. ФУНКЦИЙ В ТОЧКЕ x_0 = 3,5
Near_x_0 =
1.2
Line_x_0 =
1.6
Spline_x_0 =
1.8618
ynear_X1 = 1
4. Метод наименьших квадратов.
Пусть некоторая функция
задана своими табличными значениями
в п различных точках
(
).
-
………………..
………………..
Требуется найти
многочлен степени
,
коэффициенты которого
минимизируют функцию
.
Построение полинома, который приближает функцию, заданную таблицей, по методу наименьших квадратов в MatLab осуществляется при помощи polyfit:
pk = polyfit(x, y, k),
x – массив абсцисс экспериментальных точек;
y – массив ординат экспериментальных точек;
k – степень аппроксимирующего полинома.
Результатом работы функции является массив pk коэффициентов полинома. Для того чтобы вычислить значение аппроксимирующего полинома в любой точке применяют функцию
Pk = polyval(pk, t),
где t – точка (или массив точек) в которой необходимо вычислить значение многочлена.
Например, для заданной таблицы
x |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
y |
0.5 |
0.5 |
1 |
4 |
3 |
5 |
8 |
построим многочлен третьей степени по методу наименьших квадратов. Текст программы в list_14.
Графики табличной функции и аппроксимирующего многочлена
Вывод в командное окно
ТАБЛИЦА
x =
1 2 3 4 5 6 7
y =
0.5 0.5 1 4 3 5 8
АППРОКСИМИРУЮЩИЙ МНОГОЧЛЕН P_3
p3 =
0.027778 -0.16071 0.95437 -0.57143
