Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика рейтинг 3.doc
Скачиваний:
38
Добавлен:
20.09.2019
Размер:
189.95 Кб
Скачать

15. Интерполяция и аппроксимация таблично заданных функций в среде matlab

Табличная функция задается с помощью двух векторов: значений аргумента и

значения функции аналогично п.2.5.1. Пример задания табличной функции

TX=[0 2 4 6 8 10]

TY=[0 4 16 36 64 100]

Интерполяция однопараметрической табличной функции в MATLAB выполняется с помощью функции interp1 в следующем формате

Искомое_значение_Y=interp1(вектор_X, вектор_Y, значение_поиска_X,’метод’)

где вектор_X – вектор аргументов табличной функции;

вектор_Y – вектор значений табличной функции;

значение_поиска_X – точка аргумента между узлами таблицы;

метод – название численного метода интерполяции:

- nearest – интерполяция по ближайшей точке;

- linear – линейная интерполяция;

- cubic – кубическая интерполяция;

- spline – интерполяция кубическим сплайном.

Пример кубической интерполяции табличной функции в точке x=3

yi=interp1(TX,TY,3,'cubic')

Наиболее простой способ аппроксимации степенным полиномом в MATLAB –

использование функции polyfit со следующим синтаксисом

вектор_p = polyfit (вектор_x, вектор_y, порядок_n)

где вектор_p – коэффициенты полинома аппроксимации степенным рядом;

вектор_x – массив значений независимой переменной;

вектор_y – массив значений зависимой переменной;

порядок_n – порядок аппроксимирующего полинома.

Пример использования polyfit для полинома второй степени

P=polyfit(TX,TY,2)

Для получения коэффициентов интерполяции более сложной базисной функции

следует использовать функцию lsqcurvefit со следующим синтаксисом

коэффициенты = lsqcurvefit(имя_функции_g(x),Xo,вектор_X,вектор_Y)

где коэффициенты – вектор коэффициентов базисной функции g(x);

Xo – вектор начальных значений коэффициентов аппроксимации;

вектор_TX – значения точек зависимой переменной табличной функции;

вектор_TY - значения точек зависимой переменной табличной функции.

Аппроксимирующая функция может быть задана в следующем формате

имя_функции=inline(‘выражение’,’массив_коэффициентов’,’массив_аргументов’)

Пример аппроксимации с помощью в среде MATLAB

x0=[1 1 1] % вектор начальных значений коэффициентов

g=inline('a(3)*TX.^2+a(2)*TX+a(1)','a','TX'); %функция аппроксимации

coef=lsqcurvefit(g,x0,TX,TY) % коэффициенты аппроксимации

MF=coef(1)+coef(2)*TX+coef(3)*TX.^2; % расчет апроксимированной функции

e=MY-MF % расчет ошибок аппроксимации

se=sum(e.^2) % суммарная ошибка аппроксимации

emax=max(abs(e)) % максимальная ошибка