Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
04_Reshenie_zadach_vychislitelnoy_matematiki.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
586 Кб
Скачать
☆

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