ЧМ-1
.pdf11
2.Методы решения систем линейных алгебраических уравнений.
Методы решения систем уравнений:
a11x1 + a12x2 + ... + a1nxn = b1 a21x1 + a22x2 + ... + a2nxn = b2
................................................ (2.1) an1x1 + an2x2 + ... + annxn = bn
делятся на точные и приближенные.
2.1. Метод Гаусса.
Является одним из наиболее распространенных методов решения систем линейных алгебраических уравнений. Этот метод является точным методом. В основе метода Гаусса лежит идея последовательного исключения неизвестных.
Рассмотрим систему из трех уравнений с тремя неизвестными:
I:a11x1 + a12x2 + a13x3 = b1
II: |
a21x1 + a22x2 + a23x3 = b2 |
(2.2) |
III: |
a31x1 + a32x2 + a33x3 = b3 |
|
Система уравнений (2.2) приводится к эквивалентной системе с треугольной матрицей:
I:a11x1 + a12x2 + a13x3 = b1
II: |
a¢22x2 + a¢23x3 = b¢2 |
(2.3) |
III: |
a²33x3 = b²3 |
|
Достигается это при помощи цепочки невырожденных элементарных преобразований, при которых из каждой строки вычитаются некоторые кратные величины, расположенные выше строк.
Процесс приведения системы (2.2) к системе (2.3) называется прямым ходом, а нахождение неизвестных x1, x2, x3 из системы (2.3) называется обратным ходом.
Прямой ход исключения: Исключаем x1 из уравнений (II) и (III) системы (2.2). Для этого умножаем уравнение (I) на d1=-a21/a11 и складываем со вторым, затем умножаем на d2=-a31/a11 и складываем с третьим.
В результате получаем следующую систему:
12
II¢: a¢22x2 + a¢23x3 = b¢2 |
|
III¢: a¢32x2 + a¢33x3 = b¢3 |
(2.4) |
Из полученной системы (2.4) исключаем x2 . Для этого умножая новое уравнение на d3=-a¢32/a¢22 и складываем со вторым уравнением, получим уравнение:
III²: a²33x3 = b²3 |
(2.5) |
Взяв из каждой системы (2.2), (2.4) и (2.5) первые уравнения, получим систему уравнений с треугольной матрицей.
Обратный ход: Из уравнения (III²) находим x3=b²3/a²33. Из уравнения
(II¢) находим x2=b¢2-a¢23x3. Из уравнения (I) находим x1=b1-a12x2-a13x3. Коэффициенты a11, a¢22 называются ведущими элементами 1-го и 2-го шагов исключения неизвестных. Они должны быть отличны от нуля. Если они равны нулю, то, меняя местами строки, необходимо на их место вывести ненулевые элементы.
Аналогичным путем методом Гаусса решаются системы n уравнений с n неизвестными.
Пример: Решить систему уравнений методом Гаусса:
x1 + 4x2 + 3x3 = 10 2x1 + x2 - x3 = -1 3x1 - x2 +x3 = 11
Решение: Удалить члены с x1 из 2-го и 3-го уравнений можно, вычитая из 2-ой строки 1-ую, умноженную на 2, а из 3-й - первую, умноженную на 3:
x1 + 4x2 + 3x3 = 10 -7x2 - 7x3 = -21 -13x2 -8x3 = -19
2-ая строка делится на -7:
x1 + 4x2 +3x3 = 10 x2 + x3 = 3 13x2 + 8x3 = 19
13
Вторая строка умножается на 13 и вычитается из 3-ей:
x1 + 4x2 + 3x3 = 10 x2 + x3 = 3
-5x3 = -20
3-я строка делится на -5:
x1 + 4x 2+ 3x3 = 10 x2 + x3 = 3 x3 = 4
Процедура обратного хода дает исходное решение:
x3 = 4; x2 = 3 - x3 = -1;
x1 =10 -4x2-3x3 = 10 - 4*(-1) - 3*4=10+4-12=2.
2.2. Метод прогонки.
Является частным случаем метода Гаусса и применяется для решения систем уравнений с трех диагональной (ленточной) матрицей. Такая система уравнений записывается в виде:
aixi-1+bixi+cixi+1 = di |
i = 1, 2, 3, ..., n |
(2.6) |
a1= 0; cn = 0.
Формула обратного хода записываем в следующем виде:
xi = Ui xi+1 + Vi ; i = n, n-1,..,1 |
(2.7) |
Уменьшаем в формуле (2.7) индекс на единицу и подставляем в (2.6):
xi-1 = U i -1xi + Vi-1,
ai (Ui-1xi + Vi-1) + bixi + cixi+1 = di
Приведем подобные и запишем:
(aiUi-1 +bi)xi =-cixi+1 + di -aiVi-1,
14
xi =-ci /(aiUi-1+ bi)xi+1+ (di - aiVi-1)/(aiUi-1 + bi) |
(2.8) |
|
сравнивая (2.7) и (2.8), получим: |
|
|
Ui = -ci / (bi + aiUi-1); |
|
|
Vi = (di - aiVi-1) / (bi + aiUi-1); i = 2, 3, ..., n |
(2.9) |
|
Поскольку a1 = 0, то |
|
|
U1 = -c1 / b1; |
V1 = d1 / b1. |
(2.10) |
Теперь по формулам (2.9) и (2.10) можно вычислить прогоночные коэффициенты Ui и Vi (i=1,2,3,...,n). Это прямой ход прогонки. Зная прогоночные коэффициенты по формулам (2.7), можно вычислить все xi; i=n,...,3,2,1 (обратный ход прогонки). Поскольку cn = 0, то Un = 0 и xn = Vn. Далее вычис-
ляем xn-1, xn-2, ..., x2, x1.
Пример: Решить систему уравнений методом прогонки:
10x1 |
+ x2 |
|
= m+5 |
-2x1 |
+ 9x2 + x3 |
|
= n+9 m -1 |
|
0,1x2 +4x3 |
-x4 |
= 4 n+0,1 m -5 |
|
-x3 |
+8x4 – x 5 = 40 -n – L |
|
|
|
|
x5 = L, |
где значения m - номер варианта, n - номер группы, L – номер факультета.
Решение: Даны значения ai; bi; ci; di; m=0, n=0, L=0; i=1, 2, 3, 4, 5.
Их записываем в виде таблицы 2.1.
|
|
|
|
Таблица 2.1 |
|
|
|
|
|
|
|
i |
ai |
bi |
ci |
|
di |
|
|
|
|
|
|
1 |
0 |
10 |
1 |
|
5 |
2 |
-2 |
9 |
1 |
|
-1 |
3 |
0,1 |
4 |
-1 |
|
-5 |
4 |
-1 |
8 |
-1 |
|
40 |
5 |
0 |
1 |
0 |
|
0 |
15
Прямой ход прогонки. По формулам (2.9) и (2.10) определяем прогоночные коэффициенты Ui и Vi (i=1,2,3,4).
U1=-c1/b1=-1/10=-0,1
V1=d1/b1=5/10=0,5
U2= -c2 /(b2 + a2U1)=-1/(9+2·0,1)= -0,1087
V2 = (d2 - a2V1)/(b2 + a2U1)=(-1+2·0,5)/(9+2·0,1)=0
U3= -c3 /(b3 + a3U2)=1/(4-0,1·0,1087)= 0,25068
V3 = (d3 - a3V2)/(b3 + a3U2)=(-5-0,1·0)/( 4-0,1·0,1087)=-1,25341
U4= -c4 /(b4 + a4U3)= 1/(8-1·0,25068)= 0,1290436
V4 = (d4 - a4V3)/(b4 + a4U3)=(40-1·1,25341)/(8-1·0,25068)= 5
U5= -c5 /(b5 + a5U4)=0
V5 = (d5 – a 5V4)/(b5 + a5U4)=(0-0·5)/(1+0·0,1290436)= 0
Обратный ход прогонки. По формулам (2.7) вычисляем все xi; i=4,3,2,1). Поскольку cn = 0, то x5 = V5 = 0.
Далее вычисляем x4, x3, x2, x1.
x 4 = U4 x5 + V4 =0,1290436 · 0+5=5
x 3 = U3 x4 + V3 =0,25068·5-1,25341=0
x2 = U2 x3 + V2 =-0,1087·0+0=0
x1 = U1 x2 + V1 =-0,1·0+0,5=0,5
Вычисляем невязки ri = di - aixi-1 - bixi - cixi+1; i=1, 2, 3, 4, 5.
r1 = d1 - b1x1 - c1x2 = 5 -10·0,5 – 1 · 0=0
r2 = d2 - a2x1 - b2x2 - c2x3 = -1+2·0,5- 9·0 - 0=0
r3 = d3 - a3x2 - b3x3 - c3x4 = -5-0,1 · 0-4 · 0+1 · 5=0
16
r4 = d4 - a4x3 – b 4x4 – c 4x5 = 40 +1 · 0-8 · 5 +1 · 0 =0 r5 = d5 – a 5x4 – b 5x5 = 0 -0 · 5 -1 · 0 = 0
Алгоритм метода прогонки заключается в следующем:
1. Ввести ai; bi; ci; di; i=1, 2, 3, ..., n.
2.Выполнить прямой ход, т.е. вычислить Ui и Vi; i=1, 2, 3, ..., n.
3.Выполнить обратный ход прогонки, т.е. вычислить xi=Ui · xi+1+Vi; i=n, n-1,...,1.
4.Напечатать xi; i=1, 2, 3, ..., n.
5.Вычислить невязки ri = di - aixi-1 - bixi - cixi+1; i=1, 2, 3, ..., n.
6.Напечатать ri ; i=1, 2, 3, ..., n.
На рис. 2.1 приведена программа решения методом прогонки.
REM LR-2-2, m=13, n=5
DIM A(5), B(5), C(5), D(5), U(5), V(5), X(6), R(5)
DATA 0, 10, 1, 5
DATA -2, 9, 1, -1
DATA 0.1, 4, -1, -5
DATA -1, 8, -1, 40
DATA 0, 1, 0, 0
FOR I =1 TO 5
READ A(I), B(I), C(I), D(I)
U(I) = -C(I) / (A(I)*U(I-1) + B(I))
V(I) =(D(I)-A(I)*V(I-1)) / (A(I)*U(I-1) + B(I))
NEXT I
X(5) = V(5)
FOR I =4 TO 1 STEP -1
X(I) = U(I)*X(I+1) + V(I)
NEXT I
FOR I =1 TO 5
R(I) = D(I)-A(I)*X(I-1)-B(I) *X(I)-C(I)*X(I+1)
PRINT ²X ²; I; ² = ²; X(I); ²R²; I; R(I)
NEXT I
Рис.2.1. Программа решения методом прогонки.
17
2.3. Метод простой итерации (метод Якоби).
Суть вычислений итерационными методами состоит в следующем: расчет начинается с некоторого заранее выбранного приближения x(0) (начального приближения). Вычислительный процесс, использующий матрицу А, вектор В, системы (2.1) и x(0) приводит к новому вектору x(1):
i-1 |
n |
|
xi(1) =(bi -∑ aij xj(0) |
- ∑ aij xj(0)) / aij ; |
|
j=1 |
j=i+1 |
(2.11) |
|
|
i=1, 2, 3, ..., n; j =1, 2, 3, ..., n.
Затем процесс повторяется, только вместо x(0) используется новое значение x(1). На k +1-м шаге итерационного процесса по A,B,X получают:
i-1 |
n |
|
xi(k+1) =(bi - ∑ aij xj(k) |
- ∑ aij xj(k)) / aij ; |
|
j=1 |
j=i+1 |
(2.12) |
|
|
i=1, 2, 3, ..., n; j =1, 2, 3, ..., n.
При выполнении некоторых заранее оговоренных условий процесс сходится при k®¥. Сходимость метода простой итерации обеспечивается при выполнении условия преобладания диагональных элементов матрицы A, т.е. при:
∑½aij½<½aii½; i=1, 2, 3, ..., n. |
(2.13) |
i¹j |
|
Заданная точность достигается при выполнении условия:
max½xi(k+1) - xi(k)½< e |
(2.14) |
1[i[n |
|
Пример: Преобразовать систему уравнений:
7x1 + 4x2 -x3= 7 |
|
2x1+6x2+3x3=-2 |
(2.15) |
-x1+ x2 + 4x3=4 |
|
18
к виду, пригодному для построения итерационного процесса методом Якоби и выполнить три итерации.
Решение: Достаточное условие сходимости (2.13) выполняется, поэтому начальное приближение может быть любым.
½a12½+½a13½=4+1<½a11½=7
½a21½+½a23½=2+3<½a22½=6
½a31½+½a32½=1+1<½a33½=4
В i-ом уравнении все члены, кроме xi, переносятся в правую часть:
x1 |
=(7-4x2+x3)/7 |
|
x2 |
=(-2-2x1-3x3)/6 |
(2.16) |
x3 |
=(4+x1-x2)/4 |
|
Задается начальное приближение x(0)=(x1(0); x2(0); x3(0)), которое подставляется в правую часть. Обычно x1(0)=0, x2(0)=0, x3(0)=0 и получают результаты первой итерации:
x1(1) |
=(7-4·0+0)/7 =1 |
x2(1) |
=(-2-2·0-3·0)/6 =-1/3 = - 0.333 |
x3(1) |
=(4+0-0)/4 =1. |
Результаты первой итерации x(1)=(x1(1); x2(1); x3(1)) подставляют в правую часть и получают результаты второй итерации:
x1(2) =(7-4· (-0.333)+1)/7 = 4/3= 1.333
x2(2) =(-2-2·1-3·1)/6 = -7/6 = - 1.167
x3(2) =(4+1-(-1/3))/4 = 4/3 = 1.333
19
Результаты второй итерации x(2)=(x1(2); x2(2); x3(2)) подставляют в правую часть и получают результаты третьей итерации:
x1(3) =(7-4· (-1.167)+1.333)/7 = 1.857
x2(3) =(-2-2·1.333-3·1.333)/6 = - 1.444
x3(3) =(4+1.333-(-1.167))/4 = 1.625
Определяют достигнутую точность из условия:
max ½xi(3) - xi(2)½< e .
1[i[3
½x1(3) - x1(2) ½= ½1.857-1.333½= 0.524
½x2(3) - x2(2) ½= ½- 1.444+ 1.167½= 0.278
½x3(3) - x3(2) ½= ½1.625-1.333½= 0.292
2.4. Метод Зейделя.
Вычисления в этом методе почти такие же, как и в методе Якоби, с той лишь разницей, что в последнем новые значения x(k+1) не используются до новой итерации. В методе Зейделя при нахождении k+1-ой компоненты используются уже найденные компоненты этой же итерации с меньшими номерами, т.е. последовательность итераций задается формулой:
i-1 |
n |
|
xi(k+1) =(bi - ∑ aij·xj(k+1) - |
∑ aij·xj(k))/aij; |
|
j=1 |
j=i+1 |
(2.17) |
|
|
i=1, 2, 3, ..., n; j =1, 2, 3, ..., n.
Сходимость и точность достигаются условиями (2.13) и (2.14).
Пример: Задать итерационный процесс Зейделя для нахождения решений системы уравнений (2.15).
Решение: Достаточное условие сходимости (2.13) выполняется, поэтому начальное приближение может быть любым.
20
Используя (2.16) получим:
x1(k+1) =(7-4x2(k) +x3(k))/7 x2(k+1) =(-2-2x1(k+1)-3x3(k))/6 x3(k+1) =(4+x1(k+1) -x2(k+1))/4.
После задания начального приближения x(0)=(x1(0); x2(0); x3(0)), например, x(0)=(0; 0; 0) выражение для первой итерации имеет вид:
x1(1) =(7-4x2(0) +x3(0))/7 =(7-4·0+0)/7 =1
x2(1) =(-2-2x1(1)-3x3(0))/6 =(-2-2·1-3·0)/6 = - 0.667 x3(1) =(4+x1(1)-x2(1))/4 =(4+1-(-2/3))/4 =1.417
Результаты первой итерации x(1)=(x1(1); x2(1); x3(1)) подставляют в правую часть и получают результаты второй итерации:
x1(2) =(7-4· (-0.667)+1.417)/7 = 1.583
x2(2) =(-2-2·1.583-3·1.417)/6 = - 1.569
x3(2) =(4+1.583-(-1.569))/4 = 1.788
Результаты второй итерации x(2)=(x1(2); x2(2); x3(2)) подставляют в правую часть и получают результаты третьей итерации:
x1(3) =(7-4· (-1.1569)+1.788)/7 = 2.152 x2(3) =(-2-2·2.152-3·1.788)/6 = - 1.945 x3(3) =(4+2.152-(-1.945))/4 = 2.024
Точность решения определяют из условия:
max ½xi(3) - xi(2)½< e .
1[i[3
½x1(3) - x1(2) ½= ½2.152-1.583½= 0.469
