n |
|
|
|
|
|
yi F xi , а,b,c Fb xi , а,b,с 0, |
(VII.8) |
||||
i 1 |
|
|
|
|
|
n |
|
|
|
|
|
y F x , а,b,c F x , а,b,с 0 . |
|
||||
|
i |
i |
|
c i |
|
i 1 |
|
|
|
|
|
Решив систему (VII.8) относительно параметров а, b, с, получаем конкретный вид функции F(x,a,b,c). Изменение количества параметров не приведет к изменению сути самого подхода, а выразится в изменении количества уравнений в системе (VII.8).
Значения разностей |
|
|
|
|
|
yi F xi , a,b,с i |
(VII.9) |
||
называют |
отклонениями |
измеренных |
значений |
от |
вычисленных по формуле (VII.5). |
|
|
||
Сумма квадратов отклонений |
|
|
|
|
|
n |
|
|
|
|
i2 |
|
(VII.10) |
|
i
в соответствии с принципом наименьших квадратов для заданного вида приближающей функции должна быть наименьшей.
Из двух разных приближений одной и той же табличной функции лучшим считается то, для которого (VII.10) имеет наименьшее значение.
7.2. Нахождение приближающей функции в виде линейной функции и квадратичного трехчлена
Ищем приближающую функцию в виде: |
|
|
F x, а,b аx b. |
(VII.11) |
|
Находим частные производные |
|
|
Ф |
F |
(VII.12) |
а |
x, b 1. |
|
|
158 |
|
Составляем систему вида (VII.8)
yi axi b xi 0 ,
yi axi b 0 .
Примечание.
Здесь и далее сумма берется по переменной i=1,2,... ,n. Имеем:
xi yi a xi2 b xi 0 ,
(VII.13)
yi a x i2 bn 0 .
Разделив каждое уравнение (VII.13) на п, получаем:
1 |
2 |
|
|
1 |
|
|
|
|
1 |
|
|||
|
|
|
|
xi |
|
a |
|
xi |
b |
|
xi yi , |
||
|
|
|
n |
||||||||||
n |
|
|
|
n |
|
|
|
|
|
||||
1 |
2 |
|
|
|
|
1 |
|
|
|
|
|||
|
|
|
xi |
|
a b |
|
yi . |
|
|
||||
|
|
n |
|
|
|||||||||
n |
|
|
|
|
|
|
|
|
|
|
|||
Введем обозначения:
1 |
xi M x , |
1 |
yi M y , |
||
n |
|
n |
|
|
|
1 |
xi yi M x y , |
1 |
x i2 |
M x 2 . |
|
n |
|
|
n |
|
|
Тогда последняя система будет иметь вид:
M x 2 a M x b M x y , M x 2 a b M y .
159
или в матричной форме:
M x2M x
Откуда:
M x a |
M x y |
||
1 |
|
|
. |
b |
|
M y |
|
a |
M |
2 |
M |
1 |
M |
|
(VII.14) |
||
|
|
x |
|
|
x |
|
|
x y . |
|
b |
|
M x |
1 |
|
M y |
|
|||
Вычислив значения параметров a, b в соответствие с (VII.14), получаем конкретные значения и, следовательно, конкретный вид линейной функции (VII.11).
В случае нахождения приближающей функции в форме квадратного трехчлена имеем:
F x, а,b,с аx2 |
bx c. |
(VII.15) |
|||
Находим частные производные: |
|
|
|
|
|
F |
x2 , F b, |
F |
1. |
|
|
a |
b |
|
c |
|
|
Составляем систему вида (VII.8):
yi axi2 bxi c xi2 0 ,
yi axi2 bxi c xi 0 ,
yi axi2 bxi c 0 .
Далее имеем:
yi xi2 a xi4 b xi3 c xi2 0 ,
yi xi a xi3 b xi2 c xi 0 ,
yi a xi2 b xi c n 0 .
160
Разделив каждое уравнение на n и перенеся члены, не содержащие неизвестные параметры в правую часть, получаем:
1 |
4 |
1 |
|
3 |
|
1 |
|
2 |
|
|
1 |
2 |
|
|||||||||||||
|
|
|
xi |
a |
|
|
|
xi |
b |
|
|
xi |
c |
|
|
yi xi |
, |
|||||||||
|
|
|
|
|
|
|
n |
|||||||||||||||||||
n |
|
|
n |
|
|
|
n |
|
|
|
|
|
|
|
||||||||||||
1 |
xi3 |
|
|
1 |
|
xi2 |
|
1 |
xi |
|
|
1 |
yi xi , |
|
||||||||||||
|
|
a |
|
|
|
b |
|
|
c |
|
|
|
(VII.16) |
|||||||||||||
|
|
|
|
n |
||||||||||||||||||||||
n |
|
|
|
n |
|
|
|
|
|
n |
|
|
|
|
|
|
|
|||||||||
1 |
|
2 |
|
|
1 |
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
||||
|
|
xi |
a |
|
|
|
xi |
b c |
|
yi . |
|
|
|
|
|
|
||||||||||
|
|
|
|
n |
|
|
|
|
|
|
||||||||||||||||
n |
|
|
|
n |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
Решив систему (VII.16) относительно неизвестных a, b, с, находим значения параметров приближающей функции. Пример VII.1. Даны табличные значения линейной зависимости вида у = 0.2x, каждому из которых добавлены случайные числа, имеющие равномерный закон распределения на интервале [-0.1, 0.2]. Найти коэффициенты линейной и квадратичной аппроксимирующих функций.
Решение:
%задание исходных данных
»N=10;
»i=l:N;
»Xmin=0;
»Xmax=10;
»x(i)=Xmin+(Xmax-Xmin)/(N-l)*(i-l);
»у(i)=0.2*x(i); % точные значения функции
%заданиешумасравномернымзакономраспределенияна
%отрезке[b,а]
»а=0.2
»b=-0.1;
»Yrnd=b+(a-b)*rand(N,1);
»yl=y+Yrnd'; % создание зашумленных данных
»plot(x,y,x,yl,'о'); % визуализацияточнойизашумленной
%последовательностей(рис. VII.2)
161
2
1,5
1
0,5
0
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
Рис.VII.2.Исходныеданныеиточнаязависимость у=0.2х
%вычислениеэлементовматрицыМв(VII.14) » tmp=x(i).^2;
» M(l,l)=l/N*sum(tmp); » M(l,2)=l/N*sum(x); » М(2,1)=М(1,2);
» M(2,2)=l;
%вычислениеэлементоввектораd
»d(l,l)=l/N*dot(x,yl);
»d(2,l)=l/N*sum(yl);
% решение системы линейных уравнений (VII.14) » Coeff=A^-l*d;
Coeff =
0.1941
0.0993
» F=inline('a*x+b','a','b','x');
%задание аппроксимирующей функции
»tmpl(i)=feval(F,Coeff(1,1),Coeff(2,1),x(i));
%вычисление значений
%аппроксимирующей
%функции
162
%вычисление суммы квадратов отклонений
%при линейной аппроксимации
»tmp=tmpl-yl;
»dot(trap, tmp) ans =
0.0685 % аппроксимация исходных данных полиномом
% второй степени задание матрицы системы % линейных уравнений в (VII.16)
»A(l,l)=l/N*sum(x.^4);
»А(1,2)=1/N*sum(х.^3);
»A(l,3)=l/N*sum(x.^2);
»А(2,1)=А(1,2);
»А(2,2)=А(1,3);
»A(2,3)=l/N*sum(x);
»А(3,1)=А(2,2);
»А(3,2)=А(2,3);
»А(3,3)=1;
%задание вектора столбца свободных членов
» d(l,l)=l/N*dot(x.^2,yl); » d(2,l)=l/N*dot(x,yl);
» d(3,l)=l/N*sum(yl) ;
%решение системы линейных уравнений(VII.16) » Coeff=A^-l*d
Coeff = 0.0004 0.1904 0.1049
» F=inline('а*х.^2+Ь*х+с','а','b','с','х'); %задание аппроксимирующей функции, вычисление
%суммы квадратов отклонений при квадратичной
%интерполяции
»tmp2(i)=feval(F,Coeff(1,1).Coeff(2,1), Coeff(3,1),x(i));
»tmp=tmp2-yl; dot(tmp,tmp)
163
ans = 0.0687
Найти решение рассмотренной ранее задачи в пакете MATLAB можно другим способом. Для этого следует использовать тот факт, что коэффициенты искомой функции, минимизирующей сумму квадратов отклонений, являются решением переопределенной системы уравнений. Для случая интерполяции полиномом второй степени данных, приведенных ранее, система уравнений имеет вид:
|
y1 |
|
|
1 |
t |
t 2 |
|
|
Coeff |
|
|
||
|
1 |
|
|
|
|
|
1 |
1 |
|
|
|
||
|
y12 |
|
|
1 |
t2 |
t22 |
|
|
Coeff0 |
. |
|||
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
t |
|
|
|
|
|
||||
y1 |
|
|
1 |
10 |
t 2 |
|
|
Coeff2 |
|
||||
|
10 |
|
|
|
|
|
10 |
|
|
|
|
|
|
Решение данной системы уравнений, удовлетворяющее методу наименьших квадратов, находится с помощью оператора \:
где |
|
|
|
Coeff = A\yl , |
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
y1 |
|
|
1 |
t |
1 |
t 2 |
|
|
|
|
1 |
|
|
|
t |
1 |
|
|
y1 |
|
|
y1 |
|
A |
1 |
|
t 2 |
|
|
|
2 |
, |
|
|
2 |
2 . |
||||
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
||||
|
|
y1 |
|
|
1 |
t |
|
t 2 |
|
|
|
|
|
10 |
|
|
|
10 |
10 |
|
|
Таким образом, альтернативный подход к нахождению коэффициентов аппроксимирующего полинома реализуется выполнением следующей последовательности команд:
» В=[ones(size(x')) х' х'.^2]
В =
164
1.0000 |
0 |
0 |
1.0000 1.1111 1.2346
1.0000 2.2222 4.9383
1.0000 3.3333 11.1111
1.0000 4.4444 19.7531
1.0000 5.5556 30.8642
1.0000 6.6667 44.4444
1.0000 7.7778 60.4938
1.0000 8.8889 79.0123
1.0000 10.0000 100.0000 » Coeff=B\yl
ans = 0.1049 0.1904 0.0004
Линейную комбинацию известных функций пакета MATLAB можно применять с целью решения системы линейных уравнений методом наименьших квадратов с использованием аппроксимации. Для этого можно использовать описанный в предыдущем разделе метод.
Пример VII. 2. Используя метод наименьших квадратов, найти коэффициенты функции F(x, a, b, c) = a·x2 + b·x + c·1/(x + 1),
аппроксимирующей данные, представленные в табл. VII. 2. Таблица 7. 2
Исходные данные примера 7. 2
х |
0 |
0. 2 |
0. 4 |
0. 6 |
0. 8 |
1. 0 |
|
|
|
|
|
|
|
у |
0. 43 |
0. 22 |
0. 8 |
0. 12 |
1. 0 |
2. 0 |
Решение:
% Задание исходных данных
» vx=[0;0.2;0.4;0.6;0.8;l] vx =
0
0.2000
165
0.4000
0.6000
0.8000
1.0000
»vy=[0.43;0.22;0.8;0.12;l;2] vy =
0.4300
0.2200
0.8000
0.1200
1.0000
2.0000 % задание матрицы переопределенной системы уравнений
»D=[vx.^2 vx l./(vx+l)]
»D
D =
0 |
0 |
1.0000 |
0.0400 |
0.2000 |
0.8333 |
0.1600 |
0.4000 |
0.7143 |
0.3600 |
0.6000 |
0.6250 |
0.6400 |
0.8000 |
0.5556 |
1.0000 |
1.0000 |
0.5000 |
»Coeff=D\vy Coeff =
3.0521 -1.4391 0.5126
% визуализация исходных данных и % аппроксимирующей функции
»i=l:length(vx);
»j=l:length(X);
»X=vx(l):0.01:VX(6);
»Y=[ones(size(X')) X' X'.^2]*Coeff; % вычисление значений
166
%аппроксимирующей
%функции
» plot(vx(i),vy(i),'о',X(j),Y(j))
%визуализация исходных данных и
%аппроксимирующей функции рис. VII.3;
2
1,8
1,6
1,4
1,2
1
0,8
0,6
0,4
0,2
0
0 |
0,1 |
0,2 |
0,3 |
0,4 |
0,5 |
0,6 |
0,7 |
0,8 |
0,9 |
1 |
|
Рис. VII.3. Исходные данные и |
|
|
|||||||
|
аппроксимирующая функция вида |
|
|
|||||||
F(x,a,b,c) = a·x2 |
+ b·x + c·l/(x + l) |
|
||||||||
7.3. Аппроксимация функцией произвольного вида
Для решения задачи обобщенной нелинейной регрессии в пакете MATLAB имеется функция lsqnonlin( ), возвращающая решение задачи нахождения точки минимума функции f(x):
167