Численные методы в среде символьной математики. Программирование и решение задач: Учебно-методическое пособие, страница 41

в) используя итерационную процедуру Якоби;

г) используя разложение матрицы на произведение треугольных.

Диагонализация матрицы преобразованиями строк

Известно, что решение системы линейных алгебраических уравнений  не зависит от умножения всех слагаемых любого из уравнений системы на множитель, отличный от нуля, и не зависит от замены любого уравнения системы алгебраической суммой заменяемого уравнения с любым другим уравнением этой системы. Используя эти свойства, можно последовательно, столбец за столбцом, выбирая масштабные множители и суммируя строки системы, превратить все коэффициенты при неизвестных в нуль, кроме коэффициентов, стоящих на диагонали матрицы.

По условию задачи исходными данными являются матрица А из 24 задачи и вектор правой части

   „ -2.84101   -0.270207   0.27363 †

A:=¦ -0.270207  -1.17545   0.397987 ¦,     b:=[3,2,1]

   …  0.27363   0.397987   -1.98353 ‡

Так как преобразованиям подвергаются коэффициенты слагаемых в левой и правой частях, то сформируем составную матрицу:

V:=APPEND(A`,[b])`

   „ -2.84101   -0.270207   0.27363  3 †

V:=¦ -0.270207  -1.17545   0.397987  2 ¦

   …  0.27363   0.397987   -1.98353  1 ‡

Оператор формирования новой j-й строки на основе разности i-той и j-той строк, умноженных соответственно на коэффициенты k-го столбца этих строк, представим следующим оператором:

P(v,i,j,k):=v ·v   -v ·v   

             i  j,k  j  i,k

Сводим коэффициеты 1-го столбца к нулю путем вычитания из 1-й строки 2-й строки с записью результата во 2-ю и путем вычитания из 1-й строки 3-й строки с записью результата в 3-ю :

V1:=APPEND(„V †,[P(V,1,2,1)],[P(V,1,3,1)])

           … 1‡                           

    „ -2.84101  -0.270207   0.27363     3    †

V1:=¦     0     -3.26645    1.05674  4.87139 ¦

    …     0      1.05674   -5.56035  3.6619  ‡

Аналогично сводим коэффициеты 2-го столбца к нулю путем вычитания из 2-й строки 1-й строки с записью результата в 1-ю и путем вычитания из 2-й строки 3-й строки с записью результата в 3-ю :

V2:=APPEND([P(V1,2,1,2)],„V1 †,[P(V1,2,3,2)])

                         …  2‡               

    „ -9.28002      0     0.608258  8.48307 †

V2:=¦     0     -3.26645   1.05674  4.87139 ¦

    …     0         0     -17.0459  17.1092 ‡

И, наконец, сводим коэффициеты 3-го столбца к нулю путем вычитания из 3-й строки 1-й строки с записью результата в 1-ю и путем вычитания из 3-й строки 2-й строки с записью результата во 2-ю :

V3:=APPEND([P(V2,3,1,3)],[P(V2,3,2,3)],„V2 †)

                                       …  3‡

    „ -158.186      0         0     155.008 †

V3:=¦     0     -55.6797      0     101.117 ¦

    …     0         0     -17.0459  17.1092 ‡

Для получения решения достаточно разделить коэффициент правой части на соответствующий коэффициент, стоящий на диагонали:

„ V3      V3      V3    †

¦   1,4     2,4     3,4 ¦

¦——————-,——————-,——————-¦,    [-0.979910,-1.81605,-1.00371]

¦ V3      V3      V3    ¦

…   1,1     2,2     3,3 ‡

В пакете DERIVE последовательность подобных преобразований составной матрицы представлена встроенным оператором ROW_REDUCE(A,B), в котором правая часть системы может быть представлена множеством столбцовых векторов в виде прямоугольной матрицы B. Проверим правильность проделанных нами преобразований с помощью этого оператора:

ROW_REDUCE(A,[b]`)

„ 1  0  0  -0.979910 †

¦ 0  1  0  -1.81605  ¦

… 0  0  1  -1.00371  ‡

Решение с обратной матрицей

В 24-й задаче были получены: матрица A и матрица A_1 обратная, матрице A:

   „ -2.84101   -0.270207  0.273630 †

A:=¦ -0.270207  -1.17545   0.397987 ¦,     b:=[3,2,1],

   … 0.273630   0.397987   -1.98353 ‡

     „  -0.362193  0.0711750  -0.0356840 †

A_1:=¦  0.0711750  -0.926724   -0.176128 ¦

     … -0.0356840  -0.176128   -0.544415 ‡

Решение получим умножением вектора b на матрицу:

x:=[b]•A_1,     [ -0.979913  -1.81605  -1.00372 ]

Для проверки правильности решения подставим полученный вектор решения x  в исходное уравнение с матрицей A:

b1:=x•A,        [ 3.00000  1.99998  1.00001 ]

Решение с помощью итерационной процедуры Якоби

   „ -2.84101   -0.270207   0.27363 †