Дисциплина:
Раздел:
Выполнил:

Вычислительная математика

Метод квадратного корня. СЛАУ

ГУ, физмат

                                             www. domath.ru

 

Решение:

Если вам знакома сама идея метода, то понять решение будет несложно. Сначала необходимо представить матрицу A как произведение двух матриц L и L`, где L`- транспорнированная матрица к L. Далее, имея Ax=b, получим  L*L`x=b. Откуда решаем L*y=b относительно у[i], а потом L`x=y относительно x[i]. В конце всей работы сделаем проверку полученного решения. Итак, зададим матрицу A, левая часть уравнения Ax=b.

>    A:=matrix([[12.50,1,5],[1,56,1],[5,1,17]]);

A := matrix([[12.50, 1, 5], [1, 56, 1], [5, 1, 17]])

>    Данной командой зададим правую часть уравнения Ax=b.
b:=vector([2.12,2.2,1.36]);

b := vector([2.12, 2.2, 1.36])

>    Вычислим первые два элемента обратной матрицы L, а именно элементы L[1,2] и L[2,3].

>    for i from 1 to 2
                  do
                    L[1,i+1]:=A[i+1,1]/L[1,1];
od;

L[1,2] := .2828427125

L[1,3] := 1.414213562

>    Далее вычислим все остальные элементы матрицы L.

>    for i from 1 to 3
                 do
                    L[i,i]:=sqrt(A[i,i]-sum(L['k',i]^2,'k'=1..i-1));
od;

L[1,1] := 3.535533906

L[2,2] := 7.477967638

L[3,3] := 3.872152144

>    Вычислим элемент L[2,3], который выражается через остальные L[1,2],L[1,3] и L[2,2].

>    L[2,3]:=(A[2,3]-L[1,2]*L[1,3])/L[2,2];

L[2,3] := .8023570429e-1

>    Далее вычислим элементы y[i] относительно системы L.

>    for i from 1 to 3
                 do
                    y[i]:=(b[i]-sum(L['k',i]*y[k],'k'=1..i-1))/L[i,i];
od;

y[1] := .5996265504

y[2] := .2715176233

y[3] := .1266000339

>    Представим систему вида L`x=y.

>    for i from 3 by 1 to 1
                      do
                         x[i]:=(y[i]-sum(L[i,'k'+2]*x[i],'k'=1..3-i))/L[i,i];
od;

>    Вычислим элементы x[i].

>    x[3]:=y[3]/L[3,3];

x[3] := .3269500505e-1

>    x[2]:=(y[2]-L[2,3]*x[3])/L[2,2];

x[2] := .3595820810e-1

>    x[1]:=(y[1]-L[1,2]*x[2]-L[1,3]*x[3])/L[1,1];

x[1] := .1536453413

>    Выполним проверку решения, то есть подставим полученные x[i] в систему Ax=b.

>    for i from 1 to 3
                  do
                    x[1]*A[i,1]+x[2]*A[2,i]+x[3]*A[3,i]=b[i];
od;

2.119999999 = 2.12

2.200000000 = 2.2

1.360000000 = 1.36