Скачиваний:
100
Добавлен:
28.03.2015
Размер:
1.08 Mб
Скачать

В результате прямого хода метода Гаусса мы получили следующую систему уравнений, имеющую треугольный вид:

x

1

x

 

1

x

 

=

1

,

 

2

 

3

 

 

1

6

 

 

6

 

6

 

 

 

 

 

 

 

 

 

 

 

x2

2x3 = −4,

 

 

 

 

 

 

 

 

 

 

x3

= 3.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Обратный ход метода Гаусса существенно проще. Сначала из последнего уравнения вычисляем – x3, затем из второго – x2, наконец, из первого – x1. В результате получим:

x3 = 3; x2 = 2; x1 = 1.

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

Метод простой итерации

Пусть дана система n алгебраических уравнений с n неизвестными:

a11 x1

+ a12 x 2

+ ... + a1 n x n

= b1

 

+ a 22 x 2

+ ... + a 2 n x n

= b2

a 21 x1

 

 

 

(1)

.......... .......... .......... .....

 

+ a n 2 x 2

+ ... + a nn x n

= b n

a n 1 x1

Решение систем линейных уравнений с помощью метода простой итерации сводится к следующему алгоритму.

Проверка условия сходимости. Для сходимости метода необходимо и достаточно, чтобы в матрице A абсолютные значения всех диагональных элементов были больше суммы модулей всех остальных элементов в соответствующей строке:

21

n

aii > aij . i=1, ij

Недостатком итерационных методов является это достаточно жесткое условие сходимости, которое выполняется далеко не для всех систем.

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

x1(0) = x2(0) =... = xn(0) =0 .

Заметим, что здесь и в дальнейшем нижний индекс обозначает соответствующую компоненту вектора неизвестных, а верхний индекс – номер итерации (приближения).

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

x1(k ) = [b1 (a12 x2(k 1) +... + a1n xn(k1) )]

a11

x2(k ) = [b2 (a21x1(k 1)

+...

+ a2n xn(k1) )] a22

..................................................

(3)

 

 

+ an,n1xn(k11) )] ann

xn(k ) = [bn (an1x1(k 1)

+...

Итерационный процесс заканчивается, если для каждой i-й компоненты вектора неизвестных будет выполнено условие достижения точности:

xi( k ) xi( k 1) < ε

где k - номер итерации, ε - заданная точность.

Рассмотрим пример ручной реализации алгоритма метода простой итерации. Дана система уравнений третьего порядка:

22

7x 2x

+3x

= 8,

 

1

2

3

 

x1

4x2 + x3 = −2,

2x

+ x

+5x

= 4.

 

1

2

3

 

Требуется найти две первых итерации вектора неизвестных с помощью метода простой итерации.

Применим алгоритм метода. Проверка условия сходимости.

7 > -2 + 3 - да; -4 > 1 + 1 - да; 5 > -2 + 1 - да; сходимость

есть.

Выбор начального приближения: x1(0) = x2(0) =... = xn(0) = 0 .

Запись приведенной системы уравнений:

x(k ) = 8

1 [(2) x

(k 1)

+

3 x(k1) ],

 

 

 

1

7

7

 

 

 

 

 

 

2

 

 

 

 

3

 

 

 

 

[1 x(k1)

 

 

 

 

 

(k 1) ],

 

 

 

 

+ 1

 

 

 

 

 

 

 

x(k ) = 1

+1 x

 

 

 

2

2

4

 

 

1

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+1 x(k1) ].

 

 

x(k ) = 4

1 [(2) x

(k1)

 

 

 

3

5

5

 

 

 

 

 

1

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Выполним две итерации.

 

 

 

 

 

 

x(1)

= 8 1 [(2) 0 +3 0]= 8 1,143;

 

 

 

 

1

 

 

7

 

 

7

 

 

 

 

7

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

1

 

 

 

1

 

k=1

 

 

(1)

=

+

[1 0 +1 0]=

= 0,5;

 

x2

2

4

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x(1)

= 4 1 [(2) 0 +1 0]= 4 = 0,8.

 

 

 

 

3

 

 

5

 

 

5

 

 

 

 

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x(2)

= 8

1 [(2) 0,5 +3 0,8]0,943;

 

 

 

 

1

 

 

 

7

 

 

7

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

1

 

 

 

 

k=2

 

 

(2)

=

+

[1 1,143 +1 0,8]0,986;

 

x2

 

2

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x(2)

= 4

1 [(2) 1,143 +1 0,5]1,157.

 

 

 

 

3

 

 

 

5

 

 

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

23

Заметим, что точное решение x1* =1; x2* =1; x3* =1 в данном методе никогда не будет достигнуто, однако с каждой последующей итерацией вектор неизвестных все ближе приближается к точному решению.

Метод Зейделя

Отличие метода Зейделя от метода простой итерации заключается в том, что при вычислении очередного приближения вектора неизвестных используются уже уточненные значения на этом же шаге итерации. Это обеспечивает более быструю сходимость метода Зейделя. Алгоритм метода Зейделя весьма похож на алгоритм предыдущего метода. Первые два пункта (проверка условия сходимости и выбор начального приближения), а также четвертый пункт (проверка достижения заданной точности) остаются без изменения.

Отличается здесь только третий пункт алгоритма. При вычислении x1 используется информация об остальных неизвестных, найденных на предыдущей итерации. При вычислении x2 используется значение x1, найденное на текщей итерации и значения остальных переменных, найденные на предыдущей итерации и т.д. Наконец, при вычислении последней компоненты вектора неизвестных xn используется информация об остальных компонентах, найденных на текущей итерации. Приведенная система уравнений имеет вид:

x1(k ) = [b1 (a12 x2(k1) +... +a1n xn(k1) )]

x2(k ) = [b2 (a21x1(k ) +... +a2n xn(k1) )]

..................................................

 

 

 

 

x(k ) )]

x(k ) = [b (a

x(k ) +... + a

n,n1

n

n

n1 1

n1

a11

a22

(4)

ann

Рассмотрим пример ручной реализации алгоритма метода Зейделя для той же системы (начнем с п.3).

Запишем приведенную систему уравнений:

24