Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Тема 6.7. Аппроксимация функций



Тема 6.7. Аппроксимация функций

 

6.7.1. Постановка задачи аппроксимации

6.7.2. Метод наименьших квадратов

6.7.3. Технология решения задач аппроксимации функций средствами математических пакетов

6.7.3.1. Технология решения задач аппроксимации средствами MathCad

6.7.3.2. Технология решения задач аппроксимации функций в среде MatLab

6.7.4. Тестовые задания по теме «Аппроксимация функций»

 

 

Постановка задачи аппроксимации

Задача аппроксимации (приближения) функции заключается в замене некоторой функции y=f(x) другой функцией g(x, a0, a1, ..., an) таким образом, чтобы отклонение
g(x, a0, a1, ..., an) от f(x) удовлетворяло в некоторой области (на множестве Х) определённому условию. Если множество Х дискретно (состоит из отдельных точек), то приближение называется точечным, если же Х есть отрезок [a; b], то приближение называется интегральным.

Если функция f(x)задана таблично, то аппроксимирующая функция
g(x, a0, a1, ..., an) должна удовлетворять определённому критерию соответствия ее значений табличным данным.

Подбор эмпирических формул состоит из двух этапов – выбора вида формулы и определения содержащихся в ней коэффициентов.

Если неизвестен вид аппроксимирующей зависимости, то в качестве эмпирической формулы обычно выбирают один из известных видов функций: алгебраический многочлен, показательную, логарифмическую или другую функцию в зависимости от свойств аппроксимируемой функции. Поскольку аппроксимирующая функция, полученная эмпирическим путем, в ходе последующих исследований, как правило, подвергается преобразованиям, то стараются выбирать наиболее простую формулу, удовлетворяющую требованиям точности. Часто в качестве эмпирической формулы выбирают зависимость, описываемую алгебраическим многочленом невысокого порядка.

Наиболее распространен способ выбора функции в виде многочлена:

 

,

 

где φ (x, a0, a1,..., an)=a0φ 0(x)+a1φ 1(x)+...+amφ m(x), а

φ 0(x), φ 1(x), ..., φ m(x) – базисные функции (m-степень аппроксимирующего полинома).

Один из возможных базисов – степенной: φ 0(x)=1, φ 1(x)=х, ..., φ m(x)=хm.

Обычно степень аппроксимирующего полинома m< < n, aT=(a0, a1,..., am) – вектор коэффициентов. Если погрешность исходных данных e, то количество базисных функций выбирается так, чтобы . Здесь S – численное значение критерия близости аппроксимирующей функции φ (x, a0, a1, ..., an) и табличных данных. Отклонения между опытными данными и значениями эмпирической функции

 

ei = φ (xi, a0, a1, ..., am) – yi, i = 0, 1, 2,..., n.

 

Методы определения коэффициентов выбранной эмпирической функции различаются критерием минимизации отклонений.

Метод наименьших квадратов

Одним из способов определения параметров эмпирической формулы является метод наименьших квадратов. В этом методе параметры a0, a1, ..., anопределяются из условия минимума суммы квадратов отклонений аппроксимирующей функции от табличных данных.

Вектор коэффициентов aT определяют из условия минимизации

 

 

где (n+1) – количество узловых точек.

Условие минимума функции Е приводит к системе линейных уравнений относительно параметров a0, a1, ..., am. Эта система называется системой нормальных уравнений, её матрица – матрица Грама. Элементами матрицы Грама являются суммы скалярных произведений базисных функций

 

 

Для получения искомых значений параметров следует составить и решить систему (m+1) уравнения

 

 

Пусть в качестве аппроксимирующей функции выбрана линейная зависимость y= a0+a1x. Тогда

 

.

 

Условия минимума:

 

 

Тогда первое уравнение имеет вид

 

 

Раскрывая скобки и разделив на постоянный коэффициент, получим

 

.

 

 

Первое уравнение принимает следующий окончательный вид:

 

.

 

Для получения второго уравнения, приравняем нулю частную производную по а1:

 

.

.

 

Система линейных уравнений для нахождения коэффициентов многочлена (линейная аппроксимация):

 

 

Введем следующие обозначения - средние значения исходных данных. Во введенных обозначениях решениями системы являются

 

.

 

В случае применения метода наименьших квадратов для определения коэффициентов аппроксимирующего многочлена второй степени y=a0+a1x+а2х2 критерий минимизации имеет вид

 

.

 

Из условия получим следующую систему уравнений:

 

 

Решение этой системы уравнений относительно а0, а1, а2 позволяет найти коэффициенты эмпирической формулы - аппроксимирующего многочлена 2-го порядка. При решении системы линейных уравнений могут быть применены численные методы.

В случае степенного базиса (степень аппроксимирующего полинома равна m) матрица Грама системы нормальных уравнений G и столбец правых частей системы нормальных уравнений имеют вид

 

G =

 

В матричной форме система нормальных уравнений примет вид:

 

.

 

Решение системы нормальных уравнений

 

 

найдется из выражения

В качестве меры уклонения заданных значений функции y0, y1, ..., yn от многочлена степени m - φ (x)=a0 φ 0(x)+a1 φ 1(x)+...+am φ m(x),

принимается величина

 

 

(n+1) – количество узлов, m – степень аппроксимирующего многочлена, n+1> =m.

На рис.6.7.2-1 приведена укрупненная схема алгоритма метода наименьших квадратов.

 

Рис. 6.7.2-1. Укрупненная схема алгоритма метода наименьших квадратов

 

Данная схема алгоритма метода наименьших квадратов является укрупненной и отражает основные процессы метода, где n+1 – количество точек, в которых известны значения хi, yi; i=0, 1, …, n.

Блок вычисления коэффициентов предполагает вычисление коэффициентов при неизвестных с0, с1, …, сmи свободных членов системы из m+1 линейных уравнений.

Следующий блок – блок решения системы уравнений – предполагает вычисление коэффициентов аппроксимирующей функции с0, с1, …, сm.

Далее вычисляется невязка

 

 

Пример 6.7.2-1. Аппроксимировать следующие данные многочленом второй степени, используя метод наименьших квадратов.

 

x 0.78 1.56 2.34 3.12 3.81
y 2.50 1.20 1.12 2.25 4.28

Запишем в следующую таблицу элементы матрицы Грамма и столбец свободных членов:

i x x2 x3 x4 y xy x2y
0.78 0.608 0.475 0.370 2.50 1.950 1.520
1.56 2.434 3.796 5.922 1.20 1.872 2.920
2.34 5.476 12.813 29.982 1.12 2.621 6.133
3.12 9.734 30.371 94.759 2.25 7.020 21.902
3.81 14.516 55.306 210.72 4.28 16.307 62.129
11.61 32.768 102.76 341.75 11.35 29.770 94.604

 

Система нормальных уравнений выглядит следующим образом

 

 

Решением этой системы являются:

 

а0 = 5.022; а1 =-4.014; а2=1.002.

 

Искомая аппроксимирующая функция

 

 

Сравним исходные значения yсо значениями аппроксимирующего многочлена, вычисленными в тех же точках:

 

 

Вычислим среднеквадратическое отклонение (невязку)

 

.


Пример 6.7.3-1. Получить аппроксимирующие полиномы первой и второй степени методом наименьших квадратов для функции, заданной таблично.

 

 

Пример 6.7.3-2. Осуществить аппроксимацию таблично заданной функции многочленом 1-й, 2-й и 3-й степени.

В этом примере рассмотрено использование функции linfit(x, y, f), где x, y- соответственно векторы значений аргументов и функции, а f – символьный вектор базисных функций. Использование этой функции позволяет определить вектор коэффициентов аппроксимации методом наименьших квадратов и далее невязку - среднеквадратическую погрешность приближения исходных точек к аппроксимирующей функции (сkо). Степень аппроксимирующего многочлена задается при описании символьного вектора f. В примере представлена аппроксимация таблично заданной функции многочленом 1-й, 2-й и 3-й степени. Вектор s представляет собой набор аппроксимирующих коэффициентов, что позволяет получить аппроксимирующую функцию в явном виде.

 

 

 

В Mathcad имеется также большое количество встроенных функций, предназначенных для получения аналитического выражения функции регрессии. Однако в этом случае необходимо знать форму аналитического выражения. Ниже приведены встроенные функции, различающиеся видом регрессии, позволяющие (при заданных начальных приближениях) определить аналитическую зависимость функции, то есть возвращающие набор аппроксимирующих коэффициентов:

expfit(X, Y, g) Решение ОДУ 2-го порядка вида у”=F(x, y, z), где z=y’ также может быть получено методом Рунге-Кутты 4-го порядка. Ниже приведены формулы для решения ОДУ:

  • регрессия экспонентой
  • sinfit(X, Y, g) – регрессия синусоидой
  • pwfit(X, Y, g) – регрессия степенной зависимостью
  • logfit(X, Y, g) – регрессия логарифмической функцией

 

В этих функциях: х – вектор аргументов, элементы которого расположены в порядке возрастания; y – вектор значений функции; g – вектор начальных приближений коэффициентов a, b и с; t - значение аргумента, при котором определяется функция.

В приведенных ниже примерах для оценки связи между массивами данных и значениями аппроксимирующей функции подсчитывается коэффициент корреляции corr(). Если табличные данные неплохо аппроксимируется каким-либо видом регрессии, то коэффициент корреляции близок к единице. Чем меньше коэффициент, тем хуже связь между значениями этих функций.

 

Пример 6.7.3-3. Найти аппроксимирующие полиномы первой, второй, третьей и четвертой степени и вычислить коэффициенты корреляции.

 

 

Помимо вычисления значений функций в пределах интервала данных все рассмотренные ранее функции могут осуществлять экстраполяцию (прогнозирование поведения функции за пределами интервала заданных точек) с помощью зависимости, основанной на анализе расположения нескольких исходных точек на границе интервала данных. В Mathcad имеется и специальная функция предсказания predict(Y, m, n), где Y – вектор заданных значений функции, обязательно взятых через равные интервалы аргумента, а m – число последовательных значений Y, на основании которых функция predict возвращает n значений Y.

Значений аргумента для данных не требуется, поскольку по определению функция действует на данных, идущих друг за другом с одинаковым шагом. Функция использует линейный алгоритм предсказания, который точен, когда экстраполируемая функция гладкая. Функция может быть полезна, когда требуется экстраполировать данные на небольшие расстояния. Вдали от исходных данных результат чаще всего оказывается неудовлетворительным.

 

 

Пример 6.7.3-4. Аппроксимировать функцию, заданную таблично, многочленом по МНК.

В этом примере рассмотрено использование функции p=polyfit(x, y, n), где x, y – соответственно векторы значений аргументов и функции, n – порядок аппроксимирующего полинома, а p – полученный в результате вектор коэффициентов аппроксимирующего полинома длинной n+1.

 

> > x=[1.2, 1.4, 1.6, 1.8, 2.0]; > > x x = 1.2000 1.4000 1.6000 1.8000 2.0000 > > y=[-1.15, -0.506, 0.236, 0.88, 1.256]; > > y y = -1.1500 -0.5060 0.2360 0.8800 1.2560 > > % > > % > > p1=polyfit(x, y, 1); > > p1 p1 = 3.0990 -4.8152 > > y1=polyval(p1, x); > > y1 y1 = -1.0964 -0.4766 0.1432 0.7630 1.3828 > > cko1=sqrt(1/5*sum((y-y1).^2)); > > cko1 cko1 = 0.0918 > > plot(x, y, 'ko', x, y1, 'r-')   > > p2=polyfit(x, y, 2); > > p2 p2 = -1.1321 6.7219 -7.6229 > > y2=polyval(p2, x); > > y2 y2 = -1.1870 -0.4313 0.2338 0.8083 1.2922 > > cko2=sqrt(1/5*sum((y-y2).^2)); > > cko2 cko2 = 0.0518 > > plot(x, y, 'ko', x, y2, 'r-')

 

Пример 6.7.3-5. Аппроксимировать функцию, заданную таблично, многочленом по МНК.

Пример 6.7.3-5
> > % Функция задана таблицей значений. Аппроксимировать её по МНК > > % Введём функцию (x, f(x)) > > x=[0, 1.13, 1.5, 2.25, 3]; > > y=[4.57, 0.68, 0.39, -1.9, -4.4]; > > % Вычислим приближения с различной степенью > > p0 = polyfit(x, y, 0); > > p1 = polyfit(x, y, 1); > > p2 = polyfit(x, y, 2); > > p3 = polyfit(x, y, 3); > > % Вычислим ошибки (СКО) в квадрате > > y0 = polyval(p0, x); > > y1 = polyval(p1, x); > > y2 = polyval(p2, x); > > y3 = polyval(p3, x); > > err0 = 1 / (4 - 0) * sum((y - y0).^ 2); > > err1 = 1 / (4 - 1) * sum((y - y1).^ 2); > > err2 = 1 / (4 - 2) * sum((y - y2).^ 2); > > err3 = 1 / (4 - 3) * sum((y - y3).^ 2); > > % Сравнивая, видим, что лучшую точность даёт n = 1 > > err0 = 11.0956 > > err1 = 0.1308 > > err2 = 0.1962 > > err3 = 0.1803 > >

Пример 6.7.3-5. Аппроксимировать функцию, заданную таблично, полиномами различной степени по МНК.

> > x=[0.1 0.2 0.4 0.5 0.6 0.8 1.2] x = 0.1000 0.2000 0.4000 0.5000 0.6000 0.8000 1.2000 > > y=[-3.5 -4.8 -2.1 0.2 0.9 2.3 3.7] y = -3.5000 -4.8000 -2.1000 0.2000 0.9000 2.3000 3.7000 > > plot(x, y, 'ko') > > hold on > > p4=polyfit(x, y, 4); > > p5=polyfit(x, y, 5); > > p6=polyfit(x, y, 6); > > > > t=0.1: 0.01: 1.2; > > p4=polyval(p4, t); > > p5=polyval(p5, t); > > p6=polyval(p6, t); > > plot(t, p4, 'k-', t, p5, 'k: ', t, p6, 'k-.') > > legend('Табличные данные', 'n=4', 'n=5', 'n=6', 0) > >

6.7.4. Тестовые задания по теме
«Аппроксимация функций»

 

Аппроксимация – это

1) получение функции более простого вида, описывающей исходную с достаточной степенью точности

2) частный случай интерполяции

3) замена исходной функции функцией другого вида

4) в списке нет правильного ответа

 

Тема 6.7. Аппроксимация функций

 

6.7.1. Постановка задачи аппроксимации

6.7.2. Метод наименьших квадратов

6.7.3. Технология решения задач аппроксимации функций средствами математических пакетов

6.7.3.1. Технология решения задач аппроксимации средствами MathCad

6.7.3.2. Технология решения задач аппроксимации функций в среде MatLab

6.7.4. Тестовые задания по теме «Аппроксимация функций»

 

 


Поделиться:



Последнее изменение этой страницы: 2017-03-17; Просмотров: 9565; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.046 с.)
Главная | Случайная страница | Обратная связь