Нахождение приближающей функции в виде линейной функции и квадратичного трехчлена

Ищем приближающую функцию в виде:

. (7.11)

Находим частные производные

. (7.12)

Составляем систему вида (7.8)

(Здесь и далее сумма ведется по переменной .)

Далее имеем

,

(7.13)

Разделив каждое уравнение (7.13) на n, получаем

,

.

Введем обозначения

.

Тогда последняя система будет иметь вид

или в матричной форме

.

Откуда

. (7.14)

Вычислив значения параметров a, b в соответствие с (7.14), получаем конкретные значения и, следовательно, конкретный вид линейной функции (7.11).

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

. (7.15)

Находим частные производные:

Составляем систему вида (7.8)

Далее имеем

,

Разделив каждое уравнение на n и перенеся члены, не содержащие неизвестные параметры в правую часть получаем:

,

, (7.16)

.

Решив систему (7.16) относительно неизвестных a, b, c, находим значения параметров приближающей функции.

Рис. 7.2

Для нахождения решения задачи о нахождении линейного и квадратичного трехчленов в пакете MATLAB необходимо выполнить следующую последовательность команд:

 

% задание исходных данных

>> N=10;

>> i=1:N;

>> Xmin=0;

>> Xmax=10;

>> x(i)=Xmin+(Xmax-Xmin)/(N-1)*(i-1);

>> y(i)=0.2*x(i);% точные значения функции

% задание шума с равномерным законом распределения на

% отрезке [b,a]

>> a=0.2

>> b=-0.1;

>> Yrnd=b+(a-b)*rand(N,1);

>> y1=y+Yrnd'; % создание зашумленных данных

>> plot(x,y,x,y1,'o'); % визуализация точной и зашумленной

% последовательностей (рис. 7.2)

% вычисление элементов матрицы M в (7.14)

>> tmp=x(i).^2;

>> M(1,1)=1/N*sum(tmp);

>> M(1,2)=1/N*sum(x);

>> M(2,1)=M(1,2);

>> M(2,2)=1;

% вычисление элементов вектора d

>> d(1,1)=1/N*dot(x,y1);

>> d(2,1)=1/N*sum(y1);

% решение системы линейных уравнений (7.14)

>> Coeff=A^-1*d;

Coeff =

0.1941

0.0993

>> F=inline('a*x+b','a','b','x'); % задание аппроксимирующей

% функции

>> tmp1(i)=feval(F,Coeff(1,1),Coeff(2,1),x(i));% вычисление

% значений

% аппроксимирующей

% функции

% вычисление суммы квадратов отклонений

% при линейной аппроксимации

>> tmp=tmp1-y1;

>> dot(tmp,tmp)

ans =

0.0685

% аппроксимация исходных данных полиномом второй степени

% задание матрицы системы линейных уравнений в (7.16)

>> A(1,1)=1/N*sum(x.^4);

>> A(1,2)=1/N*sum(x.^3);

>> A(1,3)=1/N*sum(x.^2);

>> A(2,1)=A(1,2);

>> A(2,2)=A(1,3);

>> A(2,3)=1/N*sum(x);

>> A(3,1)=A(2,2);

>> A(3,2)=A(2,3);

>> A(3,3)=1;

% задание вектора столбца свободных членов

>> d(1,1)=1/N*dot(x.^2,y1);

>> d(2,1)=1/N*dot(x,y1);

>> d(3,1)=1/N*sum(y1);

% решение системы линейных уравнений (7.16)

>> Coeff=A^-1*d

Coeff =

0.0004

0.1904

0.1049

>> F=inline('a*x.^2+b*x+c','a','b','c','x'); % задание

% аппроксимирующей

% функции

% вычисление суммы квадратов отклонений при квадратичной

% интерполяции

>> tmp2(i)=feval(F,Coeff(1,1),Coeff(2,1),Coeff(3,1),x(i));

>> tmp=tmp2-y1;








Дата добавления: 2015-08-21; просмотров: 1475;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.018 сек.