- •Введение
- •Лабораторная работа ип1 Знакомство с Matlab
- •1. Рабочая среда Matlab
- •2. Данные Matlab
- •Типы данных
- •Числовые константы
- •Символьные константы
- •Переменные
- •3. Выражения
- •3.1. Арифметические выражения
- •3.2. Логические выражения
- •3.3. Порядок вычисления выражений
- •4. Сообщения об ошибках и исправление ошибок
- •5. Завершение вычислений
- •6. Завершение работы с системой
- •7. Резюме
- •8. Контрольные вопросы
- •9. Индивидуальные задания
- •Лабораторная работа ип2 работа с матрицами в matlab
- •1. Общие сведения
- •2. Одномерные массивы – векторы
- •3. Двумерные массивы – матрицы
- •4. Использование двоеточия
- •4.1. Автозаполнение
- •4.2. Индексация
- •5. Поэлементные и матричные операции
- •6. Стандартные функции для работы с матрицами
- •7. Логическое индексирование
- •8. Контрольные вопросы
- •9. Индивидуальные задания
- •10. Упражнения
- •2. Диалоговый ввод/вывод
- •3. Управление последовательностью исполнения операторов
- •3.1. Оператор условия if
- •3.2. Оператор переключения
- •3.3. Оператор цикла с определенным числом повторений
- •3.4. Оператор цикла с неопределенным числом повторений
- •4. Контрольные вопросы
- •5. Индивидуальные задания
- •Лабораторная работа ип4 визуализация данных в matlab
- •1. Общие сведения
- •2. Построение таблицы значений функции
- •3. Двумерная графика
- •3.1. Общие правила построения графиков
- •3.2. Оформление графиков
- •3.3. Построение графиков
- •3.4. Управление свойствами графиков
- •4. Трехмерная графика
- •4.1. Общие принципы построения трехмерных графиков
- •4.2. Построение трехмерных графиков
- •4.3. Управление свойствами трехмерных графиков
- •5. Контрольные вопросы
- •6. Индивидуальные задания
- •Лабораторная работа ип5 файл-функции
- •2. Описание m-функции
- •3. Обращение к m-функции
- •4. Параметры-функции
- •5. Разновидности m-функций
- •5.1. Подфункции
- •5.2. Вложенные функции
- •6. Контрольные вопросы
- •7. Индивидуальные задания
- •2. Аппроксимация
- •2.1. Моделирование полиномом по методу
- •2.2. Аппроксимация произвольной функцией
- •3. Интерполяция
- •3.1. Кусочная интерполяция
- •3.2. Кубические сплайны
- •3.3. Интерполяция произвольной нелинейной функцией
- •4. Контрольные вопросы
- •5. Индивидуальные задания
- •Лабораторная работа ип7 Вычисление функций разложением в ряд
- •1. Общие сведения
- •2. Индивидуальное задание
- •Лабораторная работа ип8 Решение нелинейных уравнений в среде Matlab
- •1. Общие сведения
- •2. Поиск корней полиномов
- •3. Решение одного нелинейного уравнения
- •4. Решение систем нелинейных уравнений
- •5. Контрольные вопросы
- •6. Индивидуальные задания
- •Лабораторная работа ип9 обмен данными с текстовым файлом
- •1. Общие сведения
- •2. Открытие файла
- •3. Запись в текстовый файл
- •3.1. Запись строковых значений
- •3.2. Запись числовых значений
- •4. Чтение из текстового файла
- •4.1. Последовательное чтение строк
- •4.2. Последовательное чтение нескольких символов
- •4.3. Чтение чисел из текстового файла
- •4.4. Альтернативный доступ к текстовому файлу
- •5. Закрытие файла
- •6. Контрольные вопросы
- •7. Индивидуальные задания
- •Заключение
- •Список рекомендуемой литературы
- •Программирование в matlab
- •428015 Чебоксары, Московский просп., 15
3. Интерполяция
На практике интерполяцию выполняют, как правило, тогда когда имеется выборка отсчетов функции , аналитическое выражение которой не известно, и требуется получить значения функции для х, лежащих между узлами таблицы. Интерполяция обычно выполняется кусочно – сколько интервалов между узлами таблицы, столько и интерполяционных функций. Интерполяционная кривая справедлива только для того участка таблицы, для которого она построена.
3.1. Кусочная интерполяция
Одномерная табличная интерполяция может быть выполнена функцией interp1, позволяющей решать задачу несколькими методами. Обращение к ней имеет следующий вид:
yi=interp1(x,y,xi,метод);
где х и у – векторы значений узлов таблицы и соответствующие им значения моделируемой функции; xi – вектор узлов интерполяции; метод – строковая константа, задающая метод интерполяции: 'nearest' – ступенчатая, 'linear' – линейная (принята по умолчанию), 'cubic' – кубическая, 'spline' – кубическими сплайнами. Функция не позволяет получить аналитические выражения интерполяционных функций (интерполянт), выдает только их значения между узлами таблицы.
Пример. Зададим синусоиду шестью точками и проведем кубическую интерполяцию на более мелкой сетке (рис. 5.3).
x=1:6;
y=sin(x);
xi=1:0.5:6;
xh=1:0.1:6;% абсциссы для рисования плавных кривых
model_cubic=interp1(x,y,xh,'cubic');
yh=sin(xh);% плавная кривая синусоиды
yc=interp1(x,y,xi,'cubic');
plot(xh,model_cubic,'k-.',xh,yh,'m-',xi,yc,'r*',x,y,'ko'), grid
legend('модель','sin(x)')
Рис. 5.3. Кусочная кубическая интерполяция синусоиды
Полученная модель лишь отдаленно напоминает синусоиду. Качество моделирования можно улучшить, задав большее количество узлов.
3.2. Кубические сплайны
Кубические сплайны – это сопряженные (плавно стыкующиеся друг с другом) многочлены третьей степени. Интерполяцию кубическими сплайнами осуществляет функция spline. Обращение
уi= spline(x,y,xi);
интерполирует значение вектора y, заданного при значениях аргумента, представленных в векторе х, и выдает значения моделирующей функции в виде вектора уi при значениях аргумента, заданных вектором хi. Если вектор х не указан, по умолчанию принимается, что он имеет такую же длину, как и вектор у, и любой его элемент равен порядковому номеру этого элемента. Шаг по х и по хi не обязательно должен быть постоянным (в частном случае хi может быть и скаляром). Моделируемая функция f(x) может быть задана и аналитически. Функция spline не позволяет получить аналитические выражения интерполяционных сплайнов (их коэффициенты). Но обращение
pp=spline(x,y);
возвращает так называемую вспомогательную рр-форму сплайнов. Коэффициенты же кубических сплайнов можно узнать, обратившись к функции unmkpp
[br,coefs]=unmkpp(pp);
В результате в векторе coefs будут размещены коэффициенты сплайнов, в br – разбиения по х. Значения кусочно-гладких сплайнов для заданных значений аргумента вычисляет функция ppval
ppval(pp,xi).
Пример. Зададим синусоиду шестью точками и проведем интерполяцию кубическими сплайнами на более мелкой сетке.
x=1:6;
y=sin(x);
xi=1:0.5:6;
yi=spline(x,y,xi)
xh=1:0.1:6;% абсциссы для рисования плавных кривых
yh=sin(xh);% кривая синусоиды
pp=spline(x,y);
[br,coefs]=unmkpp(pp);
modelsin=ppval(pp,xh);
plot(x,y,'ko',xi,yi,'r*',xh,yh,'m-',xh,modelsin,'k-'), grid
В результате работы программы будут получены одиннадцать отсчетов интерполяционных сплайнов: шесть из них будут совпадать с табличными значениями, пять – получены для промежуточных точек х = {1,5 2,5 3,5 4,5 5,5}
ys =
0.8415 1.0194 0.9093 0.5902 0.1411 -0.3497 -0.7568 -0.9676 -0.9589 -0.7298 -0.2794
В частности для xi = 1,5 получено значение уi = 1,0194. Решение (рис.5.4) демонстрирует погрешность интерполяции: значение не может быть больше единицы. Матрица coefs размером 5×4 будет содержать пять наборов (по числу интервалов между узлами таблицы), в каждом – по четыре коэффициента кубических сплайнов.
Рис. 5.4. Интерполяция кубическими сплайнами