- •Вычислительная практика. 2 курс Решение систем линейных алгебраических уравнений
- •2.1. Основные понятия и определения
- •2.2. Методы решения слау
- •2.2.1. Прямые методы решения слау
- •1. Правило Крамера
- •2. Метод обратных матриц
- •3. Метод Гаусса
- •4. Модифицированный метод Гаусса
- •6. Метод квадратного корня
- •5. Метод прогонки
- •2.2.2. Итерационные методы решения слау
- •1. Метод простой итерации
- •2. Метод Зейделя
- •2.3. Вычисление определителей высоких порядков
- •2.4. Вычисление обратных матриц
- •2. Другой подход к определению обратной матрицы а–1
- •3. Обращение матрицы а посредством треугольных матриц
- •2.5. Применение метода итераций для уточнения элементов обратной матрицы
1. Метод простой итерации
Технология итерационного решения вида (25*) названа методом простой итерации.
Оценка абсолютной погрешности для метода простой итерации
,
напомним, символ || ... || означает норму.
Пример 1. Методом простой итерации с точностью=0,001 решить систему линейных уравнений

Число шагов, дающих ответ с точностью до = 0,001, можно определить из соотношения
0,001.
Оценим сходимость по формуле (26). Здесь
||G|| =
=max{0,56; 0,61; 0,35; 0,61} = 0,61 <
1;
= 2,15. Значит, сходимость обеспечена.
В качестве начального приближения
возьмем вектор свободных членов, т.е.
=
(2,15; –0,83; 1,16; 0,44)Т. Подставим значения
вектора
в формулы (25*):

Продолжая вычисления, результаты занесем в таблицу:
-
k
х1
х2
х3
х4
0
2,15
–0,83
1,16
0,44
1
2,9719
–1,0775
1,5093
–0,4326
2
3,3555
–1,0721
1,5075
–0,7317
3
3,5017
–1,0106
1,5015
–0,8111
4
3,5511
–0,9277
1,4944
–0,8321
5
3,5637
–0,9563
1,4834
–0,8298
6
3,5678
–0,9566
1,4890
–0,8332
7
3,5760
–0,9575
1,4889
–0,8356
8
3,5709
–0,9573
1,4890
–0,8362
9
3,5712
–0,9571
1,4889
–0,8364
10
3,5713
–0,9570
1,4890
–0,8364
Сходимость в тысячных долях имеет место уже на 10-м шаге.
Ответ:х1 3,571;х2–0,957; х31,489; х4–0,836.
Это решение может быть получено и с помощью формул (27*).
Пример 2. Для иллюстрации алгоритма с помощью формул (27*), рассмотрим решение системы (только две итерации):

;
. (30)
Преобразуем систему к виду (25) согласно (27*):
(31)
Возьмем начальное приближение
= (0; 0; 0)Т. Тогда дляk
= 0 очевидно, что значение
= (0,5; 0,8; 1,5)Т. Подставим эти значения
в (31), т.е. приk=1, получим
=
(1,075; 1,3; 1,175)Т.
Ошибка 2=
=max(0,575; 0,5; 0,325) = 0,575.
Блок-схема алгоритма нахождения решения СЛАУ по методу простых итераций согласно рабочим формулам (27*) представлена на рис. 2.4.

Рис. 2.4. Блок-схема метода простых итераций для решения СЛАУ
Особенностью блок-схемы являются блоки:
(13) – назначение его рассмотрим ниже;
(21) – вывод результатов на экран;
(22) – проверка (индикатор) сходимости.
Проведем анализ предложенной схемы на примере системы (30) (n = 3,=1,= 0,001):

=
;
.
Блок1. Вводим исходные данныеA,
,,,n:n
= 3,=1,= 0,001.
Цикл I. Задаем начальные значения векторовx0iихi(i= 1,2,3).
Блок5. Обнуляем счетчик числа итераций.
Блок6. Обнуляем счетчик текущей погрешности.
Цикл II– счетчик
номеров матрицыАи вектора
:
i= 1:S=b1= 2 (блок8).
–––––––––––––––––––––––––––––––––––––––––––––––––––––––
Переходим во вложенный Цикл III,блок 9 – счетчик номеров столбцов матрицыА:j= 1.
Блок10:j=i, следовательно, возвращаемся кблоку9 и увеличиваемjна единицу:j= 2.
В блоке10ji(21) – выполняем переход кблоку11.
Блок11:S= 2 – (–1)х02 = 2 – (–1)0 = 2, и переходим кблоку9, в которомjувеличиваем на единицу:j= 3.
В блоке10 условиеjiвыполняется, поэтому переходим кблоку11.
Блок11:S= 2 – (–1)х03 = 2 – (–1)0 = 2, после чего переходим кблоку9, в которомjувеличиваем на единицу (j= 4). Значениеjбольшеn(n= 3) – заканчиваем цикл и переходим к блоку 12.
Блок 12: S = S / a11 = 2 / 4 = 0,5.
Блок 13: = 1; S = S + 0 = 0,5.
Блок 14: d = | xi – S | = | 1 – 0,5 | = 0,5.
Блок 15: xi = 0,5 (i = 1).
Блок16: Проверяем условиеd>de: 0,5 > 0, следовательно, переходим к блоку 17, в котором присваиваемde= 0,5 и выполняем возврат по ссылке «А» к следующему шагуцикла II– кблоку 7, в которомiувеличиваем на единицу:
i= 2:S=b2= 4 (блок8).
–––––––––––––––––––––––––––––––––––––––––––––––––––––––
Переходим во вложенный Цикл III,блок 9:j= 1.
Посредством блока10ji(12) – выполняем переход кблоку11.
Блок11:S= 4 – 10 = 4, и переходим кблоку9, в которомjувеличиваем на единицу:j= 2.
В блоке10 условие не выполняется, поэтому переходим кблоку9, в которомjувеличиваем на единицу:j= 3. По аналогии переходим кблоку11.
Блок11:S= 4 – (–2)0 = 4, после чего заканчиваемцикл IIIи переходим к блоку 12.
Блок 12: S = S / a22 = 4 / 5 = 0,8.
Блок 13: = 1; S = S + 0 = 0,8.
Блок14:d= | 1 – 0,8 | = 0,2.
Блок15:xi= 0,8 (i= 2).
Блок16: Проверяем условиеd>de: 0,2 < 0,5; следовательно, переходим возврат по ссылке «А» к следующему шагуцикла II– кблоку 7:
i= 3:S=b3= 6 (блок8).
–––––––––––––––––––––––––––––––––––––––––––––––––––––––
Переходим во вложенный Цикл III,блок 9:j= 1.
Посредством блока10 выполняем переход кблоку11.
Блок11:S= 6 – 10 = 6, и переходим кблоку9:j= 2.
Посредством блока10 выполняем переход кблоку11.
Блок11:S= 6 – 10 = 6. Заканчиваемцикл IIIи переходим к блоку 12.
Блок 12: S = S / a33 = 6 / 4 = 1,5.
Блок 13: S = 1,5.
Блок14:d= | 1 – 1,5 | = 0,5.
Блок15:xi= 1,5 (i= 3).
Согласно блоку16 (с учетом ссылок «А» и «С») выходим изцикла IIи переходим кблоку 18:
Блок 18. Увеличиваем число итерацийit=it+ 1 = 0 + 1 = 1.
В блоках19 и 20цикла IVзаменяем начальные значениях0iполученными значениямихi(i= 1,2,3).
Блок 21. Выполняем печать промежуточных
значений текущей итерации, в нашем
случае:
= (0,5; 0,8; 1,5)T,it= 1;de= 0,5.
Посредством блока22 по ссылке «D» переходим кблоку6 иde= 0.
Переходим к циклу IIнаблок7 и выполняем рассмотренные вычисления с новыми начальными значениямих0i(i= 1,2,3).
После чего получим: х1= 1,075;х2= 1,3;х3= 1,175.
Блок 18. Увеличиваем число итерацийit=it+ 1 = 1 + 1 = 2.
В блоках19 и 20цикла IVзаменяем начальные значениях0iполученнымихi(i= 1,2,3).
Блок 21. Выполняем печать значений
второй итерации:
= (1,075; 1,3; 1,175)T,it= 2;de= 0,575; и т.д.
