Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги / Статистика и анализ геологических данных

..pdf
Скачиваний:
2
Добавлен:
12.11.2023
Размер:
21.12 Mб
Скачать

Нахождение

Нахоэюдение

элемента С„

элемента С32

В итоге результат умножения будет иметь следующий вид:

 

 

Г1

2

3

 

 

3

4

5

 

 

6

7.

4

 

1.5

71

Г48

60

72

5

8

57

72

87

6

84

10 2

9J

66

Если порядок перемножаемых матриц изменить на обратный [В]. [А ]= [С], то получим другой результат:

 

 

 

"1

4

Г

 

 

 

2

5

8

 

 

 

_3

6

9.

Ч

2

3'

г14

32

50

3

4

5

26

62

98

.5

6

7_

38

92

146

Если перемножаются две квадратные матрицы, то их произ­ ведение также будет квадратной матрицей того же порядка. Од­ нако если перемножить матрицы порядков m xn и п хг, то в ре­ зультате получим матрицу порядка гпХг, т. е. произведение мат­ риц имеет число строк, равное числу строк первой матрицы, и число столбцов, равное числу столбцов второй матрицы. На­ пример, умножая матрицу порядка 5X3 на матрицу порядка 3X2, получим матрицу порядка 5X2:

"1

2

4"

 

7

10“

2

1

2

‘ 3

4"

8

11

3

1

1

2

1 =

11

14

2

3

1

0

1 _

12

12

_ 1

2

0 .

 

_

7

6_

Необходимо отметить, что матрицу порядка 3 x 2 нельзя ум­ ножать на матрицу порядка 5X3, так как число столбцов пер­ вой матрицы (два) не равно числу строк второй матрицы (пять).

В результате умножения матрицы порядка ш Хп на матрицу порядка пХш получается квадратная матрица, причем порядок перемножаемых матриц определяет порядок результирующей

матрицы:

2

31

 

CO

6

r 46

28'

П

 

 

 

 

 

1

 

 

 

 

 

6 J

'

00

5

=

 

.4

5

7

4

-118

73

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

"9

1

2

3"

'33

48

63'

8

28

41

54

4

5

6

7

23

34

45

 

 

 

 

Общая формула элемента

матрицы

[С], являющейся произ­

ведением двух матриц, имеет следующий вид:

 

 

 

C jj=

2

 

AIkBkj.

 

(4.1)

 

 

k =

I

 

 

 

Для перемножения матриц

 

[А] и [В] можно составить под­

программу и включить ее в библиотеку программ. Если матрица

[А] имеет L строк и N столбцов, то матрица

[В] должна иметь

N строк и М столбцов. Тогда их произведение

[С] будет иметь L

строк и М столбцов.

 

Программа 4.7 (т. е. подпрограмма MMULT) служит для выполнения этой операции. Используйте ее совместно с другими приведенными выше подпрограммами, чтобы возвести в квадрат

С

PROGRAM 4 - 7

 

 

 

 

 

 

 

 

С

 

 

 

 

 

 

 

 

 

 

 

 

С

S U B R O U T IN E FOR

M U L T I P L I C A T I O N

OF

M A T R IX

A B Y M A T R IX

В

C

T O

G I V E

M A T R IX

C .

A I S L

ROWS

B Y

N

C O L U M N S .

 

С

В

I S

N

ROWS B Y

M

C O L U M N S ,

AND

C W I L L

BE

L ROWS B Y M

C O L U M N S .

C

S U B R O U T IN E M M U L T ( A , B , C , L , N , M , N A , M A , N B , M B , N C , M C )

 

 

 

 

DIMENSION A( NA, MA) , В( NB, MB) , C( NC, MC)

 

 

 

DO

1 0 0

1 = 1 , L

 

 

 

 

 

 

 

 

 

DO

10 1

J = 1 , M

 

 

 

 

 

 

 

 

 

C ( I , J ) = 0 . 0

 

 

 

 

 

 

 

 

 

DO

1 0 2

K = 1 , N

 

 

 

 

 

 

 

 

 

C ( I , J ) * C ( I , J ) + A ( I , K ) * B ( K , J )

 

 

 

 

 

1 0 2 C O N T I N U E 101 C O N T IN U 1 0 0 C O N T I N U E

R ETU R N END

Программа 4.7. Подпрограмма MMULT

матрицу [Р] переходных вероятностей. Найдите [Р]4, [Р]1® и [Р]25е в ы убедитесь в том, что совсем необязательно выполнять 256 операций для получения окончательного результата!

Отметим, что при последовательном перемножении матриц действует ассоциативный закон, т. е. порядок выполнения опе­ раций несуществен. Так,

{А] [В] [С] = ([А] [В]) [C] = [AJ • ([В] [С]).

Наконец, отметим свойство единичной матрицы: если мат­ рица умножается на единичную матрицу, то результат в точно­ сти равен исходной матрице:

'1

4

Т

2

5

8

СО

CD

О

 

О

О

 

1

 

 

0 = 2

5

_

0

1

8

О

О

_3

6

9

 

 

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

Обращение матриц

исистемы уравнений

Вданном разделе мы определим операцию над матрицами, обратную операции умножения, зная при этом, что прямое де­ ление одной матрицы на другую невыполнимо. Однако, исполь­ зуя правила матричного умножения, можно ввести соответст­ вующее понятие, для чего необходимо решить матричное урав­ нение [А] • [X] = [В] относительно неизвестной матрицы [X]. Необходимо подчеркнуть, что это одна из наиболее важных операций матричной алгебры, которая будет неоднократно ис­ пользоваться в дальнейшем, в частности для решения систем уравнений в дискриминантном и тренд-анализах.

Приведенное выше уравнение решается с помощью нахож­ дения матрицы [А]-1, обратной матрице [А], которая удовлет­

воряет

соотношению

[А] •[А]-1

= [I]. Так как умножение мат­

рицы

на единичную

матрицу

[I]

ее не изменяет, мы можем

умножить обе части уравнения на

[А]-1, в результате чего мат­

рица [А] в левой части уравнения исчезнет. В то же время мы находим выражение неизвестной матрицы [X] через матрицы

[В] и

[А]-1. Итак, умножим

обе

части

уравнения на матрицу

[А]"1:

]- 1 • ]А] • ]Х] =

]- 1

[В].

 

Так как

 

 

 

 

]- 1

[А] = [1]

 

и [I] • [X] = [X], получим

 

[XJ = [А]- 1 [BJ.

(4.2)

Таким образом, задача, обратная умножению матриц, сво­ дится к нахождению матрицы [X], определенной вышеуказан­ ным соотношением. В некоторых случаях обратную матрицу найти нельзя, так как в процессе обращения иногда приходится выполнять деление на нуль. Необратимая матрица называется вырожденной, но такие матрицы в этой главе мы рассматри­ вать не будем.

Процедуру обращения матриц можно проиллюстрировать, решая систему уравнений в матричной форме. Значения неизве­ стных в этом случае Xi = 2 и Х2 = 3. Попытаемся найти их, ис­ пользуя умножение и обращение матриц:

1+ 10Х2= 38, 10XI + 3 0 X 2=110.

Эту систему уравнений можно записать в матричной форме

[А][Х] = [В],

где

[А] — матрица коэффициентов, [X] — вектор-столбец неиз­

вестных,

[В] — вектор-столбец правых

частей

уравнений.

В нашем частном случае

 

 

 

 

 

 

38'

 

 

 

 

1 1 0

 

Чтобы решить это уравнение, необходимо обратить матрицу

[А],

тогда произведение матриц [А]- 1

и

[В]

даст нам вектор

решения

[X].

 

 

 

Возможно, читателю не понятно, почему систему уравнений можно представить в указанной матричной форме. Чтобы убе­ диться в этом, порекомендуем перемножить матрицу [А] и век­ тор-столбец [X]. В результате должен получиться вектор-стол­ бец левых частей уравнений:

' 4 10 10 30

Выполнив это умножение, вы убедитесь, что система запи­ сана правильно. Действительно, по правилам умножения мат­ риц получаем

Затем, умножая нижнюю строку, получаем

.ЮХт + ЗОХг.

Теперь решим систему уравнений с помощью обращения мат­ рицы [А]. Поместим матрицу [А] слева от единичной матрицы и выполним все необходимые операции одновременно на них обеих. Цель этих операций — свести диагональные элементы матрицы [А] к единицам, а все остальные — к нулям. Это выпол­ няется с помощью деления строк матрицы [А] на константы и их сложения или вычитания. Последовательность операций сле­ дующая:

1.

Г

4

10

 

1

Г

1

°1

Матрицу [А] помещаем рядом с еди­

 

J

ничной матрицей [1]

2.

h o

30

 

[

о

l j

 

 

г

1

2

.5 ]

 

Г

0,25

°1

Первую строку делим на 4, получаем

 

30

J

L

0

при этом 1 на месте Ап

3.

[ ю

l j

Вычитаем

из второй строки удесяте­

Г

1

2

,5 ]

 

Г

0,25

°1

 

 

 

 

[ - 2 , 5

ренную первую, получаем 0 на месте

 

L о

5

J

l j

А21

 

4. Г

1

2

,5 ]

Г

0,25

0 '

Делим вторую строку на 5, получаем

 

1

0

1

j

 

[ - 0 , 5

0,2.

1 на месте A22

5.

 

Умножаем

вторую строку на 2,5 и

Г

1

°

 

 

Г

1.5

- 0 , 5

1

вычитаем

ее из первой, получаем О

 

L —0 ,5

0 ,2

 

[

0

1

J

на месте А!2

Мы получили обратную матрицу. Для проверки правильно­ сти обращения достаточно умножить исходную матрицу [А] на полученную матрицу [А]-1, и в результате должна получиться единичная матрица

1,5

—0,5'

’ 4

101

П

°1

- 0 ,5

0,2.

.10

30j =

|_0

l j '

Так как [А] - 1 X [А] = [I],

то

выполняются следующие ра­

венства:

[А Г 1 X [А] X IX ] = [А Г 1 X [В], [I]X {X 1 = [AJ- 1 X [B I, [Х] = [А Г 1 Х [В ].

Умножив матрицу [А]- 1 на матрицу [В], найдем неизвест­ ную матрицу [X]:

[А-Ч X [BI = [X],

Г 1,5

- 0 ,5 ]

Г 3 8 ] _ Г 2 ]

[ —0,5

0 ,2 J

L l l o J - U J -

Вектор-столбец

[X] содержит искомые неизвестные Xi =

2,

Хг = 3. Вспоминая,

что именно эти значения удовлетворяли

ис­

ходным уравнениям, мы убеждаемся в том, что нашли Xi и Хг правильно.

Рассмотрим еще один пример решения системы уравнений с помощью обращения матрицы. Запишем приведенные ниже уравнения в матричной форме и найдем Xi и Хг, обращая мат­ рицу системы:

2 X j +

Х 2 =

4,

3 X I + 4 X 2=

1 .

Кратко запишем операции,

выполняемые при обращении

матрицы:

Следовательно, значения неизвестных будут Xi = 3 и Хг = = —2 .

Заметим, что описанная процедура очень напоминает клас­ сический алгебраический метод решения системы двух уравне­ ний. В самом деле, решение системы уравнений — наиболее важное применение процедуры обращения матриц. В данном случае преимущество матричных методов по сравнению с мето­ дами обычной алгебры заключается в том, что они более си­ стематизированы и лучше поддаются программированию. Боль­ шинство процедур, описанных в следующих главах, приводит к решению систем уравнений. Эти системы обычно записыва­ ются в матричном виде и решаются описанным выше методом. Операция обращения матриц может быть применена к квадрат­ ным матрицам любого порядка, а не только к матрицам порядка 2 x 2 , рассмотренным в примерах. Убедитесь в этом, обратив приведенную ниже матрицу порядка 3X3:

' 1

2

3'

2

6

5 -

.3

5

6_

Программа 4.8 (M INV)— наиболее простая подпрограмма

обращения матрицы, которая выполняет те же операции, какие приходится выполнять при обращении матриц вручную. Эта про­ грамма сначала строит единичную матрицу того же порядка, что и матрица [А]. В первом действии осуществляется деление первых строк матриц [А] и [I] на Ац, в результате чего Ац сводится к 1 . Затем элемент Ац принимается ведущим элемен­ том и используется для приведения к нулю всех элементов

С

PROGRAM

4 - 8

 

 

 

 

 

 

 

С

 

 

 

 

 

 

 

 

 

 

 

С

S U B R O U T IN E T O F I N D IN V E R S E O F M A T R IX A .

В I S T H E IN V E R S E

C

O F

A .

A

I S

REDUCED T O T H E

I D E N T I T Y M A T R I X .

C

A AND В A R E

N X

N'.

D E T

I S

T H E

D E T E R M IN A N T O F A,

C

S U B R O U T IN E M I N V ( A , B , N , N I , D E T )

 

 

 

 

 

C

D I M E N S I O N A ( N 1 , N I ) , B ( N 1 , N 1 )

 

 

 

 

 

 

 

 

 

 

 

 

 

С

#8ET В

TO

I D E N T I T Y

M A T R IX

AND

SAVE T H E

O R I G I N A L A M A T R IX

C

DO

1 0 0

1 * 1 ,N

 

 

 

 

 

 

 

 

 

 

 

 

 

 

DO

101

J * 1 , N

 

 

 

 

 

 

 

B ( I t J ) * 0

. 0

 

 

 

 

 

 

 

10 1 C O N T IN U E

 

 

 

 

 

 

 

 

I 0 0

B C I , I > = l

. 0

 

 

 

 

 

 

 

C O N T IN U E

 

 

 

 

 

 

 

 

c

D E T * I . 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C

C A L C U L A T E I N V E R S E

 

 

 

 

 

C

DO

1 0 2

1 * 1 , N

 

 

 

 

 

 

 

 

 

 

 

 

 

C

D I V I D E

I T H

ROW

O F

A AND

В

BY

A ( I , I )

 

 

D I V * A

( I ,

I )

 

 

 

 

 

 

 

 

D E T = D E T * D I V

 

 

 

 

 

 

 

 

DO*

1 0 3

J = 1 , N

 

 

 

 

 

 

 

A ( I f J ) = A ( I , J ) / D I V

 

 

 

 

 

 

B ( I , J ) = B ( I , J ) / D I V

 

 

 

 

 

1 0 3 C O N T IN U E

 

I T H

COLUMN O F A

TO

ZERO

 

C

REDUCE

T H E

 

 

DO

1 0 4

J = 1 , N

 

 

 

 

 

 

 

I F

( I - J )

1 , 1 0 4 , 1

 

 

 

 

 

1 R A T I O = A ( J , I )

 

 

 

 

 

 

 

DO

1 0 5

K = I , N

 

 

 

 

 

 

A( J , K ) = A ( J , K ) - R A T I O * A ( I , K )

B( J , K ) = B ( J , K ) - R A T I O * B ( I , K )

1 0 5 C O N T IN U E 1 0 4 C O N T IN U E 1 0 2 C O N T IN U E

R ETURN END

Программа 4.8. Подпрограмма MINV

первого столбца. В нашей упрощенной программе ведущими бу­ дут диагональные элементы. После этого ведущая строка (т. е. строка, содержащая ведущий элемент) умножается на элемент

A 2 I и

вычитается из следующей строки. Элемент, использован­

ный

в качестве множителя, становится нулем, так как A2I

— (А21 • Ац) = 0, а Ац =

1. Аналогичные операции выполняются

и на

единичной матрице

[I]. Затем такая же операция проде­

лывается со второй строкой, что дает нуль на месте Аз1, и т. д. для всех строк матрицы.

После приведения всех элементов первого столбца, за ис­ ключением Ан, к нулю ведущим становится элемент А22. Все стоящие под ним элементы второго столбца тем же способом, что и элементы первого столбца, приводятся к нулю. Процедура повторяется для каждого столбца,'вплоть до последнего. По­ следний элемент делится на себя, и на его место записывается

единица.

Таким образом,

мы привели

исходную матрицу

к форме,

в которой все

диагональные

элементы — единицы,

а все элементы, стоящие под диагональю,— нули. Половина дреобразований единичной матрицы в матрицу, обратную матрице [А], уже выполнена.

Элементы, стоящие выше диагонали, можно свести к нулю, выполняя операции в обратном порядке. Нижний диагональный элемент умножается на стоящий над ним элемент, и результат вычитается из вышестоящего элемента, в результате чего на его месте получается нуль. Нижнюю строку матрицы [I] также ум­ ножаем на то же число и вычитаем из вышестоящей строки. Эту операцию повторяем, превращая в нуль все элементы стол­ бца, содержащего ведущий элемент. Затем то же самое проде­ лываем для следующего диагонального элемента и так далее, вверх по диагонали. Когда процесс доходит до элемента А22, преобразование матрицы [А] в единичную матрицу и единичной матрицы [I] в матрицу, обратную матрице [А], уже завершено.

Следует заметить, что такая простая программа не позво­ ляет обращать некоторые матрицы; на этом мы остановимся ниже. Отметим, что мы намеренно изложили операцию обра­ щения матрицы в упрощенном виде, чтобы она была как можно более понятной. Однако не всегда самый простой подход наи­ более эффективен. В некоторых случаях не обязательно обра­ щать матрицу, если требуется только решить систему уравне­ ний. В рассмотренном примере мы искали значения элементов матрицы [X], удовлетворяющей уравнению

" 4

101

ГХ Л _Г 381

,10

3oJ

LX 2J= LI IOJ •

С этой целью мы обратили матрицу [А] и нашли матрицу [X], умножив [А]-1 на [В]. Вместо этого мы могли бы прямо использовать матрицу [В], по мере того как матрица [А] пре­ образовывалась бы в единичную матрицу. С этой целью удобно использовать так называемую расширенную матрицу, состоя­ щую из п строк и п +1 столбцов. Вектор-столбец [В] занимает n + 1 -й столбец расширенной матрицы, остальная часть ее —

матрица порядка пХп — обращается. Используя этот способ, решим ту же задачу:

1.

Г 4,0

10,0

38 ,0 Л

Из матриц [А] и [В] составляем

 

[ ю , о

30,0

1 1 0 ,0 J

матрицу порядка п Х (п + 1 )

2.

г

1,0

2,5

9,51

Первую строку делим на 4, вторую —

 

L

i . o

3,0

11,0 J

на 10

3.

Г

1 .0

2,5

9,5-1

Первую строку вычитаем из второй

4.

L

0 . 0

0,5

1,5 J

 

Г

1 .0

0 ,0

2,0-1

Упятеренную вторую строку вычи­

5.

L

о . о

0,5

1 ,5 J

таем из первой

г

1,0

0 ,0

2 , 0 ]

Вторую строку делим на 0,5

 

L

о .о

1,0

3 ,0 J

 

Таким образом, в результате n + 1 -й столбец полученной мат­ рицы содержит решение системы уравнений, а наша исходная матрица заменена единичной.

с PROGRAM 4-9

с

сSUBROUTINE FOR SOLUTION OF N SIMULTANEOUS EQUATIONS.

сMATRIX A IS N X N AND В IS A COLUMN VECTOR OF N ELEMENTS.

сA IS CONVERTED TO THE IDENTITY MATRIX.

с В CONTAINS SOLUTION.

с

S U B R O U T IN E S L E < A , B , N , N 1 . Z E R O ) D I M E N S I O N A ( N 1 ,N 1 ) * B ( N 1 )

DO 1 0 0 I - I , N D I V SA ( I . I )

I F ( A B S ( D I V ) - Z E R O ) 9 9 , 9 9 , 1 1 DO 10 1 J « 1 , N

A ( I , J ) * A ( I , J ) / D I . V 1 0 1 C O N T IN U E

B ( I ) = В ( I ) / D I V

DO

1 0 2

J » 1 , N

I F

( I - J ) 2 , 1 0 2 , 2

2 R A T I O « A ( J , I )

DO

1 0 3

K = 1 , N

A ( J , K ) * A ( J . K ) - R A T l O * A ( I , K )

1 0 3 C O N T IN U E

B ( J ) = B ( J ) - R A T I Q * B ( I ) 1 0 2 C O N T IN U E

1 0 0

C O N T IN U E

 

R ETURN

9 9

C A L L

E X I T

 

END

 

 

 

Программа 4.9. Подпрограмма SLE

Программа

4.9 (S L E )— простая подпрограмма, предназна­

ченная для решения системы уравнений. Заметим, что она очень

11 Заказ № 455

близка к программе 4.8, но содержит одно важное дополнение. Если в процессе обращения матрицы ведущий элемент стано­ вится нулем, то его, конечно, нельзя использовать обычным об­ разом для приведения ведущего столбца к нулю. В большинстве матричных преобразований на вычислительных машинах точный нуль практически не появляется в силу накопления ошибок ок­ ругления в предыдущих операциях. Обычно в ЭВМ роль нуля играет величина порядка 1 • 10-6. Если программа использует это число для устранения элемента, то в других столбцах могут возникнуть большие ошибки. Чтобы избежать этого, в про­ грамму вводится величина, называемая ZERO. Прежде нем производить операции, каждый ведущий элемент проверяется на равенство его нулю. Если элемент меньше или равен нулю, выполнение программы прекращается. Если элементы исходной матрицы близки к 1 , то ведущие элементы, меньшие 1 10-5, ве­ роятно, уже можно считать нулевыми.

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

использовать

для приведения к нулю остальных

элементов

ведущего столбца, что не приведет к указанным

выше за­

труднениям

и может значительно снизить ошибки округ­

ления.

 

 

Обращение матриц используется во многих математических процедурах. Созданы десятки методов решения систем урав­ нений, существуют сотни программ, реализующих эти методы. В некоторых областях исследования зачастую приходится опе­ рировать с так называемыми разреженными матрицами (т. е. матрицами, содержащими много нулей), а также с матрицами, обладающими различного рода симметрией. Подробное изло­ жение различных методов решения систем уравнений содер­ жится в гл. 4, 5 и 8 монографии Уэстлэйка [9]. Большинство вычислительных центров имеет в своих библиотеках много под­ программ, реализующих всевозможные алгоритмы матричных преобразований, возможно, даже подпрограмму OMNITAB, при­ веденную в приложении. Прежде чем создавать эффективные программы матричных преобразований для матриц высоких по­ рядков, необходимо проанализировать уже реализованные про­ граммы и выявить их достоинства и недостатки.