Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИС-лабраб-методичка.doc
Скачиваний:
19
Добавлен:
06.02.2016
Размер:
534.02 Кб
Скачать

2.Приближение по методу наименьших квадратов.

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

Таблица 1. Функция, заданная таблицей

хi

0.1

0.2

0.4

0.5

0.6

0.8

1.2

yi

-3.5

-4.8

-2.1

0.2

0.9

2.3

3.7

Приблизим ее полиномами четвертой, пятой и шестой степени и выведем график, отражающий характер приближений. Для решения этой задачи создайте файл-программу LSInterp, текст которой приведен в следующем листинге

Листинг LSInterp. Приближение полиномами методом наименьших квадратов

х = [0.1 0.2 0.4 0.5 0.6 0.8 1.2];

у = [-3.5 -4.8 -2.1 0.2 0.9 2.3 3.7];

% вывод графика табличной функции маркерами

plot(x, у, 'k0')

% вычисление коэффициентов полиномов разных степеней,

% приближающих табличную функцию по методу наименьших

% квадратов

р4 = polyfit(x, у, 4);

р5 = polyfittx, у, 5);

рб = polyfit(x, у, 6);

% построение графиков полиномов

t = [0.1:0.01:1.2];

Р4 = polyval(p4, t) ;

Р5 = polyval(p5, t) ;

Р6 = polyval(p6, t);

hold on

plot(t, P4, 'k-', t, P5, 'k:', t, Р6, 'k-.')

legend('табличные данные', 'n=4', 'n=5', 'n=6',0)

title('Приближение табличной функции полиномами степени n')

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

3.Интерполяция сплайнами.

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

'nearest' — интерполяция по соседним элементам;

'linear' — линейная интерполяция;

'spline' — интерполяция кубическими сплайнами.

Выходным аргументом interp1 является вектор значений интерполянта.

Создайте файл-программу interp1dem для сравнения различных способов интерполирования.

Листинг interp1dem.

%задание табличной функции

x=[0.1 0.2 0.4 0.5 0.6 0.8 1.2];

у =[-3.5 -4.8 -2.1 0.2 0.9 2.3 3.7];

% вывод графика табличной функции маркерами

plot(х,y,'k0')

%задание промежуточных точек для интерполирования

xi = [x(1):0.01:x(length(x))];

ynear = interpl(x,у,xi,'nearest');

yline = interpl(x,у,xi,'linear'};

уspline = interpl (x,у,xi,'spline');

hold on

plot(xi, ynear, 'k', xi, yline, 'k:', xi, yspline, 'k-.')

title('Различные способы интерполяции функций')

xlabel('\itx')

ylabel('\ity')

legend('табличная функция', 'по соседним элементам (nearest)', ... 'линейная (linear)', 'кубические сплайны (spline)',4)

Выполнение interpidem приводит к появлению графика, который наглядно демонстрирует способы интерполяции.

ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОЙ РАБОТЫ

Задание 1. Задайте полином р(х)=х3 - 3.55х2 + 5.1х - 3.1 и найдите графически его единственный вещественный корень. Сколько знаков вам удастся получить, уменьшая интервал около корня?

Задание 2. Определите все корни уравнения x4 – 5x3 + 3x2 - 7 = 0.

Задание 3. Напишите файл-функцию для вычисления суммы двух полиномов.

Задание 4. Создайте файл-программу для интерполирования следующей таблично заданной функции:

xi

-7

-2

-1

0

1

2

3

5

yi

-341

-6

1

2

3

10

29

127

Какая интерполяция более точно приближает данную функцию?