Метод наименьших квадратов
Пусть вещественная функция у = Дх) задана таблично в точках Хц ..., Хд, своими значениями у* = Дх,), i = 1, ..., П, тогда скалярное произведение можно определить по формуле:
С учетом (2.20) условие наилучшего среднеквадратичного приближения приобретет следующий вид:
Подставим в (2.21) представление для аппроксимирующей функции в виде (2.16) с числом членов п < N. Далее следум стандартно, приравнивая к нулю производные по коэффициентам а и ..., й„, получаем уравнения для поиска этих коэффициентов, которые, в свою очередь, могут быть решены обычным образом. Данный способ нахождения аппроксимирующей функции называется методом наименьших квадратов.
Метод наименьших квадратов широко используется для обработки экспериментальных данных, в которых значения некоторых функций измерены с заметной погрешностью. В этом случае все р,, i = 1, ..., п связывают с точностью данных, т. е. чем выше точность отдельного значения, тем выше вес и, наоборот. В итоге аппроксимирующая кривая будет проходить ближе к более точным значениям измеряемой функции. При п * N среднеквадратичная аппроксимация близка к интерполяции, при п заметно меньше N аппроксимирующая кривая будет заметным образом сглаживать данные.
С помощью MATLAB освоим процедуру метода наименьших квадратов. В листинге 2.6 приведен соответствующий код программы, который строит полином степени п -1, обеспечивающий наилучшее среднеквадратичное приближение аппроксимируемой функции, заданной набором точек на плоскости (xi,yi).....(xN,yN).
Листинг 2.6
%Метод наименьших квадратов % % % % % % % % % % % % % % % % % % % % % % % % % % % %очищаем рабочую область clear all;
%определяем число точек N
N = 11;
%определяем множество аргументов %аппроксимируемой функции в виде %равномерной сетки for i =1: N
х( i ) =( i - 1. 0) / ( N-1); end
%моделируем значения аппроксимируемой %функции с помощью датчика случайных %чисел, распределенных по нормальному %закону со средним 0 и ст. откл. 1
у=[ 1;
for i =1:I ength(x) у =[ у г andnj; end
%веса скалярного произведения ( 2. 2 0)
%выберем равными единице
г о =0nеs( si zе(х) ) ;
Уоопределим число неизвестных Уокоэффициентов П представления ( 2. 16)
П=3;
Уостроим методом наименьших квадратов,
Уоаппроксимирующий полином степени П - 1
sp=spap2(1, п,х,у, г о);
Уорисуем аппроксимирующий полином на Уофоне значений аппроксимируемой функции f П рI t ( S р) ;
hoi d on;
pi ot(х, у, 1 *' );
При работе с кодом листинга 2.6 необходимо запустить программу и убедиться, что с ростом числа аппроксимирующих коэффициентов п от 1 до N, сглаживание данных при малых п заменяется интерполяцией при п « N. На рис. 2.6, а приведен первый случай, а на рис. 2.6, 6 - второй.

Рис. 2.6. Аппроксимирующая кривая: а - парабола (п = 3, N = 11); б - полином степени 10 (п = 11, N = 11)
Построим теперь наилучшее среднеквадратичное приближение с помощью сплайна. В листинге 2.7 приведен соответствующий код программы MATLAB, который генерирует график с дискретным набором аппроксимируемой функции и сплайном того или иного порядка.
Листинг 2.7
%Метод наименьших квадратов при %аппроксимации функции с помощью сплайна % % % % % % % % % % % % % % % % % % % % % % % % % % % %очищаем рабочую область clear all;
%задаем область аппроксимации
а =0. О; b =1. О;
%определяем множество аргументов %аппроксимируемой функции
х=а: 0. 1: Ь;
“/смоделируем значения аппроксимируемой %функции с помощью датчика случайных %чисел, распределенных по нормальному %закону со средним 0 и ст. откл. 1 У=[ 1;
for i =1:Iengt h(х) у =[ у г a n d п ] ; end
%веса скалярного произведения (2.20)
%выберем равными единице
г о =0nеs( si zе(х));
%определим порядок сплайна %П=4 - кубический сплайн
п =1;
%задаем узлы стыковки соседних сплайнов
хк =[ 0. 2 5 0. 5 ];
%строим методом наименьших квадратов,
%аппроксимирующий сплайн
sp=spap2(augknt([a b хк], п),п,х,у, г о);
%рисуем аппроксимирующий полином на %фоне значений аппроксимируемой функции
f n р I t (s р) ; hoi d on; р I о t (х, у, ' *' );
На рис. 2.7 приведены разные варианты работы кода программы листинга 2.7. На рис. 2.7, а приведена аппроксимация искомой функции тремя сплайнами 1-го порядка (n = 1, полиномы нулевой степени), на рис. 2.7, б - 2-го порядка (п =2, полиномы первой степени), на рис. 2.7, в и г - соответственно третьего и 4-го порядков (п = 3, 4, полиномы второй и третьей степени).