Преобразуем задачу (1.1) к виду, разрешенному относительно неизвестного X:

X = ϕ( X ) .

(1.3)

При этом точное решение (1.1) X * является и решением (1.3). Заметим, что привести задачу (1.1) к виду (1.3), не изменяя решения, можно различными способами, например: X = α[ A( X ) b] + X = ϕ( X ) , где α – произвольный пара-

метр, который в дальнейшем подбирается из условия сходимости итераций.

Используем выражение (1.3) в качестве рекуррентной формулы (m=1):

 

X k =ϕ( X k1) .

(1.4)

Задав одно X 0 (начальное приближение), последовательно находим X 1 ,

X 2 , ...,

X k . Если полученная таким образом последовательность сходится к некоторо-

му конечному пределу, то этот предел совпадает с точным решением X * . Условие сходимости последовательности, задаваемой рекуррентной форму-

лой (1.4), определяется выполнением неравенства

dϕ / dX

 

 

 

=

 

 

 

G

 

 

 

<1.

(1.5)

 

 

 

 

 

 

Чем ближе G к нулю, тем быстрее сходится рекуррентная последовательность

к точному решению и, следовательно, для получения решения с заданной точностью требуется меньше итераций.

1.6.Контрольные вопросы

1.Что такое математическая модель и ее погрешность?

2.Что такое математическая постановка задачи?

3.Что такое численный метод, чем он отличается от других методов?

4.Какие нормированные пространства вы знаете?

5.Как оценить погрешность метода в нормированном пространстве?

6.Что понимается под корректностью задачи?

7.Что понимается под устойчивостью (неустойчивостью) метода?

8.Что такое итерационный метод, как определяется его погрешность?

11

ТЕМА 2. РЕШЕНИЕ СИСТЕМ ЛИНЕЙНЫХ АЛГЕБРАИЧЕСКИХ УРАВНЕНИЙ (СЛАУ)

2.1. Основные понятия и определения

Выделяют четыре основные задачи линейной алгебры: решение СЛАУ, вычисление определителя матрицы, нахождение обратной матрицы, определение собственных значений и собственных векторов матрицы.

Задача отыскания решения СЛАУ с n неизвестными – одна из наиболее часто встречающихся в практике вычислительных задач, так как большинство методов решения сложных задач основано на сведении их к решению некоторой последовательности СЛАУ.

Обычно СЛАУ записывается в виде

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ai, j

x j = bi ; 1 i n

или коротко

 

 

 

 

 

 

 

 

 

j=1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a1,1 a1,2 ... a1,n

 

 

 

 

x

 

 

b

 

 

 

a

 

 

 

 

 

1

 

 

1

 

 

r

a

... a

;

 

 

x

 

r

b

 

(2.1)

Axr = b,

A = 2,1

2,2

2,n

 

xr = 2

;

b

= 2

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

a

... a

 

 

 

 

x

 

 

b

 

 

 

a

 

 

 

 

 

 

 

n,1

n,2

n,n

 

 

 

 

n

 

 

n

 

 

Здесь А и br заданы, требуется найти x *, удовлетворяющий (2.1).

 

Известно, что если определитель матрицы

 

A

 

0 ,

то СЛАУ имеет единст-

 

 

венное решение. В противном случае либо решение отсутствует (если b 0 ), либо имеется бесконечное множество решений (если b = 0 ). При решении сис-

тем, кроме условия

 

A

 

0 , важно чтобы задача была корректной, т.е. чтобы

 

 

при малых погрешностях правой части

b

и (или) коэффициентов ai, j

по-

грешность решения

 

xr* также оставалась малой. Признаком некорректности,

 

 

 

 

или плохой обусловленности, является

 

 

 

 

близость к нулю определителя матрицы.

 

 

 

 

 

Плохо обусловленная система двух уравне-

 

 

 

 

ний геометрически соответствует почти парал-

 

 

 

 

лельным прямым (рис. 2.1). Точка пересечения

 

 

 

 

таких прямых (решение) при малейшей по-

 

 

 

 

грешности коэффициентов резко сдвигается.

 

 

 

 

Обусловленность (корректность) СЛАУ харак-

 

 

 

 

теризуется

числом

χ =

 

 

 

A

 

 

 

 

 

 

 

A1

 

 

 

1.

Чем

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

дальше χ от 1, тем хуже обусловлена система.

Рис. 2.1

 

 

 

Обычно

при χ >103

система некорректна и

12

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

требует специальных методов решения – методов регуляризации. Приведенные ниже методы применимы только для корректных систем.

Методы решения СЛАУ делятся на прямые и итерационные.

Прямые методы дают в принципе точное решение (если не учитывать ошибок округления) за конечное число арифметических операций. Для хорошо

обусловленных СЛАУ небольшого порядка n 103 104 применяются практи-

чески только прямые методы.

Наибольшее распространение среди прямых методов получили метод Гаусса для СЛАУ общего вида, его модификация для трехдиагональной матрицы – метод прогонки и метод квадратного корня для СЛАУ с симметричной матрицей.

Итерационные методы основаны на построении сходящейся к точному ре-

шению

 

xr* рекуррентной последовательности векторов (см. подразд. 1.5)

xr0 , xr1,

xr2 , ..., xrk xr*. Итерации выполняют до тех пор, пока норма раз-

 

 

 

 

 

 

 

k

→∞

 

 

 

 

 

ности

δ

k

=

 

 

 

xrk xrk 1

 

 

= max

 

xk xk1

 

≤ ε. Последнее xrk берут в качестве при-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

c

i

 

i

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ближенного решения.

Итерационные методы выгодны для систем большого порядка n > 1000, а также для решения плохо обусловленных систем. Многообразие итерационных методов решения СЛАУ объясняется возможностью большого выбора рекуррентных последовательностей, определяющих метод. Наибольшее распространение среди итерационных методов получили одношаговые методы простой итерации и Зейделя с использованием релаксации.

Для контроля полезно найти невязку полученного решения xrk :

 

n

 

= max

bi ai, j xkj

;

1in

j=1

 

 

 

если велико, то это указывает на грубую ошибку в расчете.

Ниже приведено описание алгоритмов указанных методов решения СЛАУ.

2.2. Прямые методы решения СЛАУ

Метод Гаусса (MG)

Метод основан на приведении с помощью преобразований, не меняющих решение, исходной СЛАУ (2.1) с произвольной матрицей к СЛАУ с верхней треугольной матрицей вида

a1,1x1 + a1,2x2 +... + a1,n xn = b1

+

(2.2)

a2,2 x2

+ a2,n xn = b2 .

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

 

an,n xn = bn

Этап приведения к системе с треугольной матрицей называется прямым хо-

дом метода Гаусса.

13

Решение системы с верхней треугольной матрицей (2.2), как легко видеть, находится по формулам, называемым обратным ходом метода Гаусса:

 

 

1

 

n

 

 

 

 

xn =bn/ an,n ;

xk =

bk′ −

ak

,i xi

,

k = n 1, n 2, ..., 1.

(2.3)

 

 

 

ak,k

i=k +1

 

 

 

 

Прямой ход метода Гаусса осуществляется следующим образом: вычтем из каждого m-го уравнения (m = 2 ... n) первое уравнение, умноженное на am,1 / a1,1,

и вместо m-го уравнения оставим полученное. В результате в матрице системы исключаются все коэффициенты первого столбца ниже диагонального. Затем, используя второе полученное уравнение, аналогично исключим элементы второго столбца (m = 3 ... n) ниже диагонального и т.д. Такое исключение называется циклом метода Гаусса. Проделывая последовательно эту операцию с расположенными ниже k-го уравнениями (k=1, 2, ..., n-1), приходим к системе вида (2.2). При указанных операциях решение СЛАУ не изменяется.

На каждом k-м шаге преобразований прямого хода элементы матриц изме-

няются по формулам прямого хода метода Гаусса:

a

 

= a

m,i

a

am,k

,

k =1, n 1, i = k, n;

 

 

 

m,i

 

 

k,i

a

 

 

 

 

 

 

 

 

k ,k

(2.4)

 

 

 

 

 

am,k

 

 

b

= b

b

,

m = k +1, n.

 

m

 

m

 

k a

 

 

 

 

 

 

 

 

 

k ,k

 

 

 

 

Элементы ak ,k называются главными. Заметим, что если в ходе расчетов по данному алгоритму на главной диагонали окажется нулевой элемент ak ,k = 0 , то

произойдет сбой в ЭВМ. Для того чтобы этого избежать, следует каждый цикл по k начинать с перестановки строк: среди элементов k-го столбца am,k , k m n находят номер p главного, т.е. наибольшего по модулю, и меня-

ют местами строки k и p. Такой выбор главного элемента значительно повышает устойчивость алгоритма к ошибкам округления, так как в формулах (2.4) при этом производится умножение на числа am,k / ak ,k , меньшие единицы, и ошибка,

возникшая ранее, уменьшается.

Схема алгоритма с выбором главного элемента приведена на рис. 2.2. Проиллюстрируем метод Гаусса на решении СЛАУ 3-го порядка:

2x1+ x2 x3 = 1

 

 

 

 

4x1 + 6x2 + 2x3 = 6

 

I ×2

6x1 +5x2 +8x3 =14

 

I ×3.

Первый цикл: вычтем из второго уравнения первое, умноженное на a2,1 / a1,1 = 2 , а из третьего – первое, умноженное на a3,1 / a1,1 = 3; получим

14

Рис. 2.2

15

2x1+ x2 x3 = 1

 

 

 

 

0

4x2 + 4x3 = 4

 

 

0

2x2 +11x3 =11

 

II ×0,5.

Второй цикл: вычтем из третьего уравнения второе, умноженное на a3,2/a2,2 = 0,5; получим систему с треугольной матрицей вида (2.2):

2x1+ x2 x3 =1 4x2 + 4x3 = 4

0 9x3 = 9.

Обратный ход: из последнего уравнения находим x3 =1, подставляя во второе, находим x2 = 0 , подставляя в первое, находим x1 =1.

Таким образом, получен вектор решения xr* = (x1*, x2* , x3* ) = (1, 0, 1).

Метод прогонки (MP)

Многие задачи (например решение дифференциальных уравнений второго порядка) приводят к необходимости решения СЛАУ с трехдиагональной матрицей:

q1

r1

0

0 ...

0

0

0

 

x1

 

d1

 

 

p2

q2

r2

0 ...

0

0

0

 

x2

 

d2

 

 

0

p3

q3

r3 ...

0

0

0

×

x3

=

d3

.

(2.5)

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

 

...

 

...

 

 

0

0

0

0 ...

pn

qn

rn

 

xn

 

dn

 

 

0

0

0

0 ...

0

pn1

qn1

 

xn1

 

dn1

 

 

или коротко эту систему записывают в виде

q1x1 + r1x2

 

= d1

 

pi xi1 + qi xi

+ ri xi+1

= di

(2.6)

pn1xn + qn1xn1 = dn1 ,

 

n1 = n +1, 2 i n.

В этом случае расчетные формулы метода Гаусса значительно упрощаются. После исключения поддиагональных элементов в результате прямого хода метода Гаусса и последующего деления каждого уравнения на диагональный

элемент систему (2.5) можно привести к виду

 

 

x1

 

 

 

η1

 

 

 

 

1

−ξ1

0

...

0

...

0

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

1

−ξ2

...

0

...

0

0

 

x2

 

 

 

η2

 

 

 

 

... ...

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

×

...

 

=

 

...

 

.

(2.7)

 

0

0

0

...

0

...

1

−ξn

 

xn

 

 

 

ηn

 

 

 

 

0

0

0

...

0

...

0

1

 

xn1

 

 

 

ηn1

 

 

 

16

При этом формулы прямого хода для вычисления ξi , ηi имеют вид

ξ1 = –r1 / q1 ;

η1 = d1 / q1;

 

ξi = −ri /(qi + piξi1);

ηi = (di piηi1) /(qi + piξi1);

(2.8)

i = 2 ... n.

 

 

Когда такое преобразование (прямой ход) сделано, формулы обратного хода метода Гаусса получают в виде

xn1 = (dn1 pn1ηn ) /(qn1 + pn1ξn );

 

xi = ξi xi+1 + ηi ;

(2.9)

i = n, n 1, ..., 1.

 

Расчетные формулы (2.8), (2.9) получили название «метод прогонки». Достаточным условием того, что в формулах метода прогонки не произойдет деления на ноль и расчет будет устойчив относительно погрешностей округления, является выполнение неравенства qi pi + ri (хотя бы для одного i должно быть

строгое неравенство).

Схема алгоритма метода прогонки представлена на рис. 2.3.

Рис. 2.3

17

Метод квадратного корня (MQ)

Метод предназначен для решения СЛАУ с симметричной матрицей. Этот метод основан на представлении такой матрицы в виде произведения трех матриц:

A = ST D S, где D – диагональная с элементами di=±1;

S – верхняя треуголь-

ная ( s

= 0, если i>k, причем s

> 0 ); ST транспонированная нижняя тре-

i,k

i,i

 

 

угольная. Матрицу S можно по аналогии с числами трактовать как корень квад-

ратный из матрицы A, отсюда и название метода.

A xr = ST D S xr = b

Если S и D известны, то решение исходной системы

сводится к последовательному решению трех систем – двух треугольных и одной диагональной:

Здесь zr = D S xr, yr = S xr.

ST zr = b; Dyr = zr; Sxr = yr .

(2.10)

 

 

Решение систем (2.10) ввиду треугольности матрицы S осуществляется по

формулам, аналогичным обратному ходу метода Гаусса:

 

 

i1

 

y1 = b1 / s1,1d1;

yi = (bi dk yk sk ,i ) / si,idi ; i = 2,

3 ,..., n;

 

k =1

 

 

n

 

xn = yn / sn,n ;

xi = ( yi si,k xk ) / si,i ; i = n 1,

n 2, ..., 1.

k =i+1

Нахождение элементов матрицы S (извлечение корня из А) осуществляется по рекуррентным формулам:

 

 

 

 

 

 

k 1

 

 

 

 

 

2 ) ;

 

 

 

dk =sign(ak ,k di

 

si,k

 

 

 

 

 

 

 

 

 

 

 

 

i=1

 

 

 

 

 

 

 

 

 

 

 

 

 

k 1

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

sk ,k =

ak ,k di

si,k

;

 

 

(2.11)

 

 

 

 

 

 

i=1

 

 

 

 

 

 

 

 

k =1, 2,

..., n;

 

 

 

 

 

 

 

 

 

 

 

 

 

k 1

 

 

 

 

 

 

 

 

 

sk , j = (ak , j di si,k si, j ) /(sk ,k dk );

 

 

 

 

 

 

 

i=1

 

 

 

 

 

 

 

 

 

 

 

j = k +1, k + 2, ...,

n.

 

 

 

В этих формулах

сначала

полагаем k=1

 

и последовательно

вычисляем

d1 = sign(a11); s11 =

 

a11

 

и все элементы первой строки матрицы

S(s1 j , j >1) ,

 

 

затем полагаем k=2, вычисляем s22 и вторую строку s1 j для j>2 и т.д.

Метод квадратного корня почти вдвое эффективнее метода Гаусса, т.к. полезно использует симметричность матрицы.

Схема алгоритма метода квадратного корня представлена на рис. 2.4. Функция sign(x) возвращает –1 для всех x<0 и +1 для всех x>0.

18

Рис. 2.4

19

Проиллюстрируем метод квадратного корня, решая систему трех уравнений:

x1+x1 +x1 +

x2 + x3 = 3

 

1 1 1

 

r

 

3

 

2x2 + 2x3 = 5

A =

 

 

=

 

 

(2.12)

1 2 2

b

5 .

2x2 +3x3 = 6

 

 

 

 

 

 

 

 

 

1 2 3

 

 

 

6

 

Нетрудно проверить, что матрица A есть произведение двух треугольных матриц (здесь di =1):

 

 

 

 

1 1 1 1 0 0 1 1 1

 

 

 

 

 

A =

1 2 2

=

1 1 0

× 0 1 1

 

= ST

S .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 2 3 1 1 1 0 0 1

 

 

 

 

Исходную систему запишем в виде

 

 

 

 

 

x

 

 

 

 

 

 

 

 

1 0 0 1 1 1

 

 

3

 

S

T

 

r

 

 

 

 

 

 

 

 

 

 

1

 

=

 

 

 

S x

= 1 1 0

 

 

× 0 1 1

×

x2

5 .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Обозначим

 

 

 

1 1 1

0 0 1

x3

 

6

 

 

 

 

 

1 1 1

x

y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

1

 

 

1

 

 

 

 

 

 

S x =

0 1 1 × x2

 

= y2 .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0 0 1

x3

y3

 

 

Тогда для вектора y получим систему ST yr = b :

 

 

 

 

 

 

 

 

 

 

y

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

1 0 0

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

=

 

 

y1 = 3, y2 = 2, y3 =1.

 

1 1 0

×

y2

 

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Зная yr

1 1 1

 

y3

 

 

6

 

 

 

 

 

 

 

 

 

 

, решаем систему Sxr

= yr

:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 1 1

x1

 

 

3

 

 

 

 

 

 

 

 

 

 

 

0 1 1 ×

x

 

=

2

x =1 , x

=1,

x =1.

 

 

 

 

 

2

 

 

 

 

 

 

3

 

 

2

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0 0 1

x3

 

 

1

 

 

 

 

 

 

 

 

 

 

 

2.3. Итерационные методы решения СЛАУ

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

В соответствии с общей идеей итерационных методов (см. подразд. 1.5) ис-

ходная система (2.1) должна быть приведена к виду, разрешенному относи-

тельно xr:

xr = Gxr + cr =ϕ(xr) ,

(2.13)

где G – матрица; cr

– столбец свободных членов.

 

При этом решение (2.13) должно совпадать с решением (2.1). Затем строится рекуррентная последовательность первого порядка в виде

20