
Информатика 2 сессия / Численные методы решения задач строительства на ЭВМ
.pdf
Численные методы решения задач линейной алгебры
В некоторых случаях эту систему удобнее записывать в виде
|
|
|
|
|
n |
|
|
|
ü |
|
|
|
|
|
|
|
|
|
åaij x j |
= bi ,ï |
|
|
|
|
(2.1 а) |
||||
|
|
|
|
j=1 |
|
|
|
ý |
|
|
|
|
||
|
|
|
|
(i =1,2,K, n) |
ï |
|
|
|
|
|
||||
|
|
|
|
þ |
|
|
|
|
|
|||||
или в матричной форме |
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
_ |
|
_ |
|
|
|
|
|
|
(2.1 б) |
|
|
|
|
A ´ X = B , |
|
|
|
|
|
|||||
где А – |
матрица системы, |
_ |
|
– |
вектор |
|
|
_ |
– вектор |
|||||
X |
|
решения, B |
||||||||||||
свободных членов. |
|
|
|
|
|
|
|
|
|
|
|
|||
|
éa |
a |
K a |
ù |
|
|
|
éx |
ù |
|
|
éb |
ù |
|
|
ê 11 |
12 |
1n |
ú |
|
|
|
ê 1 ú |
|
|
ê 1 |
ú |
|
|
A = |
êa21 |
a22 |
K a2n ú |
|
_ |
= |
êx2 ú |
|
B = |
êb2 ú |
(2.1 в) |
|||
ê K K K K |
ú |
; |
X |
êKú |
; |
|
. |
|||||||
|
|
|
|
|
|
êKú |
|
|||||||
|
ê |
an2 |
|
ú |
|
|
|
ê |
ú |
|
|
ê |
ú |
|
|
ëan1 |
K ann û |
|
|
|
ëxn û |
|
|
ëbn |
û |
|
Решение систем линейных алгебраических уравнений представляет собой типичный образец численных расчетов, которыми занимались еще в древности. Это основной “строительный блок” для алгоритмов решения большинства задач, в которых используются математические модели.
Система (2.1) имеет единственное решение [5, 8], если матрица А невырождена (det A.¹0). Это решение, если использовать понятие обратной матрицы (А-1), можно записать
|
= A−1 × |
|
. |
(2.2) |
X |
B |
Такой подход к решению СЛАУ крайне неэффективен, т.к.
вычислительные потери при вычислении обратной матрицы очень большие. И если нет необходимости исследовать непосредственно элементы обратной матрицы, то лучше не вычислять А-1.
В курсе линейной алгебры решение системы (2.1) обычно находится по формулам Крамера в виде отношения определителей:
43

Численные методы решения задач линейной алгебры
|
a11 |
a12 |
L a1n |
|
|
D = |
a21 |
a22 |
L a2n |
, |
|
|
L |
L L L |
|
||
|
an1 |
an2 |
L ann |
|
|
|
|
a11 |
b1 |
L a1n |
|
|
|
|
|||
D2 = |
a21 |
b2 |
L a2n |
|
|
|
|
L L |
L L |
|
|
|
|
an1 |
bn |
L ann |
|
|
b1 |
a12 |
L a1n |
|
|
D1 = |
b2 |
a22 |
L a2n |
, |
|
|
L L L |
L |
|
||
|
bn |
an2 |
L |
ann |
|
и т.д.
X1 = DD1 , X 2 = DD2 , и т.д.
Для численного решения системы эти формулы непригодны, так как требуют вычисления (n+1)-го определителя. Даже при
выборе наилучшего метода вычисление одного определителя требует такого же времени, что и решение системы линейных алгебраических уравнений современными численными методами.
Все методы решения СЛАУ можно условно разбить на два класса: прямые (или точные) и итерационные. Имеются и гибридные методы.
Прямые методы позволяют за конечное число действий получить точное решение системы. Слова “точное решение” нужно понимать условно, как характеристику алгоритма, а не реального вычислительного процесса.
Итерационные методы являются бесконечными методами.
Они позволяют найти приближенное решение системы с заданной точностью ε путем построения последовательности приближений (итераций), начиная с некоторого начального приближения.
Выбор того или иного метода зависит от многих обстоятельств:
-от вида матрицы коэффициентов;
-от порядка системы;
-от имеющихся программ;
-от объема оперативной памяти ЭВМ и др.
44

Численные методы решения задач линейной алгебры
2.2. Прямые методы решения систем линейных алгебраических уравнений
Прямые методы решения систем линейных алгебраических уравнений основаны на сведении матрицы системы А к матрице простой структуры – диагональной (и тогда решение очевидно) или треугольной – и тогда решение отыскивается с помощью последовательных подстановок корней. Сведение матрицы А к
одному из указанных видов осуществляется при помощи конечного числа эквивалентных преобразований:
·перемена местами двух уравнений в системе;
·умножение какого-либо уравнения системы на действительное число с¹0;
·прибавление к одному уравнению другого уравнения, умноженного на произвольное число.
2.2.1. Метод Гаусса
Иногда метод Гаусса называют методом последовательного исключения. Алгоритм исключения неизвестных датируется, по крайней мере 250-м годом до нашей эры, хотя и носит имя Гаусса. Суть метода заключается в манипуляциях с уравнениями, в
результате чего из уравнений последовательно исключаются неизвестные и получается эквивалентная система (т.е. существует система с тем же самым решением).
Процесс состоит из двух этапов: прямого и обратного хода.
В результате прямого хода система приводится к треугольному виду, а при выполнении обратного хода вычисляются все неизвестные [8, 12].
Продемонстрируем метод Гаусса на примере системы из трех уравнений. Обозначим каждое уравнение буквами A(i) , B(i), C(i) (здесь (i) соответствует номеру шага).
45

Численные методы решения задач линейной алгебры
А |
(0) |
Þ |
|
|
a11 x1 + a12 x2 |
+ a13 x3 = b1, |
ü |
|
||
|
|
|
||||||||
|
|
|
ï |
|
||||||
B(0) |
Þ |
|
|
a21 x1 + a22 x2 |
+ a23 x3 |
= b2 |
|
ï |
(2.3.) |
|
|
|
|
||||||||
|
|
|
,ý |
|||||||
C (0) |
Þ |
|
a31 x1 + a32 x2 |
+ a33 x3 = b3 |
|
ï |
|
|||
|
.ï |
|
||||||||
|
|
|
|
|
|
|
|
|
þ |
|
Прямой ход |
|
|
|
|
||||||
|
|
|
|
|
||||||
Шаг 1. Допустим ведущий1 |
элемент a |
отличен от нуля. |
||||||||
Разделим первое уравнение на a11 |
|
|
11 |
|
||||||
и, |
|
используя полученное при |
этом уравнение, домножим его последовательно на коэффициенты (- a21 ) и (- a31 ) и суммируем с соответствующими элементами 2-й и 3-й строк.
Выполняемые действия показаны справа от системы уравнений. В результате выполнения этого шага из всех уравнений, кроме 1-го, исключается неизвестное х1.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Действия: |
|
A |
(1) |
Þ |
|
(1) |
x2 |
(1) |
x3 |
(1) |
, |
ü |
A |
(1) |
= A |
(0) |
a11 , |
|
|
||||||||||||||||
|
|
|
x1 + a12 |
+ a13 |
= b1 |
ï |
|
|
||||||||
B(1) |
Þ |
|
|
a22(1) x2 |
+ a23(1) x3 |
= b2(1) , |
ï |
B(1) |
= A(1) × (-a21 ) + B(0) , (2.3,а ) |
|||||||
|
|
|||||||||||||||
|
|
ý |
||||||||||||||
C (1) |
Þ |
|
|
a(1) |
x |
+ a(1) x |
= b(1) . |
|
ï |
C (1) |
= A(1) × (-a31 ) + C (0) . |
|||||
|
|
|
||||||||||||||
|
|
|
|
|
32 |
1 |
33 |
3 |
3 |
|
þ |
|
|
|
|
|
|
|
|
|
|
|
ï |
|
|
|
|
|
Шаг 2. Выполняя аналогичные действия со вторым и третьим уравнениями (1-е уравнение при этом остается неизменным), исключаем неизвестное х2 из них:
|
|
|
|
|
|
|
|
|
|
|
|
Действия: |
|
A(2) |
Þ |
|
x |
+ a(1) x |
2 |
+ a(2) x |
3 |
= b(1) , |
ü |
A(2) |
= A(1) , |
|
|
|
|
||||||||||||
|
|
|
1 |
12 |
|
13 |
1 |
ï |
|
|
|
||
B(2) |
Þ |
|
|
|
x2 |
+ a23(2) x3 |
= b2(2) ,ýï B(2) |
= B(1) a22(1) , |
(2.3,б) |
||||
|
|
|
|||||||||||
C (2) |
Þ |
|
|
|
|
|
a(2) x |
= b(2) . |
ï C (2) |
= B(2) (−a(1) ) + C(1) . |
|
||
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
33 |
3 |
3 |
þ |
|
32 |
|
|
|
|
|
|
|
|
ï |
|
|
1 Ведущий (главный) элемент – элемент, стоящий на главной диагонали.
46

Численные методы решения задач линейной алгебры
Выполнив два шага для системы 3-го порядка, получили систему, эквивалентную заданной и имеющую верхнюю треугольную матрицу коэффициентов, из которой легко вычисляются все неизвестные. (Для общности можно выполнить 3-й шаг, поделив последнее уравнение на главный коэффициент).
Обратный ход. Из последней строки полученной системы (2.3,б) находим значение неизвестного х3
b(2) x3 = a3(2) .
33
Подставляя его во вторую строку системы (2.3,б), получим значение х2
x2 = b2(2) − a23(2) x3 .
Имея x2 , x3 , аналогичным образом найдем x1 из первого уравнения этой же системы:
x1 = b1(1) − a12(1) x2 − a13(1) x3 .
Перед обобщением метода на случай n уравнений с n неизвестными рассмотрим простой численный пример.
nПример 2.1. Методом Гаусса решить систему уравнений:
2x1 + 4x2 + 3x3 = 4, ü 3x1 + x2 - 2x3 = -2, ïý
4x1 +11x2 + 7x3 = 7.ïþ
Составим матрицу коэффициентов, включая свободные члены (расширенную матрицу):
|
|
é2 |
4 |
3 |
4 |
ù |
A |
(0) |
ê |
1 |
- 2 |
|
ú |
|
= ê3 |
- 2ú |
||||
|
|
ê |
11 |
7 |
7 |
ú |
|
|
ë4 |
û |
47

Численные методы решения задач линейной алгебры
Прямой ход
1-й шаг 1-ю строку матрицы делим на а11 =2; Умножаем полученную строку сначала на (–3) и складываем со 2-й, а затем на (–4) и складываем с 3-й:
|
|
é1 |
2 |
1,5 |
2 ù |
A |
(1) |
ê |
- 5 |
|
ú |
|
= ê0 |
- 6,5 -8ú |
|||
|
|
ê0 |
3 |
1 |
-1ú |
|
|
ë |
|
|
û |
2-й шаг 2-ю строку матрицы А(1) делим на а22 = –5; Умножаем полученную строку на (–3) и складываем с 3-й строкой этой же матрицы:
|
|
é1 |
2 |
1,5 |
2 |
ù |
A |
(2) |
ê |
1 |
1,3 |
1,6 |
ú |
|
= ê0 |
ú |
||||
|
|
ê0 |
0 |
- 2,9 |
- 5,8ú |
|
|
|
ë |
|
|
|
û |
Обратный ход
Из последнего уравнения (3-я строка матрицы) получаем x3 = -25,9,8 = 2 .
Из 2-го уравнения находим x2 = 1,6 -1,3× x3 =1,6 -1,3×2 = -1 .
Из 1-го уравнения получаем x1 = 2 - 2× x2 -1,5× x3 = 2 - 2×(-1) -1,5×2 =1 .
Таким образом, полученное решение имеет вид X (1, -1, 2) .
Аналогично методом Гаусса решается система линейных алгебраических уравнений n-го порядка. Процесс расчета представим в виде, удобном для дальнейшего программирования.
Запишем систему уравнений n -го порядка в виде
n |
ü |
|
åa(0)ij x j = bi(0) |
,ï |
(2.4) |
j=1 |
ý |
|
(i =1,2,K, n). |
ï |
|
þ |
|
48

Численные методы решения задач линейной алгебры
Если aii(0) ¹ 0 , а также ведущие элементы остальных строк,
получаемых в процессе вычисления, отличны от нуля, то система за n шагов приводится к треугольному виду
n |
|
xi + åaij(i) xj = bi(i) , |
(2.5) |
j=i+1
(i = 1,2,...n).
Коэффициенты системы при этом вычисляются по формулам
|
(k ) |
|
(k −1) |
|
(k −1) |
(k −1) |
ü |
|
aij |
= aij |
- mi |
× aij |
,ï |
||
|
b(k ) |
= b(k −1) |
- m(k −1) |
× b(k −1) |
ý |
||
|
, ï |
||||||
|
i |
|
i |
|
i |
i |
þ |
|
m(k −1) |
|
a(k −1) |
|
|
|
|
где |
= |
ij |
|
, |
|
|
|
|
|
|
|
||||
|
i |
|
aii(k −1) |
|
|
|
|
|
|
|
|
|
|
|
(2.6)
(2.7)
(k=1,2,..., n; i=k+1,..., n; j=k+1,..., n).
Обратный ход осуществляется по формулам:
|
b(n−1) |
|
|
|
xn = |
n |
; |
(2.8) |
|
ann(n−1) |
||||
|
|
|
||
|
|
n |
|
|
xj = b(j j) - åa(jkj) × xk , |
(2.9) |
|||
|
|
k = j+1 |
|
(j=n-1,..., 1).
Решение этого примера с использованием электронных таблиц Excel приведено в разделе 2.9.1.
:Алгоритм метода Гаусса:
1)Ввести все коэффициенты aij(0) , bi(0) .
2)Для k=1 до n
Для j=k+1 до n
49

Численные методы решения задач линейной алгебры
вычислить параметры m по формулам (2.7). Для i=k+1 до n
вычислить коэффициенты а и в по формулам (2.6). Конец по i.
Конец по j. Конец по k.
3)Вычислить xn по формуле (2.8).
4)Для j=n-1 до 1
вычислить xj по формулам (2.9). 5) Конец.
Впроцессе решения системы возможны три случая:
1)Решение системы существует и является единственным,
когда матрица коэффициентов не вырождена (при этом на
последнем шаге решения получается одно уравнение с одним неизвестным).
2)Система уравнений вообще не имеет решений (такой случай имеет место, когда на некотором шаге получается строка, в
которой все коэффициенты при неизвестных равны нулю, а свободный член не равен нулю).
3)Система уравнений имеет бесконечное множество решений (это получается, когда на некотором шаге в системе получается строка, в которой все коэффициенты и свободный член равны нулю).
G При практическом применении метода Гаусса следует обратить внимание на следующие моменты:
1.Если в ходе приведения матрицы А к треугольному виду на главной диагонали окажется элемент, равный нулю, эта схема расчета формально непригодна, хотя система может иметь единственное решение.
2.В процессе вычислений встречаются ведущие элементы,
которые малы по сравнению с другими элементами соответствующих строк. Это обстоятельство может привести к значительным ошибкам округления.
50

Численные методы решения задач линейной алгебры
Чтобы избежать всего этого, каждый цикл (шаг) следует начинать с перестановки строк, в результате которой ненулевой элемент перемещается на главную диагональ. При этом среди элементов столбца находится главный элемент, то есть максимальный по модулю в соответствующем столбце, который и выводится на главную диагональ. В таком варианте метода погрешности обычно невелики. Такую модификацию метода
называют методом Гаусса с выбором главного элемента
2.2.2. Метод Гаусса для СЛАУ с ленточными матрицами
Метод Гаусса можно применять и для решения систем линейных алгебраических уравнений с симметричными ленточными матрицами [12].
Например:
а11х1+а12х2+а13х3 |
=b1 , |
|
a21x1+a22x2+a23x3+a24x4 |
=b2 , |
|
a31x1 + a32x2+a33x3+a34x4+a35x5 |
=b3 , |
(2.10) |
a42x2+a43x3+a44x4+a45x5 =b4 ,
a53x3+a54x4+a55x5 =b5.
Ширина ленты = 3. Процесс исключения аналогичен изложенному выше для матриц общего вида, но имеет свои особенности:
1) Симметрия коэффициентов (aij=aji) после исключения неизвестных сохраняется. Это позволяет проводить преобразование матрицы к треугольному виду только для коэффициентов,
расположенных на главной диагонали и выше, так что нет необходимости запоминать полную матрицу.
2) На каждом шаге исключения следует рассматривать
только те коэффициенты в пределах ширины ленты, которые изменяются в процессе исключения (для данной системы только 3
уравнения видоизменяются после каждого шага, а для системы,
51

Численные методы решения задач линейной алгебры
например, из 100 уравнений с шириной ленты 20, изменяться будут только 20 уравнений после каждого шага исключения).
3) Элементы вне ширины ленты не влияют на процесс исключения, так как равны 0. Следовательно, их помнить не нужно.
Это обстоятельство позволяет хранить матрицу в виде прямоугольного массива шириной, равной ширине ленты.
2.2.3. Метод прогонки
Метод прогонки является модификацией метода Гаусса для частного случая систем уравнений с трехдиагональной матрицей вида
b1x1 + c1 x2 |
|
|
= d1 |
|
a2 x1 + b2 x2 + c2 x3 |
|
|
= d2 |
|
a3 x2 + b3 x3 + c3 x4 |
|
= d3 |
(2.11) |
|
K |
|
|
|
|
.................... |
|
...... |
|
|
an−1xn−2 + bn−1xn−1 + cn−1 xn = dn−1 |
|
|||
|
an xn−1 + bn xn |
= dn |
|
|
Векторы: |
а |
в |
с |
|
Система (2.11) имеет единственное решение при выполнении условия "преобладания диагональных элементов", т.е. при выполнении условия:
|
bi |
|
³ |
|
ai |
|
+ |
|
ci |
|
> 0,(i = 1,2,...,n) . |
(2.12) |
|
|
|
|
|
|
Причем решение единственно, если хотя бы для одного значения i выполняется строгое неравенство. Это условие, «преобладания диагональных элементов», обеспечивает также
устойчивость метода прогонки относительно погрешностей округления.
Метод прогонки состоит из двух этапов: прямой и обратной прогонки. При прямой прогонке каждое неизвестное xi выражается
через xi+1 с помощью прогоночных коэффициентов Ui, Vi :
52