Аппроксимация и решение систем линейных уравнений

Краткая теория:

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

Этой цели и служит задача о приближении функций: данную функцию 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 – Аппроксимация методом наименьших квадратов