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

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

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

Этой цели и служит задача о приближении функций: данную функцию 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.

Произведение матриц А размером m x n и B размером n x r есть матрица C размером m x r, где элементы вычисляются следующим образом:

, т.е.:

;

Получена система линейных уравнений:

Требуется найти неизвестные параметры.

Решение осуществляется с помощью метода Гаусса.

;

Прямой ход метода Гаусса. Первый шаг:

;

Второй шаг:

;

Получена система уравнений:

Обратный ход метода Гаусса:

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 – Аппроксимация методом наименьших квадратов


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  




Подборка статей по вашей теме: