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

Литература / Козин Р.Г. Алгоритмы численных методов линейной алгебры и их программная реализация

.pdf
Скачиваний:
4
Добавлен:
07.09.2025
Размер:
4.33 Mб
Скачать

Таблица 3.2

n n

Косвенная оценка погрешности методов ( Aii ( A)i )

i 1 i 1

для случайных матриц, компонентами которых являлись псевдослучайные равномерно распределенные числа из интервала [–0,5; 0,5]

Размерность матрицы

3

5

7

10

15

Метод Данилевского

0

0

0

0

0

Метод Крылова

0

<=0.000001

<0,0000014

<0,000006

<0,000007

3.6. Определение собственных векторов в общем случае

Способ 1. Собственный вектор для известного собственного значения должен удовлетворять системе уравнений

(A11 )x1 A12 x2

... A1n xn 0;

 

A21x1

(A22 )x2

... A2n xn 0;

(3.37)

...;

 

 

 

 

 

An1x1

An2 x2 ... (Ann )xn 0.

 

Определитель этой системы равен нулю, т.е. уравнения линейно зависимы. Поэтому собственный вектор x можно найти следующим образом.

1. Поскольку собственный вектор x задается с точностью до множителя, то положим одну из компонент вектора x равной еди-

нице, например x1 1 .

2.Отбросим одно из уравнений, так чтобы оставшиеся уравнения были линейно независимыми, например последнее.

3.Далее решаем получившуюся неоднородную систему уравнений любым известным методом:

A12 x2 ...

A1n xn (A11 );

 

(A22 )x2

... A2n xn A21

;

(3.38)

...;

 

 

 

 

 

An 12 x2 ... (An 1n )xn An 11

и находим оставшиеся компоненты собственного вектора.

Если решение системы невозможно, то следует сменить номер фиксируемого компонента или отбросить другое уравнение в ис-

181

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

Способ 2. Поскольку, как правило, собственные значения i (например, из-за ошибок округления) определяются с погрешностью, то определитель матрицы (A i E) всегда будет отличен

от нуля. С учетом этого обстоятельства для нахождения соответствующего собственного вектора предложен метод обратной ите-

рации: берется произвольный вектор

x(0)

x(0)

и выполняется

x(0)

 

 

 

 

 

итерационный процесс:

 

 

 

 

 

 

 

 

 

x

(k )

 

 

(k )

 

(k 1)

 

(k )

 

 

для k 1, K,

(A i E)x

 

x

 

, x

 

 

 

 

 

 

 

x(k )

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

Для его сходимости обычно бывает достаточно 2–3 итераций. Сходимость метода обосновывается следующим образом. Пусть

матрица A имеет полную линейно независимую систему собствен-

ных векторов

x(s) . Тогда векторы

 

x(k ) , x(k 1)

можно представить в

виде разложений

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x(k ) as(k ) x(s) ,

x(k 1) as(k 1) x( s) .

 

 

 

 

 

 

s

 

 

 

 

 

 

 

s

 

 

 

 

 

Подставив эти разложения в систему, получим

 

 

 

 

 

(k )

x

(k 1)

 

 

 

(k )

 

 

( k 1)

]x

(s)

0

. (3.39)

(A i E)x

 

 

 

[as

 

( s i )

as

 

 

 

 

 

 

 

 

s

 

 

 

 

 

 

 

 

 

Отсюда, поскольку вектора

x(s)

линейно независимые,

следуют

соотношения

 

 

 

 

 

 

a(k 1)

 

 

 

 

 

 

 

 

 

 

 

as(k )

 

,

s 1, n .

 

 

 

 

 

 

 

 

s

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

( s i )

 

 

 

 

 

 

 

 

 

 

(k )

 

 

(k )

, s i .

 

 

 

 

 

 

Но так как i

i , то ai

 

as

 

 

 

 

 

 

182

3.7. Метод вращения

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

 

D T 1 AT ,

(3.40)

где

T – ортогональная матрица, удовлетворяющая

условию

T 1

TT .

 

Если такая матрица T найдена, то диагональные компоненты матрицы D совпадают с собственными значениями матрицы A, а столбцы матрицы T – с ее соответствующими собственными векто-

рами. Действительно, пусть k

Dkk . Тогда, очевидно,

 

 

 

De(k ) k e(k ) ,

e(k ) ei(k ) ik , i 1, n .

 

Отсюда следует, что

 

 

 

 

 

 

T 1 ATe(k ) k e(k )

 

ATe(k ) kTe(k ) ,

(3.41)

т.е.

k

– собственное значение матрицы A, а Te(k ) T

, i 1, n

 

 

 

 

ik

 

соответствующий ему собственный вектор.

В методе вращения матрица T находится с помощью серии подобных ортогональных преобразований, которые последовательно уменьшают сумму квадратов недиагональных элементов исходной матрицы A. Указанные преобразования выполняются с использованием матриц вращения (отличается от единичной матрицы только

четырьмя компонентами Tll , Tkk , Tlk , Tkl )

 

 

l

 

 

 

k

 

 

 

 

 

1

0

0

 

0

0

0

0

 

 

 

0

cos

0

 

0

sin

0

0

 

... l

 

 

 

0

0

1

 

0

0

0

0

 

 

 

 

 

T (l, k, )

 

 

 

 

 

 

 

 

.

0

0

0

 

1

0

0

0

 

 

 

 

0

sin

0

 

0

cos

0

0

 

... k

 

 

 

0

0

0

 

0

0

1

0

 

 

 

0

0

0

 

0

0

0

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(3.42)

183

Рис. 3.11. Изменение проекций произвольного вектора x при повороте системы координат на угол

Матрица T (l, k, ) называется матрицей вращения, поскольку с помощью такой матрицы осуществляется пересчет проекций про-

извольного вектора при повороте системы координат на угол

(рис. 3.11):

x1 xcos y sin ; y1 xsin y cos .

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

cos

sin cos

sin

1

0

 

T T T

sin

 

 

 

1

.

 

cos sin

cos

0

 

Распишем формулы, по которым текущие матрицы A и T (T первоначально задается в виде единичной матрицы) пересчитываются в процессе одного преобразования.

184

1. Первая фаза преобразования

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A AT (l, k, )

 

 

 

 

 

 

A

 

 

 

A

1

 

 

 

0

 

 

 

 

11

Ail

 

Aik

1n

 

 

cos

 

sin

 

 

l

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

0

 

 

 

 

 

k

 

 

 

 

 

 

 

 

 

sin

 

cos

 

 

 

A

 

 

 

A

 

0

 

 

 

1

 

 

 

 

n1

 

 

 

nn

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

l

k

 

 

ианалогично T T T (l, k, ) меняет компоненты текущих матриц A

иT только в l-м и k-м столбцах (i 1, n )

 

 

 

 

Ail

cos Aik sin ;

 

 

 

Ail

 

 

 

 

Ail sin Aik cos ;

 

 

 

Aik

 

 

 

T

T cos T

sin ;

 

 

 

il

il

 

 

ik

 

 

 

 

 

 

T

T sin T

 

cos .

 

 

 

ik

 

il

 

ik

 

 

 

2. Вторая фаза преобразования

 

 

 

 

 

 

 

 

 

T

 

 

 

 

 

 

 

 

A T

 

(l, k, )A

 

1

 

 

 

 

 

0

 

 

 

 

 

 

A

 

 

cos

 

sin

 

 

 

 

11

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

sin

 

cos

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

1

 

 

 

 

 

 

 

An1

 

 

 

 

 

l

 

k

 

 

 

(3.43)

(3.44)

 

 

 

 

 

 

A

 

 

 

 

 

1n

... l

Alj

 

 

 

 

 

 

 

 

 

 

 

 

... k

Akj

 

 

 

 

 

 

 

Ann

 

меняет компоненты текущей матрицы A только в l-й и k-й строках

( j 1, n )

 

 

 

sin ;

 

Alj Alj cos Akj

(3.45)

 

 

 

 

 

 

Akj Alj sin Akj cos .

 

185

С помощью формул (3.43) и (3.45) легко получить следующие соотношения.

1. Для i l, k

2

2

2

cos

2

2

2

2Ail Aik sin cos

 

Ail

Aik

Ail

 

Aik sin

 

(3.46)

A2 sin2

A2

cos2 A 2A A sin cos A2

A2

 

 

il

 

ik

 

 

 

il ik

il

ik

 

и аналогично для j l, k

 

2

 

2

2

2

 

(3.47)

 

Alj

Akj Alj

Akj .

 

2.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Alk Alk

cos Akk sin

 

 

A sin cos A cos2 A sin2 A

sin cos

 

ll

lk

 

 

kl

kk

 

(3.48)

A (cos2

sin2

) (A

A )sin cos

lk

 

 

 

kk

ll

 

 

Alk cos 2 12 (All Akk )sin 2 .

Сучетом формул (3.47) и (3.48) сумму квадратов недиагональных элементов матрицы после текущего подобного преобразования

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

2

2

2

1

[2Alk cos 2 (All Akk )sin 2 ]

2

Aij

Aij

2Alk

2

. (3.49)

i j

i j

 

 

 

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

1) выбор параметров l и k

Alk max

 

Aij

 

;

(3.50)

i j

 

 

 

 

 

 

 

 

2) выбор параметра

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2Alk

 

 

 

 

 

1 arctg

.

 

 

 

 

 

 

 

 

 

 

 

2

 

All

Akk

 

Если A A , то

 

 

 

 

и sin

2

sign( A

), cos

 

 

 

 

 

ll kk

 

 

 

 

4

 

 

2

 

lk

 

 

 

 

 

 

 

 

 

 

 

(3.51)

22 .

Замечание. Для расчета sin , cos можно (но не обязательно) использовать формулы, нетребующие вычисления угла :

186

 

 

 

 

 

1

 

 

1

 

 

 

 

 

 

2

 

 

 

 

sin sign( p)

 

 

 

 

 

 

 

 

, cos

(1 sin

 

)

 

 

 

2

1

(1

p

2

 

 

 

 

 

 

 

 

 

 

 

)

 

 

 

 

где

p

2Alk

 

.

 

 

 

 

 

 

 

 

 

 

 

 

(A A )

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ll

kk

 

 

 

 

 

 

 

 

 

 

 

 

Алгоритм метода вращения схематично можно представить в виде (его программная реализация для пакета Maxima приведена в листинге, рис. 1.2)

for it 1, Iter

{

находим Alk

if Alk eps then "выходиз цикла" вычисление sin , cos

for i 1, n

{

вычисляем по формулам (3.43), (3.44)

}

for j 1, n

{

вычисляем по формулам (3.45)

}

}

Здесь Iter – максимальное число итераций – преобразований, eps – допустимое значение максимального по модулю недиаго-

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

Поиск максимального по модулю недиагонального элемента можно выполнить следующим образом:

187

max 1, l 0, k 0 for i 1,(n 1)

{

for j i 1, n

{

buf Aij

if buf max then {max buf , l i, k j}

}

}

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

 

 

 

2

 

2

 

 

2

 

 

 

 

 

 

Aij

Aij 2Alk

 

 

 

 

 

 

i j

i j

 

 

 

 

 

 

имеем (так как Aij2

 

 

 

 

 

 

 

Aij2

 

 

n(n 1)Alk2 Alk2

 

i j

 

)

 

n(n 1)

 

i j

 

 

 

 

 

 

 

 

 

 

2

 

2

 

2

 

 

 

2

 

Aij

Aij

1

 

 

q Aij

 

 

 

 

i j

 

 

i j

 

n(n 1)

i j

 

 

и, следовательно, после m-й итерации

 

 

 

 

 

 

 

 

2

 

q

m

2

 

 

.

(3.52)

Aij

 

Aij

 

 

i j

 

 

текущая

 

i j

 

 

исходная

 

 

В табл. 3.3 приведены значения параметра

 

 

2

 

для

q 1

 

 

 

n(n 1)

 

 

 

 

 

различных значений размерности n исходной матрицы.

188

 

 

 

 

 

 

Таблица 3.3

 

Зависимость параметра q от размерности матрицы n

 

 

2

 

 

 

 

 

n

3

4

5

10

20

q

0

0,67

0,83

0,9

0,98

0,995

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

На рис. 3.12 и 3.13 приведены экраны программы, реализующей метод вращения (на начальной и конечной стадиях). Использована случайная матрица, компонентами которой являются псевдослучайные числа, равномерно распределенные на отрезке [0, 1]. Видно, что после 90 итераций выполняется инвариант – сумма найденных собственных значений (они расположены на диагонале преобразованной матрицы) равна сумме диагональных элементов исходной матрицы, т.е. следу матрицы.

Кроме того, проведено дополнительное тестирование надежности полученного решения (пункт меню «дополнительное_тестирование»). Его результаты представлены на рис. 3.14 и 3.15.

С помощью этой программы исследована зависимость среднего числа итераций, требуемых для нахождения с заданной точностью собственных значений случайной матрицы, от ее размерности. Результаты исследования представлены в табл. 3.4 и в графическом виде на рис. 3.16.

Таблица 3.4

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

n

2

4

6

8

10

12

N

1

15

46

84

143

211

189

Рис. 3.12. Задание исходной случайной матрицы