Аппроксимация и решение систем линейных уравнений
Краткая теория:
Пусть величина у является функцией аргумента х. На практике часто неизвестна зависимость между х и у или является чрезвычайно сложной, что не позволяет ее использовать. Таким образом, мы приходим к необходимости использования имеющихся табличных данных для приближенного вычисления искомого параметра у при любом значении (из некоторой области) параметра х.
Этой цели и служит задача о приближении функций: данную функцию f(x) требуется приближенно заменить некоторой функцией φ(x) так, чтобы отклонение φ(x) от f(x) в заданной области было наименьшим. Функция φ(x) при этом называется аппроксимирующей.
Одним из методов поиска аппроксимирующей функции является метод наименьших квадратов:
Для данной функции f(x) требуется построить аппроксимирующую функцию y=(x, a0, a1, …, am) , где a0, a1, …, am – неизвестные постоянные параметры.
Таким образом, требуется среди множества функций найти такую y=(x, a0, a1, …, am), при которой отклонение (x, a0, a1, …, am) от f(x) принимает минимальное значение. Для этого необходимо найти соответствующие параметры a0, a1, …, am функции y=(x, a0, a1, …, am из системы алгебраических уравнений, которая в матричном виде имеет вид:
ФT (Фa – y) = 0 или (ФТФ)а = ФТy, где
,
ФТ – транспонированная матрица, (x) = a0 *0 (x)+ a1*1 (x)+ a2* 2 (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 (x) = a0 *0 (x)+ a1*1 (x)+ a2* 2 (x) = a0+a1*sin(x)+a2*x
Решение:
Аппроксимирующая функция имеет вид (x) = a0+a1*sin(x)+a2*x. Требуется найти такие коэффициенты a0, a1, a2, которые бы дали функцию (x), минимально отклоняющуюся от заданных табличных значений. С помощью метода наименьших квадратов можно получить систему линейных уравнений относительно неизвестных коэффициентов ai . Матрица Ф имеет вид:
По условию задачи: 0 (x)=1; 1 (x)=sin(x); 2 (x) =x.
-
хi
y
0
0
2
-4.4
4
4.6
6
-1.7
8
-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 (x) = a0 *0 (x)+ a1*1 (x)+ a2* 2 (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 |
|
8 |
-9,73 |
|||||
График функции имеет вид, представленный на Рисунке 2.
Рисунок 2 – Аппроксимация методом наименьших квадратов
