Аппроксимация и решение систем линейных уравнений
Краткая теория:
Пусть величина у является функцией аргумента х. На практике часто неизвестна зависимость между х и у или является чрезвычайно сложной, что не позволяет ее использовать. Таким образом, мы приходим к необходимости использования имеющихся табличных данных для приближенного вычисления искомого параметра у при любом значении (из некоторой области) параметра х.
Этой цели и служит задача о приближении функций: данную функцию f(x) требуется приближенно заменить некоторой функцией φ(x) так, чтобы отклонение φ(x) от f(x) в заданной области было наименьшим. Функция φ(x) при этом называется аппроксимирующей.
Одним из методов поиска аппроксимирующей функции является метод наименьших квадратов:
Для данной функции f(x) требуется построить аппроксимирующую функцию y=j(x, a0, a1, …, am) , где a0, a1, …, am – неизвестные постоянные параметры.
Таким образом, требуется среди множества функций найти такую y=j(x, a0, a1, …, am), при которой отклонение j(x, a0, a1, …, am) от f(x) принимает минимальное значение. Для этого необходимо найти соответствующие параметры a0, a1, …, am функции y=j(x, a0, a1, …, am изсистемы алгебраических уравнений, которая в матричном виде имеет вид:
ФT(Фa – y) =0или(ФТФ)а=ФТy, где
,
ФТ – транспонированная матрица, j(x) = a0 *j0 (x)+ a1*j1 (x)+ a2* j2 (x).
Решение систем линейных уравнений (ФТФ)а=ФТy (а – вектор неизвестных параметров) можно осуществить с помощью метода Гаусса или Гаусса-Зейделя.
Метод Гаусса:
Для простоты вводятся дополнительные обозначения: С = ФТФ, b=ФТy, т.е исходное уравнение примет вид Ca=b.
Первый этап называется прямым ходом метода и заключается в последовательном исключении неизвестных из уравнений, т.е. в приведении матрицы C к верхнему треугольному виду. На каждом k-ом шаге элементы этой системы уравнений пересчитываются в соответствии с формулами:
ci j=ci j -(cik /ckk ) * ck j , i>k , j>k , i=0, 1, …, m, j=0, 1, …, n и
bi=bi -(cik /ckk ) * bk , i>k
Обратный ход метода Гаусса заключается в последовательном определении неизвестных, начиная с n-го.
Метод Гаусса-Зейделя:
Требуется найти решение системы линейных уравнений:
a11x1+a12x2+a13x3=b1,
a21x1+a22x2+a23x3=b2,
a31x1+a32x2+a33x3=b3,
При этом:
x1=(1/a11)*(b1 - a12x2 - a13x3);
x2=(1/a22)* (b2 – a21x1 – a23x3);
x3=(1/a33)* (b3 – a31x1 – a32x2).
Задаются начальные условия х1(0), х1(0), х1(0). В результате:
x1(1)=(1/a11)* (b1 - a12x2(0) - a13x3(0));
x2(1)=(1/a22)* (b2 – a21x1(1) – a23x3(0));
x3(1)=(1/a33)* (b3 – a31x1(1) – a32x2(1)).
Аналогично:
x1(k)=(1/a11)* (b1 - a12x2(k-1) - a13x3(k-1));
x2(k)=(1/a22)* (b2 – a21x1(k) – a23x3(k-1));
x3(k)=(1/a33)* (b3 – a31x1(k) – a32x2(k)).
Итерационный процесс продолжается до тех пор, пока значения x1(k), x2(k), x3(k) не станут близкими с заданной погрешностью к значениям x1(k-1), x2(k-1), x3(k-1).
Решение задачи:
Построить график аппроксимирующей функции, заданной таблично (см.п.3), используя метод наименьших квадратов (систему линейных уравнений решить методом Гаусса). В качестве формулы для аппроксимации примем:
y » j(x) = a0 *j0 (x)+ a1*j1 (x)+ a2* j2 (x) = a0+a1*sin(x)+a2*x
Решение:
Аппроксимирующая функция имеет вид j(x) = a0+a1*sin(x)+a2*x. Требуется найти такие коэффициенты a0, a1, a2, которые бы дали функцию j(x), минимально отклоняющуюся от заданных табличных значений. С помощью метода наименьших квадратов можно получить систему линейных уравнений относительно неизвестных коэффициентов ai . Матрица Ф имеет вид:
По условию задачи: j0 (x)=1; j1 (x)=sin(x); j2 (x) =x.
хi | y |
-4.4 | |
4.6 | |
-1.7 | |
-10 |
Справочно: для транспонированной матрицы справедливо следующее:
aij=aT ji.
Произведение матриц А размером mxn и B размером nxr есть матрица C размером mxr, где элементы вычисляются следующим образом:
, т.е.:
;
Получена система линейных уравнений:
Требуется найти неизвестные параметры.
Решение осуществляется с помощью метода Гаусса.
;
Прямой ход метода Гаусса. Первый шаг:
;
Второй шаг:
;
Получена система уравнений:
Обратный ход метода Гаусса:
a2=-24,4/38.92=-0,63
a1=(-14,95-1,58*(-0,63))/2,32=-6
a0=(-11,5-20*(-0,63)-0,86*(-6))/5=1,25
Результат: аппроксимирующая функция имеет вид:
y » j(x) = a0 *j0 (x)+ a1*j1 (x)+ a2* j2 (x) =1,25-6*sin(x)-0,63*x
Таблица 3 – Промежуточные значения функции, полученные с помощью аппроксимации методом наименьших квадратов
x | y | x | y | x | y | x | y |
0,00 | 1,25 | 2,00 | -5,47 | 4,00 | 3,27 | 6,00 | -0,85 |
0,20 | -0,07 | 2,20 | -4,99 | 4,20 | 3,83 | 6,20 | -2,16 |
0,40 | -1,34 | 2,40 | -4,31 | 4,40 | 4,19 | 6,40 | -3,48 |
0,60 | -2,52 | 2,60 | -3,48 | 4,60 | 4,31 | 6,60 | -4,78 |
0,80 | -3,56 | 2,80 | -2,52 | 4,80 | 4,20 | 6,80 | -6,00 |
1,00 | -4,43 | 3,00 | -1,49 | 5,00 | 3,85 | 7,00 | -7,10 |
1,20 | -5,10 | 3,20 | -0,42 | 5,20 | 3,27 | 7,20 | -8,05 |
1,40 | -5,54 | 3,40 | 0,64 | 5,40 | 2,48 | 7,40 | -8,80 |
1,60 | -5,76 | 3,60 | 1,64 | 5,60 | 1,51 | 7,60 | -9,35 |
1,80 | -5,73 | 3,80 | 2,53 | 5,80 | 0,38 | 7,80 | -9,66 |
-9,73 |
График функции имеет вид, представленный на Рисунке 2.
Рисунок 2 – Аппроксимация методом наименьших квадратов