- •§ 2.2. Командное окно системы matlab
- •§ 2.3. Рабочее пространство системы matlab
- •§ 2.4. Скаляры и массивы. Индексированные переменные
- •§ 2.5. Форматы представления вещественных чисел
- •§ 2.6. Арифметические выражения
- •2.6.1. Некоторая специфика использования вещественных данных
- •2.6.2. Некоторая специфика использования комплексных данных
- •2.6.3. Некоторые приемы работы с матрицами и векторами
- •2.6.4. Некоторые специфика выполнения арифметических и логических операций.
- •§ 2.7. Элементарные математические функции
- •Часть 2. Визуализация результатов вычислений
- •§ 2.8. Особенности графической подсистемы matlab
- •§ 2.9. Построение графиков функций одной переменной
- •2.9.1. Простые графики в декартовой системе координат.
- •2.9.2. Визуализация нескольких графиков.
- •2.9.3. Функция fplot.
- •2.9.4. Построение графиков в логарифмическом и полулогарифмическом масштабах.
- •2.9.5. Построение графиков в полярных координатах.
- •§ 2.10. Оформление графиков и графических окон
- •2.10.1. Выбор свойств линий.
- •2.10.2. Оформление осей координат.
- •2.10.3. Добавление надписей, заголовков и координатной сетки.
- •§ 2.11. Средства управления в графическом окне
- •§ 2.12. Общее знакомство с трехмерной графикой в matlab
- •2.12.1. Общий алгоритм визуализации функций двух переменных.
- •2.12.2. Построение трехмерных линий.
- •2.12.3. Построение поверхностей.
- •2.12.4. Задание дополнительных параметров трехмерных графиков.
- •2.12.5. Построение линий уровня.
- •2.12.6. Построение траектории точки, движущейся в пространстве.
- •2.12.7. Интерактивное редактирование графиков.
- •Часть 3. Вычисления с действительными и комплексными массивами чисел
- •§ 2.13. Операции отношения и логические операции над числами
- •2.13.1. Операции отношения.
- •2.13.2. Логические операции.
- •2.13.3. Приоритет операций.
- •§ 2.14. Формирование одномерных числовых массивов
- •2.14.1. Задание одномерных массивов и доступ к их элементам.
- •2.14.2. Об ускорении операций задания массива.
- •2.14.3. Об использовании операции формирования диапазона.
- •§ 2.15. Матрицы и векторы. Двумерные массивы чисел
- •2.15.1. Создание матриц и векторов.
- •2.15.2. Доступ к отдельным фрагментам матриц.
- •2.15.3. Удаление строк и столбцов матрицы.
- •2.15.4. Использование функций перестановки частей матриц.
- •2.15.5. Определение размеров и размерностей массивов.
- •2.15.6. Использование операций индексации.
- •2.15.7. Изменение размеров массива.
- •2.15.8. Специальные функции формирования массивов.
- •§ 2.16. Вычисления с массивами
- •2.16.1. Поэлементные и групповые операции над массивами.
- •2.16.2. Решение некоторых типовых задач линейной алгебры и аналитической геометрии.
- •2.16.3. Применение операций отношения и логических операций к массивам.
- •2.16.4. Некоторые функции для работы с массивами.
- •Часть 4. Стандартные средства решения некоторых типовых задач линейной алгебры и математического анализа
- •§ 2.17. Решение систем линейных алгебраических уравнений
- •§ 2.18. Решение некоторых задач линейной алгебры. Матричные функции
- •§ 2.19. Разреженные матрицы
- •§ 2.20. Решение нелинейных уравнений
- •§ 2.21. Поиск минимального значения функции
- •§ 2.22. Численное интегрирование
- •2.22.1. Использование метода трапеций.
- •2.22.2. Использование методов Симпсона и Гаусса-Лобатто.
- •2.22.3. Вычисление двойных интегралов.
- •§ 2.23. Операции над полиномами
- •2.23.1. Вычисление значения полинома.
- •2.23.2. Вычисление корней полинома.
- •2.23.3. Умножение и деление полиномов.
- •2.23.4. Дифференцирование и интегрирование полиномов.
- •§ 2.24. Интерполяция и аппроксимация данных
- •2.24.1. Полиномиальная аппроксимация.
- •2.24.2. Интерполяция сплайнами.
- •Часть 5. Символьные вычисления
- •§ 2.25. Создание символьных переменных, выражений и матриц
- •2.25.1. Создание символьных переменных.
- •2.25.2. Создание символьных выражений.
- •2.25.3. Создание символьных матриц.
- •§ 2.26. Символьные вычисления
- •2.26.1. Символьное дифференцирование.
- •2.26.2. Вычисление пределов.
- •2.26.3. Символьное интегрирование.
- •2.26.3. Вычисление суммы ряда. Разложение функций в ряды.
- •2.26.4. Упрощение выражений. Подстановки.
- •2.26.5. Управление точностью вычислений.
- •2.26.6. Операции над векторами. Операции над матрицами. Некоторые операции линейной алгебры.
- •2.26.7. Решение уравнений и систем уравнений.
- •§ 2.27. Визуализация результатов символьных вычислений
- •2.27.1. Построение двумерных графиков.
- •2.27.2. Построение трехмерных графиков.
- •Часть 6. Основы программирования на m-языке
- •§ 2.28. Основные понятия программирования в системе matlab
- •2.28.1. Назначение языка программирования matlab.
- •2.28.2. Основные средства программирования.
- •2.28.3. Основные типы данных.
- •2.28.4. Виды программирования.
- •2.28.5. Двойственность операторов, команд и функций.
- •2.28.6. Некоторые ограничения.
- •§ 2.29. Создание и использование m-файлов
- •2.29.1. Понятие об m-файлах.
- •2.29.2. Типы m-файлов.
- •2.29.3. Создание файл-программ.
- •2.29.4. Создание файл-функций.
- •2.29.5. Глобализация переменных и функций.
- •2.29.6. Синтаксический контроль программ.
- •§ 2.30. Управляющие структуры
- •2.30.1. Понятие об управляющих структурах.
- •2.30.2. Операторы цикла.
- •2.30.3. Операторы ветвления.
- •2.30.4. Прочие операторы.
- •§ 2.31. Работа с файлами
- •2.31.1. Общие замечания.
- •2.31.2. Подготовка файла к работе.
- •2.31.3. Завершение работы с файлами.
- •2.31.4. Контроль за исчерпанием данных.
- •2.31.5. Чтение из текстового файла.
- •2.31.6. Анализ ошибок в файловых операциях.
- •§ 2.32. Форматный ввод-вывод данных
- •2.32.1. Форматные преобразования (sprintf, sscanf).
- •2.32.2. Форматные преобразования при работе с файлами (fprintf, fscanf).
- •§ 2.33. Рекурсивные файл-функции. Производительность файл-функций
- •2.33.1. Понятие о рекурсивных файл-функциях.
- •2.33.2. Оценка производительности файл-функции.
- •§ 2.34. Файл-функции с переменным числом входных параметров и выходных значений
- •§ 2.35. Диалоговые программы
- •2.35.1. Ввод числовых и символьных данных.
- •2.35.2. Вывод результатов вычислений.
- •§ 2.36. Анимационные эффекты
- •§ 2.37. Контроль входных и выходных параметров файл-функции
- •§ 2.38. Отладка программы
- •2.38.1. Понятие о способах отладки программы.
- •2.38.2. Рекомендации по созданию и отладке программ.
- •Часть 7. Создание программ с визуальным интерфейсом
- •§ 2.39. Понятие о графическом интерфейсе пользователя (gui)
- •2.39.1. Предварительные замечания.
- •2.39.2. Основные команды для создания gui.
- •§ 2.40. Общие сведения о визуальной среде guide
- •§ 2.41. Программирование событий в matlab
- •§ 2.42. Свойства основных компонентов в matlab
- •§ 2.43. Диалоговые окна в matlab
- •§ 2.44. Динамическое создание компонентов
- •§ 2.45. Создание меню
- •§ 2.46. Некоторые рекомендации по созданию приложений с графическим интерфейсом пользователя
2.24.2. Интерполяция сплайнами.
Повысить качество аппроксимации данных эксперимента можно посредством использования сплайнов. Поясним, что сплайн – это непрерывная гладкая функция, которая на отрезках области определения равна полиномам определенной степени, т.е. при таком способе интерполяции экспериментальные точки попарно соединяются отрезками полиномов (как правило, на практике используют полиномы невысокой, обычно третьей степени, т.е. имеет место интерполяция кубическими сплайнами). Иными словами, данные эксперимента аппроксимируются не глобально (т.е. не на всем заданном интервале), а по отдельности на каждом частичном интервале между соседними узлами. Именно в этих узлах и должна быть обеспечена стыковка – совпадение значений (график сплайна проходит через узлы), совпадение производных (отсутствие изломов), иногда совпадение вторых производных и т.д. Кроме того, также могут задаваться краевые условия на концах интервала, например, обращение в нуль второй производной.
Рис. 2.24.1. Пример аппроксимации полиномами.
Рис. 2.24.2. Интерполяция кубическими сплайнами.
Для выполнения интерполяции кубическими сплайнами можно использовать функцию spline, обращение к которой имеет вид:
yy=spline(x,y,xx)
В результате будет выполнена интерполяция значений вектора y, заданного для значений аргумента, представленного вектором x и вернет вектор yy, содержащий значения интерполирующей функции для значений аргумента, заданного вектором xx.
Выполним, например, интерполяцию кубическими сплайнами для значений, заданных векторами x и y, и отобразим полученный результат на рис. 2.24.2.
>> x=[1 2 3 4 5 6 7 8 9 10 11 12];
>> y=[2 3 6 4.5 7 7.5 9 8 10 11 5 1];
>> title('Аппроксимация кубическими сплайнами');
>> xx=0:0.05:12;
>> yy=spline(x,y,xx);
>> xlabel('x'); ylabel('y');
>> plot(x,y,'ko',xx,yy,'k-'), grid on;
>> legend('Экспериментальные данные','Кубический сплайн')
Для одномерной (кусочно-полиномиальной) интерполяции экспериментальных данных в системе MATLAB имеется функция interp1, обращение к которой имеет вид:
yy=interp1(x,y,xx,method)
где x – абсциссы аппроксимируемой функции; y – ординаты аппроксимируемой функции; xx – абсциссы контрольных точек, в которых вычисляются значения аппроксимирующих полиномов, возвращаемые в качестве вектора yy; method – способ аппроксимации, задаваемый в виде строки символов (в действительности, достаточно задать лишь первый символ).
Функция interp1 предоставляет на выбор следующие методы:
'nearest' – ступенчатая интерполяция (здесь значение в каждой промежуточной точке принимается равным ближайшему экспериментальному значению – аппроксимация кусочными полиномами нулевой степени (ступеньками));
'linear' – линейная интерполяция (соседние точки соединяются отрезками прямых в соответствии с данными эксперимента – аппроксимация кусочными полиномами первой степени) – используется по умолчанию;
'spline' – интерполяция кубическими сплайнами;
'pchip' или 'cubic' – интерполяция кусочными полиномами Эрмита третьей степени.
При аппроксимации по методу 'spline' в узловых точках непрерывны первая и вторая производные, а во внутренних узлах, соседних с концевыми также непрерывна и третья производная.
При использовании метода 'pchip' вторая производная может иметь разрывы. Сплайн, построенный по методу 'pchip', является монотонным на любом участке, на котором монотонны данные, этот сплайн воспроизводит локальные экстремумы данных.
Для гладких данных предпочтителен метод 'spline', для негладких целесообразно использовать 'pchip'.
На примере, представленном ниже, по сути, приведено сопоставление различных способов интерполяции, реализованные функцией interp1 (графики соответствующих функций представлены на рис. 2.24.3).
Рис. 2.24.3. Сопоставление различных методов интерполяции.
В системе MATLAB можно интерполировать не только одномерные, но также двумерные (для этих целей предназначена функция interp2), трехмерные (для этих целей предназначена функция interp3) и многомерные (для этих целей предназначена функция interpn) данные.
