- •Введение
- •Лабораторная работа ип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
2. Аппроксимация
На практике аппроксимация используется, как правило, для сглаживания данных или для определения параметров (коэффициентов) функций, общий вид которых известен. Аппроксимирующая функция обычно моделирует всю таблицу. Чаще всего для целей аппроксимации используется метод наименьших квадратов, при котором минимизируется сумма квадратов отклонений моделирующей и моделируемой функций в узлах таблицы.
2.1. Моделирование полиномом по методу
наименьших квадратов
Полиномы в Matlab представляются в виде вектора коэффициентов, расположенных в порядке УБЫВАНИЯ степеней. Число элементов в векторе (число коэффициентов полинома) всегда на единицу больше его степени. Нулевые коэффициенты должны содержаться в векторе, несмотря на то, что в записи формулы полинома они в явном виде не присутствуют. Так, например, для определения полинома необходимо задать вектор-строку из шести значений
р=[1 0 -3 2 0 5].
Полиномиальная аппроксимация данных, которые сформированы в виде вектора y, при определенных значениях аргумента, образующих вектор x такой же длины, как и вектор y, по методу наименьших квадратов осуществляется при помощи функции pоlyfit. Обращение к функции следующее:
p=pоlyfit(x,y,n)
где n – порядок аппроксимирующего полинома. Результатом является вектор р длиной n+1 из коэффициентов моделирующего полинома. По K табличным точкам можно построить полином не более чем -й степени.
Примечание: при работе с полиномами полезными бывают следующие функции Matlab:
v=polyval(p,x) – вычисление вектора v значений полинома, заданного вектором коэффициентов р, для аргумента, заданного векторoм х;
r=roots(p) – вычисление вектора r всех корней полинома, заданного вектором коэффициентов р;
p=ploy(r) – определение вектора коэффициентов полинома р по вектору его корней r.
Пример. Пусть некоторая неизвестная функция задана координатами восьми ее точек (таблицей значений). Требуется моделировать полиномом (найти порядок полинома, наилучшим образом приближающего ).
Решение. Используя функцию polyfit, построим пять моделирующих полиномов порядка от 1 до 5.
x=[1 2 3 4 5 6 7 8];
y=[-1.1 0.2 0.5 0.8 0.7 0.6 0.4 0.1];
p1=polyfit(x,y,1)
p2=polyfit(x,y,2)
p3=polyfit(x,y,3)
p4=polyfit(x,y,4)
p5=polyfit(x,y,5)
Подготовим данные для рисования кривых моделирующих полиномов с более мелким, чем в исходной таблице, шагом.
xx=0.5:0.1:8.5;
y1=polyval(p1,xx);
y2=polyval(p2,xx);
y3=polyval(p3,xx);
y4=polyval(p4,xx);
y5=polyval(p5,xx);
Нарисуем табличные точки кружками и моделирующие полиномы линиями разных цветов в одних осях (рис. 5.1).
plot(xx,y1,'r',xx,y2,'g',xx,y3,'b',xx,y4,'m',xx,y5,'k',x,y,'ko'), grid
Рис. 5.1. Аппроксимация полиномом
Для оценки погрешности аппроксимации вычислим погрешность моделирования в табличных точках
e1=sqrt(sum((y-polyval(p1,X)).^2))/length(y)
e2=sqrt(sum((y-polyval(p2,X)).^2))/length(y)
e3=sqrt(sum((y-polyval(p3,X)).^2))/length(y)
e4=sqrt(sum((y-polyval(p4,X)).^2))/length(y)
e5=sqrt(sum((y-polyval(p5,X)).^2))/length(y)
Результаты сведем в табл. 6.1. Из данных, приведенных в таблице, видно, что с увеличением степени полинома качество моделирования улучшается (погрешность уменьшается). Но не следует делать вывод, что всегда, чем выше порядок полинома, тем лучше, и для качественного приближения сразу же нужно брать максимально возможный порядок. При увеличении степени возможно ухудшение приближения – полином проходит почти через все табличные точки или очень близко от них, но плохо ведет себя в промежуточных точках, появляются осцилляции.
Таблица 6.1
Вектор коэффициентов p' |
Порядок полинома |
Аппроксимирующий полином |
Погрешность аппрокси-мации |
[0.1143 -0.2393] |
1 |
|
0,1771 |
[-0.1024 1.0357 -1.7750] |
2 |
|
0,0619 |
[0.0177 -0.3410 1.9461 -2.6500] |
3 |
|
0,0306 |
[-0.0044 0.0961 -0.8146 3.0326 -3.3893] |
4 |
|
0,0200 |
[0.0013 -0.0332 0.3354 -1.7088 4.4880 -4.1750] |
5 |
|
0,0169 |
На практике степень полинома можно оценить по следующему правилу: при увеличении порядка многочлена на единицу, погрешность аппроксимации должна уменьшаться на порядок. В нашем примере можно остановиться на полиноме третьей степени (погрешность уменьшилась с 0,06 до 0,03). Коэффициенты при старших степенях полиномов степени 4 и 5 по модулю значительно меньше, чем остальные коэффициенты. Этот факт так же служит подтверждением того, что порядок аппроксимирующего полинома становится избыточным, и следует прекратить его наращивание.