6
Лабораторная работа № 1 Интерполяция в системе Matlab
Цель работы: получить аналитическое выражение функциональной зависимости от аргумента, заданного аналитически или графиком.
Общие сведения
Интерполяция - построение приближенного или точного аналитического выражения функциональной зависимости, когда о ней известны только соотношения между аргументом и соответствующими значениями функции в конечном ряде точек. Интерполяция имеет следующие применения в АСУТП:
-линеаризация и интерполяция сигналов датчиков;
-формирование непрерывно изменяющегося сигнала по коэффициенту временного полинома или числовой программе в системах программного регулирования;
-получение аналитического выражения статической (обычно в виде квадратичной формы от входных воздействий) или динамической (обычно в виде дробно-рациональной передаточной функции) характеристик по экспериментально полученным точкам в задачах идентификации и характеризации;
-получение аналитического выражения корреляционных функций или спектральных плотностей при статистической обработке данных;
-переход от одной формы математического описания к другой в задачах характеризации;
-интерполяция таблиц, номограмм, диаграмм, хранящихся в памяти ЭВМ, для определения каких-либо параметров, например, параметров ПИДрегулятора по номограммам.
Интерполирование функций будем вести с помощью компьютерных технологий. Компьютерная технология интерполяции – есть последовательность выполнения функций и команд компьютера для решения задач интерполяции. Она состоит из следующих действий:
-выбор вида функции интерполяции с помощью компьютера;
-использование функций и команд универсального программного средства для получения математической модели;
-способы построения графиков функций, заданных в табличном и формульном видах;
-соответствие графика, построенного по данным таблицы аналитической функции;
-способы вычисления значений функции и ее табулирование;
-операции с векторами и матрицами;
-решение систем линейных и нелинейных уравнений;
-способы вычисления табличных разностей.
7
Компьютерные технологии решения задач интерполяции в системе Matlab.
Технология решения задач интерполяции состоит в выполнении на компьютере следующих действий:
-ввод исходных данных;
-визуализация исходных данных;
-выбор функции интерполяции;
-образование системы уравнений;
-решение системы уравнений;
-проверка правильности решения задачи;
-определение погрешности интерполяции.
Внастоящем разделе приводятся сведения о системе Matlab лишь с позиции решения задач интерполяции и умения выполнять перечисленные выше действия.
Ввод исходных данных.
Диалог с системой Matlab происходит посредством командного окна, которое становится доступным пользователю сразу же после запуска программы. Окно имеет меню, панель инструментов, полосы прокрутки, а также зону редактирования и просмотра.
Здесь же можно увидеть и строку ввода со знаком приглашения ». Попробуем выполнить простейшие действия. Введем в строку ввода выражение: » х = 2 + 3. Для выполнения действия нажмем клавишу
<Enter>.
Невозможность редактирования ранее введенной команды простой установкой курсора в нужную строку является одной из особенностей системы Matlab. Для того чтобы повторить ранее введенную команду, необходимо установить курсор в строку ввода и воспользоваться клавишами <↑> (стрелка вверх) и <↓> (стрелка вниз). Эти клавиши позволяют пролистать стек введенных ранее команд и оставить в строке именно ту команду, которая необходима. Команду можно выполнить сразу (нажав клавишу <Enter>) или после редактирования.
Методический пример
Пусть функция задана в виде таблицы (табл. 1). Это зависимость плотности перегретого пара от температуры при давлении Р = 0,470 МПа.
Таблица 1 Зависимость плотности перегретого пара от температуры при
давлении Р = 0,470 МПа
8
Поскольку MATLAB читает только латинские буквы, присвоим t=x,
ρ=y.
Создадим и введем два вектора-строки х и у: x = [170 180 190 200 210 220 230 240 250 260];
y = [2.382 2.321 2.265 2.211 2.161 2.113 2.067 2.024 1.982 1.943];
На рис. 1 показаны векторы и отклики, полученные при нажатии клавиши <Enter>.
Рис. 1 Векторы и отклики зависимости плотности перегретого пара от температуры
Итак, мы имеем две вектор-строки (x и y), которые содержат интересующие нас данные.
Визуализация исходных данных
Система Matlab имеет большие возможности графического представления информации.
Познакомимся только с теми из них, которые нам необходимы. Основной является функция plot, которая имеет вид
plot(x1, y1, x2, y2, ..., xn, yn, sn).
Здесь: xi - i-тый массив аргументов, заданный в виде вектора; уi - массив значений функции для заданного массива аргументов; si - стиль графика для i-той функции.
Стиль можно не задавать. В этом случае проблему выбора стиля система MATLAB решает самостоятельно.
Построим график функции, заданной табл. 1. Последовательность команд будет иметь вид: x = [170 180 190 200 210 220 230 240 250 260];
y = [2.382 2.321 2.265 2.211 2.161 2.113 2.067 2.024 1.982 1.943]; plot(x,y).
После нажатия кнопки <Enter> получим график функции рис. 2.
9
Рис. 2 График зависимости плотности пара от температуры
Выбор вида функции интерполяции
В АСУТП наиболее часто встречается интерполяция таблиц, графиков, номограмм, диаграмм, хранящихся в памяти ЭВМ, для определения каких-либо параметров. Поэтому необходимо иметь точное аналитическое описание функций. Такой выбор может обеспечить интерполяция точная в узлах.
Интерполяция точная в узлах - такая интерполяция, при которой значения функции интерполяции совпадают с ее действительными значениями во всех узлах. Выбор вида функции интерполяции будем искать в виде полинома.
Полиномиальная интерполяция.
Интерполяция полиномами в среде Matlab осуществляется с помощью функции polyfit, которая имеет вид: polyfit (x,y,n).
Здесь: x - вектор узлов интерполяции; y- вектор значений функции в узлах интерполяции; n - степень полинома.
Откликом при реализации функции polyfit является вектор коэффициентов: a, b, c, d... полинома axn + bxn-1 +cxn-2 +....
Пусть функция задана в виде табл. 1. Будем искать функцию интерполяции, представляющую собой многочлен третьей степени.
Процедуры интерполяции в Matlab имеют вид:
>>x=[170 180 190 200 210 220 230 240 250 260];
>>y=[2.382 2.321 2.265 2.211 2.161 2.113 2.067 2.024 1.982 1.943];
10
>> p=polyfit (x, y, 3)
После нажатия кнопки <Enter> получим ответ в следующем виде: p =
-0.0000 0.0000 -0.0161 4.1757
Тогда функцией интерполяции будет следующий полином третьей степени:
φ(x) = -0.0161 x + 4.1757,
или
φ(t) = -0.0161 t + 4.1757.
По этой формуле можно определять значение плотности пара в зависимости от температуры.
Всистеме Matlab имеется функция вычисления математического выражения при заданных значениях аргументов. Функция имеет вид:
polyval (p, x).
Здесь: p - вычисляемая функция; x - вектор аргументов функции. Воспользуемся этой функцией для проверки достоверности
результатов интерполяции.
Введем функцию f=polyval (p,x) и нажмем кнопку <Enter>. Откликом будет следующее решение:
f =
2.3817 2.3215 2.2648 2.2113 2.1607 2.1127 2.0672 2.0239
1.9825 1.9427
Сравнивая это решение с вектором у исходных данных, видим, что они отличаются несущественно, а значит интерполяционный полином f(x) третьей степени хорошо отображает исходную функцию.
Вычислим теперь абсолютную среднеквадратическую погрешность аппроксимации по формуле:
Внашем случае:
Тогда вычислительные процедуры в системе Matlab будут иметь вид: z = у - f;
w = z . * z ;
Здесь точка перед знаком умножения означает что операция умножения выполняется поэлементно, т.е. с каждым элементом массива чисел (вектора строки).
R = sum (w);