Постановка задачи приближения функции по методу наименьших квадратов
Пусть функция y=f(x) задана таблицей своих значений: , i=0,1,-n. Требуется найти многочлен фиксированной степени m, для которого среднеквадратичное отклонение (СКО) минимально.
Так как многочлен определяется своими коэффициентами, то фактически нужно подобрать набор кофициентов , минимизирующий функцию .
Используя необходимое условие экстремума, , k=0,1,-m получаем так называемую нормальную систему метода наименьших квадратов: , k=0,1,-m.
Полученная система есть система алгебраических уравнений относительно неизвестных . Можно показать, что определитель этой системы отличен от нуля, то есть решение существует и единственно. Однако при высоких степенях m система является плохо обусловленной. Поэтому метод наименьших квадратов применяют для нахождения многочленов, степень которых не выше 5. Решение нормальной системы можно найти, например, методом Гаусса.
Запишем нормальную систему наименьших квадратов для двух простых случаев: m=0 и m=2. При m=0 многочлен примет вид: . Для нахождения неизвестного коэффициента имеем уравнение: . Получаем, что коэффициент есть среднее арифметическое значений функции в заданных точках.
Если же используется многочлен второй степени , то нормальная система уравнений примет вид:
.
ПРИМЕР 1. Приближение функции по методу наименьших квадратов.
Пусть функция задана таблицей своих значений:
x | -3 | -1 | |||
y | -4 | -0.8 | 1.6 | 2.3 | 1.5 |
Приблизим функцию многочленом 2-ой степени. Для этого вычислим коэффициенты нормальной системы уравнений:
, , ,
, ,
Составим нормальную систему наименьших квадратов, которая имеет вид:
Решение системы легко находится: , , .
Таким образом, многочлен 2-ой степени найден: .
Предположим, что функцию f можно с высокой точностью аппроксимировать многочленом некоторой степени m. Если эта степень заранее неизвестна, то возникает проблема выбора оптимальной степени аппроксимирующего многочлена в условиях, когда исходные данные содержат случайные ошибки. Для решения этой задачи можно принять следующий алгоритм: для каждого m=0, 1, 2,.. вычисляется величина . За оптимальное значение степени многочлена следует принять то значение m, начиная с которого величина стабилизируется или начинает возрастать.
ПРИМЕР 2. Нахождение оптимальной степени многочлена.
% Функция задана таблицей значений. Аппроксимировать её многочленом по МНК
% Введём функцию (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
err1
err2
err3
>>
err0 = 11.0956
err1 = 0.1308
err2 = 0.1962
err3 = 0.1803