- •Министерство сельского хозяйства рф
- •Оглавление
- •Введение
- •Лабораторная работа №1 Знакомство с системой. Работа с векторами и матрицами.
- •1.Работа с числами и константами.
- •2.Работа с векторами и матрицами.
- •3.Форматы выдачи на экран.
- •Лабораторная работа №2
- •Лабораторная работа №3 Графический способ решения уравнений. Минимум функции. Интегрирование.
- •1.Решение уравнений.
- •2. Интегрирование.
- •Лабораторная работа №4 Работа с полиномами. Интерполирование.
- •1.Работа с полиномами.
- •2.Приближение по методу наименьших квадратов.
- •3.Интерполяция сплайнами.
- •Лабораторная работа №5 Работа с текстовыми файлами. Работа со структурами.
- •1. Открытие файла, считывание данных и закрытие файла.
- •2.Запись в текстовый файл.
- •Лабораторная работа №6 Создание приложений в среде guide. Часть 1.
- •1.Создание простого приложения.
- •2.Программное изменение свойств.
- •3.Программирование элементов интерфейса. Флаги и рамки.
- •Лабораторная работа №7 Создание приложений в среде guide. Часть 2.
- •4.Переключатели.
- •5.Списки.
- •6.Полосы скроллинга.
- •Библиографический список
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 |
Какая интерполяция более точно приближает данную функцию?