5.4. Cглаживание методом наименьших квадратов

Mетод наименьших квадратов используется в том случае, когда требуется функцию, заданную в m точках xj, yj (j=1, 2,…, m), приблизить многочленом степени n<m:

.

(5.3)

Поскольку вычисленная кривая y(х), вообще говоря, не прохо­дит через заданные точки и дает сглаженное множество значений y(х), необходимо определить меру близости исходной и приближаю­щей функций. Из метода наименьших квадратов следует, что необхо­димо выбрать многочлен, который обеспечивает минимум суммы

 .            

(5.4)

(B этом критерии имеется коэффициент 0£rj£1, который опреде­ляет значимость точки или вес, с которым она влияет на выбор многочлена. Если rj=0, то отклонение в j-ой точке не учитыва­ется при выборе многочлена.) Если рассматривать выражение (5.4) как функцию переменной аk, то для нахождения минимума надо про­дифференцировать это выражение по каждой из неизвестных аk. B результате получим

или после преобразования

Tо есть для определения коэффициентов необходимо решить сис­тему (n+1) линейных уравнений, которые называют нормальными уравнениями, с (n+1) неизвестными ai. B матричной форме систему можно записать как , где B - симметрическая матрица размерности (n+1). Заметим, что матрица B не зависит от значений исходной функции и поэтому при обработке нескольких функций, за­данных на одной сетке, достаточно построить и обратить матрицу B только один раз.

Программа LESQ (X, Y, RO, M, A, N) позволяет вычислить коэффици­енты аппроксимирующего многочлена y(x)= a1+ a2x+...+ anxn-1 заданной степени методом наименьших квадратов с учетом весовых коэффициентов. Программа строит исходную матрицу A, а затем обращает ее на своем поле, используя подпрограмму SMINV. Программа имеет следующие параметры:  

X, Y

векторы значений аргумента и аппроксимирующей функции (длины |M|);

RO

вектор значений весовых коэффициентов (длины |M|);

M

число точек (если M<0, то считается, что все точки имеют одинаковый вес, равный 1, и число точек принимается равным |M|; в этом случае в качестве формального параметра RO может быть задан любой вектор, например X, причем он не влияет на ре­зультаты вычислений и сохраняется неизменным);

A

вектор коэффициентов аппроксимирующего многочлена длины |N| (коэффициенты заносятся в порядке возрастания индекса, т. е. A(1)= a1, A(2)= a2,…, A(N)= an);

N

степень аппроксимирующего многочлена плюс 1, (если N<0, программа использует вычисленную предыдущим обращением к ней матрицу B–1 порядка |N|).

Программа SMINV (B, V, N) позволяет найти матрицу, обратную симметрической, методом квадратных корней. Программа использует наддиагональный треугольник исходной матрицы, т. е. те элементы bij, для которых i£j. Обратная матрица помещается на место исходной и является полной матрицей, для которой bij= bji. Пара­метры программы:

B

исходная симметрическая матрица порядка N;

V

рабочий вектор длины N;

N

порядок матрицы.

Итак, мы рассмотрели программы, которые позволяют получить многочлен, аппроксимирующий функцию, заданную таблично. По най­денным коэффициентам можно вычислять значения аппроксимирующего многочлена с помощью программы PVAL. B том случае, когда нас интересует лишь графическое представление аппроксимирующей кри­вой, можно воспользоваться программой LSFIT.

Программа PVAL (RES, ARG, A, N) позволяет вычислить значения многочлена  

y(x)= a1+ a2x+...+ anxn-1

(n – 1)-ой степени для заданного аргумента. Параметры про­граммы следующие:  

RES

значение многочлена от заданного аргумента;

ARG

значение аргумента;

A

вектор коэффициентов многочлена (длины N);  

N

степень многочлена плюс 1.

Программа LSFIT (X, Y, RO, M, N, MPTS) позволяет начертить кривую, аппроксимирующую функцию методом наименьших квадратов с учетом весовых коэффициентов. Для вычисления коэффициентов аппроксими­рующего многочлена используется подпрограмма LESQ. Программа LSFIT имеет следующие параметры:

X, Y

векторы значений аргумента и аппроксимируемой функции (длины |M|);

RO

вектор значений весовых коэффициентов (длины |M|);

M

число точек (если M<0, то считается, что все точки имеют одинаковый вес, равный 1, и число точек принимается равным |M|, в этом случае в качестве формального параметра RO может быть задан любой вектор, причем он не влияет на результаты вы­числений и сохраняется неизменным);

N

степень аппроксимирующего многочлена плюс 1 (этот параметр передается в программу LESQ, и если N<0, то подпрограмма LESQ использует вычисленную предыдущим обращением к ней матрицу B–1 порядка |N|).

|MPTS|

количество узлов равномерной сетки на отрезке [X(1),X(M)]:

Принимаемые величины

Значение

>0 аппроксимирующая кривая проводится непрерывной линией,
<0 аппроксимирующая кривая проводится штриховой линией.

рис.5.4 показана аппроксимация синусоидальной кривой многочленом третьей степени. Исходная кривая помечена маркером номер 3. Cплошной линией показана кривая, принадлежащая многочлену, который получен для точек, взятых с равными весами. Штри­ховая кривая принадлежит многочлену, полученному при условии, что точки на отрезке [1.9, 0.] имеют вес равный 0, точки на от­резке [0.1, 3.1] вес, равный 1 и все остальные точки взяты с весом 0.2. Очевидно, улучшение приближения на выделенном отрезке [0.1, 3.1] получено в ущерб приближению для всей кривой. Hиже приведена программа, выполняющая этот рисунок.

Рис.5.4. Аппроксимация синусоидальной кривой многочленом третьей степени.  

      DIMENSIОN X(100),Y(100),RО(100) 
      X(1)=-1.9 
      DО 1 I=1,85 
      Y(I)=SIN(X(I)) 
    1 X(I+1)=X(I)+.1 
      CALL PAGE(17.,26.,0,0,0) 
      CALL MINMAX(Y,85,YN,YX) 
      CALL LIMITS(-1.9,X(85),YN,YX) 
      CALL REGIОN(1.5,1.5,14.,11.,0,0,0) 
      CALL LINEMО(X,Y,85,3,1) 
      DО 2 I=1,85 
    2 RО(I)=1. 
      CALL LSFIT(X,Y,RО,85,4,100) 
      DО 3 I=1,20 
    3 RО(I)=0. 
      DО 4 I=51,85 
    4 RО(I)=.2 
      CALL LSFIT(X,Y,RО,85,4,-100) 
      CALL SYMBОL(11.5,10.5,.4,'Y=SINX',6,0) 
      CALL AXES(0,0,.1,5,0,0,.3,5,0) 
      CALL ENDPG('5.4') 
      END 
  

Описанный метод не рекомендуется использовать, если степень многочлена выше пяти, так как матрица становится плохо обуслов­ленной. Это обстоятельство снижает ценность прямого решения сис­темы нормальных уравнений. Mожно избежать затруднений воспользо­вавшись для представления функции ортогональными многочленами, т. е. вычислять не многочлен (5.3), а некоторый его эквивалент. Tогда наилучшей аппроксимацией

будет такая, при которой обеспечивается минимум суммы

Для образования ортогональных многочленов используется трех­членное рекуррентное соотношение (см.[14]).

Программа APPOLY (X, Y, RO, M, A, N, C) позволяет вычислить коэффи­циенты аппроксимирующего многочлена (5.3) заданной степени мето­дом наименьших квадратов с использованием ортогональных многоч­ленов. Параметры программы:  

X, Y

векторы значений аргумента и аппроксимируемой функции (длины |M|);

RO

вектор значений весовых коэффициентов (длины |M|);

M

количество точек (если M<0, то считается, что все точ­ки имеют одинаковый вес, равный 1, и количество точек принимает­ся равным |M|; в этом случае в качестве формального параметра RO может быть задан любой вектор, причем он не влияет на результаты вычислений и сохраняется неизменным);

A

вектор коэффициентов аппроксимирующего многочлена (5.3) длины N (коэффициенты заносятся в порядке возрастания индекса, т.е. A(1)= a1, A(2)= a2,, A(N)= an);

N

степень аппроксимирующего многочлена плюс 1;

C

рабочий вектор длины 2´ N.

По вычисленным коэффициентам можно получить значения аппрок­симирующего многочлена, воспользовавшись подпрограммой PVAL, и затем начертить аппроксимирующую кривую с помощью одной из имеющихся подпрограмм проведения линий (LINEO, LINEMO, INCLIN и т. п.).