Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Численные методы методичка 4.pdf
Скачиваний:
64
Добавлен:
02.02.2015
Размер:
924.65 Кб
Скачать

Для знаходження інших власних значень треба обрати інший вектор початкового наближення.

1.5.Метод бісекції

Метод бісекції дозволяє знайти k-е за величиною власне значення, всі власні значення на заданому проміжку дійсної осі або всі власні значення симетричної тридіагональної матриці. Ідея метода ґрунтується на наступній теоремі.

Т е о р е м а . Нехай А – квадратна невироджена симетрична матриця порядку n і Ak означає головний мінор матриці, складений з

перших k рядків і стовпців, причому det Ak k , k 1, n . Тоді кількість від’ємних власних значень матриці S A дорівнює кількості змін знаків у послідовності 1, 1, 2 , , n .

Позначимо через n _ S A E . Тоді згідно з теоремою n _ 0 S A , тобто кількості від’ємних власних значень матриці А. З вла-

стивості власних значень матриць А і

A E випливає, що n _ – кіль-

кість

власних

значень матриці

А,

менших

за λ. Отже, величина

n _ 2

n _ 1

– це кількість власних значень,

що належать інтервалу

1, 2 . Під час вибору величин

1 і

2 треба враховувати, що вони не

можуть дорівнювати власним значенням матриці А тому, що в цьому випадку матриці A 1E і A 2E будуть виродженими, а це суперечить

умові теореми.

Таким чином, для знаходження кількості власних значень матриці А, менших за λ, необхідно вміти швидко обчислювати кількість змін знаків у послідовності 1, 1, 2 , , n головних мінорів матриці A E . Ця функ-

ція може бути легко обчислена тільки для тридіагональних матриць, саме тому алгоритм методу бісекції передбачає попереднє приведення матриці до тридіагонального вигляду.

Для обчислення функції n _ для тридіагональних симетричних

матриць існує декілька способів. Перший спосіб базується на ідеї LUрозкладу матриці. Розглянемо тридіагональну матрицю А вигляду

26

a

b

0

0

0

 

 

0

 

 

 

1

1

 

0

 

 

 

 

 

 

b1

a2

b2

0

 

 

0

 

 

A

 

 

 

.

(12)

 

 

 

 

 

 

 

 

 

 

 

 

0

0

0

b

a

 

 

b

 

 

 

 

 

 

n 2

 

n

1

n 1

 

 

 

0

0

0

0

bn 1

an

 

Тоді LU-розклад можна отримати в наступному вигляді

1

0

0

0

0

0

 

 

 

 

 

0

 

 

 

l1

1

0

0

0

 

L ,

 

 

 

 

 

 

 

 

 

0

0

0

ln 2

1

0

 

 

0

0

0

0

ln 1

1

 

 

 

u

b

0

0

0

 

0

 

 

1

1

 

0

 

 

 

 

0

u2

b2

0

 

0

 

U

,

 

 

 

 

 

 

 

 

 

 

0

0

0

0

u

 

b

 

 

 

 

 

0

 

n 1

n 1

 

 

0

0

0

0

 

un

 

де елементи li і ui визначаються за формулами u1 a1;

l

bi

;

(13)

 

i

ui 1

 

 

 

 

 

 

 

 

 

ui ai li bi 1,

i 2, n.

Якщо Ak , Lk , Uk – головні підматриці k-го порядку матриць A, L, U, що складені з перших k рядків і стовпців, тоді Ak LkUk . Отже, врахову-

ючи вигляд матриць Lk і Uk ,

 

 

 

det Ak k det Lk det Uk det Uk u1 u2 uk ,

 

 

 

k 1, n .

Таким чином, кількість змін знаків у послідовності

1, 1, 2 , , n

дорівнює кількості змін знаків у послідовності 1, u1,u2 , , un .

27

Під час реалізації на ЕОМ пам'ять для зберігання матриць L і U не виділяється. Треба додатково виділити пам'ять лише для зберігання вектора u u1,u2 , , un , що формує послідовність.

Для реалізації LU-розкладу за формулами (13) необхідно 2 n 1 мультиплікативних та n 1 адитивних операцій. Оскільки для обчислення

змін знаків необхідно ще не більше n додавань, то загальна кількість ари-

фметичних операцій складає величину O n .

 

 

 

 

 

 

 

 

 

 

 

 

Другій спосіб обчислення послідовності

1, 1, 2 , , n ґрунтується

на використанні рекурентних формул. Розглянемо матрицю (12), тоді

 

 

 

 

 

 

 

 

 

1 a1;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

a a b2

a b2.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

2

1

 

2

1

1

 

 

 

 

 

 

 

 

 

 

 

Нехай для деякого

k 2 мінори

k det Ak і

 

k 1 det Ak 1

вже

обчислені. Знайдемо k 1

det Ak 1 .

 

Розглянемо

визначник

det Ak 1

більш докладно:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a1

 

b1

 

0

0

 

0

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

det Ak 1

b1

 

a2

 

b2

0

 

0

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0 0 0 bk 1

ak

 

bk

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0 0 0 0

 

bk

 

ak 1

 

 

 

 

 

 

 

Для обчислення цього визначника виконаємо розклад за елементами

останнього стовпця. В результаті отримаємо

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a1

 

b1

 

0

 

0

 

 

0

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b1

 

a2

 

b2

0

 

 

0

 

0

 

 

 

 

 

 

 

 

 

 

k 1

a

 

b

 

 

a

 

b2

 

.

 

 

k 1 k

k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k 1 k

 

k

k

1

 

 

 

 

 

 

0 0 0 bk 2

ak 1

 

bk 1

 

 

 

 

 

 

 

 

 

 

 

 

0

 

0

 

 

0

 

0

 

 

0

 

 

bk

 

 

 

 

 

 

 

 

 

Таким чином, поєднуючи отримані результати, можна записати реку-

рентну формулу для обчислення елементів послідовності:

 

 

 

 

 

 

 

 

 

 

 

0

1;

 

 

1

a1;

 

 

 

 

 

 

 

 

 

 

 

 

(14)

 

 

 

 

 

 

 

a

 

 

 

 

b2

 

 

k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k

k

k

1

k 2

,

2, n.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

28

Вираз (14) називають п о с л ідо в н іс тю Ш тур м а . З неї й вигляду матриці А випливають на с л ідки :

1.Ніякі два сусідніх мінори матриці (12) не можуть одночасно дорівнювати нулю.

2.Якщо мінор k , 1 k n, дорівнює нулю, то сусідні мінори від-

мінні від нуля й мають протилежні знаки.

3. Всі власні значення матриці (12) прості.

Обчислення за формулами (14) стійкі у випадку арифметики із плаваючої крапкою, але навіть для матриць малого порядку значення k при

k, близьких до порядку матриці n, виходить за межі діапазону допустимих для ЕОМ чисел. Особливо це відбувається, коли матриця має скупчення близьких власних значень. Тому часто послідовність k заміняють та-

кою послідовністю:

 

 

 

k

 

 

 

 

q

k

 

,

k 1, n.

 

 

 

k 1

 

 

 

 

 

 

 

 

 

Поліноми qk задовольняють співвідношенням

q1 a1;

 

 

 

 

 

 

 

 

 

 

b2

 

 

q

 

a

 

 

k

, k 2, n.

k

k

 

 

 

 

qk 1

 

 

 

 

 

Нехай всі власні значення пронумеровані в порядку убування, тобто

1 2 n . Визначимо k-е власне значення незалежно від інших.

Позначимо через

n кількість власних значень матриці А, строго

більших за

λ.

Якщо

відомі

такі числа a0 , b0 , що

b0 a0 , n a0 k ,

n b0 k ,

тоді

k належить

напівінтервалу a0 , b0 .

Згідно з критерієм

локалізації власних значень всі власні значення за модулем не можуть бу-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ти більшими за будь-яку з норм матриці,

тобто

i

 

A

,

i 1, n .

 

Тому

звичайно приймають

a

 

 

,

b

 

 

 

A

 

 

 

 

.

Приймемо тепер

c

a0

b0

і

A

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

обчислимо n c0 .

 

 

n c0 k , то

 

 

 

 

 

 

 

 

 

 

 

 

 

Якщо

 

 

k належить напівінтервалу

c0 , b0 . Якщо n c0 k ,

то

k

належить напівінтервалу

a0 , c0 . Тому

завжди можна знайти напівінтервал довжини

b0 a0

, що містить

 

. По-

 

k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

29

вторюючи цей процес, одержимо систему вкладених інтервалів as , bs , що містять k , причому

bs as b0 s a0 . 2

Це дає можливість локалізувати власне значення k з довільної, наперед

заданою точністю. Для досягнення заданої точності ε необхідно виконати m кроків, причому m визначається з умови

 

b0 a0

 

,

 

 

 

 

 

2m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

тобто

 

 

 

 

 

 

 

 

 

 

 

b

 

a

 

1

2m ,

 

 

 

 

0

 

 

0

 

 

 

 

 

звідси

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

m log

 

b

a

 

 

.

 

 

 

 

 

2

 

0

0

 

 

 

Метод бісекції можна використовувати для обчислення деякої підмножини власних значень, наприклад, тих, які розташовані на відрізкуa,b або мають номери i , i k . На його реалізацію не впливає наяв-

ність близьких або кратних власних значень, навіть великого їхнього скупчення. Бісекція обходиться тільки в O kn арифметичних операцій, де k

кількість необхідних власних значень. Для QR-алгоритму потрібно O n2

операцій, тому бісекція може бути набагато швидше нього при k n . Відповідні власні вектори можуть бути знайдені за допомогою зворотної ітерації. В найкращому випадку, коли немає близьких власних значень, зворотна ітерація може також мати O kn операцій. У найгіршому випадку, коли є великі скупчення власних значень, трудомісткість зворотної ітерації зростає до O k 2n операцій, при цьому не гарантується якість об-

числених власних векторів (хоча на практиці вони майже завжди обчислюються з достатньою точністю).

30

Приклад 5.

Методом бісекції знайти найбільше власне значення 1

3

1

0

 

 

 

 

 

 

 

 

матриці A

1

3

1

з точністю

0,5 .

 

0

1

3

 

 

 

 

 

Р о з в ' я з а н н я .

Оцінимо

норми

 

 

 

A

 

1 5 , тобто

 

i

 

5 ,

A

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i 1, 2, 3 . Приймемо

a0 5 , b0

5 і побудуємо послідовність Штурма

для матриці

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

1

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A E

1

3

1

 

.

 

 

 

 

 

 

0

1

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

Врезультаті отримаємо:

0 1; 1 a1 3 ;

2 a2 1 b12 0 3 2 1;

 

 

 

3

a

2

b2

3

2

.

 

 

 

 

 

3

 

 

2

 

1

 

 

 

 

1

 

Обчислимо значення послідовності на кінцях відрізка 5, 5 .

В

точці

-5:

 

0

1 ,

 

1 8 ,

2 63 ,

3 496 ;

n 5 0 ,

n 5 3 , змін знаків – 0, власних значень, менших за –5, немає.

В

точці

5:

 

0

1,

 

 

1 2 ,

 

2 3 ,

3 4 ;

n 5 3 1,

n 5 0 1 , тобто є три власних значення на напівінтервалі

5, 5 . Об-

числимо

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

c

 

a0 b0

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

та будемо розглядати напівінтервал 0, 5 .

 

 

 

 

В точці 0: 0

1,

1 3 ,

2

8 , 3 21;

n 0 3 , переходів зна-

ків нема, тобто є три власних значення на напівінтервалі 0, 5 . Покладемо

a1 c0

та обчислимо

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

c

 

a1 b1

 

0 5

2,5 .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

2

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

31

В точці 2,5: 0

1,

1 0,5 , 2

0,75 ,

3

0,875 . Переходів

знаків у послідовності 1, тобто n 2,5 1, n 2,5 2 1 . Тому покладемо

a2 c1

та обчислимо

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

c

a2 b2

 

 

2,5 5

 

3,75 .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

2

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

В точці 3,75: 0

1 ,

1 0,75 , 2 0,438 ,

3 1,078 ; дві зміни

знаків,

n 3,75 1 , n

3,75 2 , n 3,75 1, n 5 1 . Отже максимальне

власне значення 1 3,75, 5 . Покладемо a3

 

c2

та обчислимо

 

 

 

 

c

a3 b3

 

 

 

3,75 5

4,375 .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

2

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

В точці 4,375: 0 1 , 1 1,375 ,

2 0,891 ,

3 0,15 ; дві зміни

знаків,

n 4,375 1, n 4,375 2 ,

n 3,75 1,

n 5 1 . Отже максима-

льне

власне значення

1 4,375, 5 .

 

Умову

збіжності

процесу

b3 a3

0,625 не виконано, тому покладемо a4 c3

та обчислимо

 

 

c

a4 b4

 

 

 

4,375 5

4,688 .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

2

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

В точці 4,688: 0

1 ,

1 1,688 ,

2

1,848 , 3

1,43 ; три зміни

знаків,

n 4,688 0 1 , n 4,688 3 1, n 3,75 1. Отже максимальне

власне значення 1 4,375, 4,688 . Умову збіжності ітераційного процесу

b4 a4

0,313 виконано, тому приймемо приблизно, що

 

 

 

 

 

c4

b4

 

 

4,375 4,688

4,531.

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

2

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Отже, отримана величина 1

 

відрізняється від точного власного зна-

чення 1 4,414

менше, ніж на задану точність 0,5 .

 

 

Приклад 6.

Використовуючи

 

дані

прикладу

5,

методом

бісекції

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

1

0

 

 

 

знайти власне значення 2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

матриці

A

1

3

1 з точністю 0,5 .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

32

Р о з в ' я з а н н я .

 

Розгляд почнемо з точки c1 2,5 . Побудована по-

слідовність Штурма в цій точці має один перехід знаку, тобто n 2,5 1,

n 2,5 2 2 . Тому, як і в попередньому прикладі,

покладемо a2 c1 та

отримаємо, що

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

c

a2 b2

 

 

 

2,5 5

3,75 .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

2

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Було отримано, що послідовність Штурма в точці c2 3,75 має дві

зміни знака, тобто n 3,75 2 ,

n 3,75 1 2 , тому шукане власне зна-

чення 2 2,5, 3,75 . Покладемо

 

b3 c2 та обчислимо

 

 

c

 

a3 b3

 

 

 

2,5 3,75

3,125 .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

2

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Обчислимо послідовність Штурма в точці c3 3,125 .

 

 

0 1 ,

1 0,125 ,

 

2 0,984 , 3

0,248 .

 

У

послідовності

 

дві

зміни

 

 

знаків,

 

тобто

n 3,125 2 .

Тоді

n 3,125 1 2 . Отже,

 

власне

 

 

значення

2 2,5, 3,125 . Покладемо

b4 c3

та обчислимо

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

c

 

 

a3 b3

 

 

 

 

2,5 3,125

2,813 .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

 

 

 

2

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Обчислимо послідовність Штурма в точці c4 2,813 .

 

 

0 1 ,

1 0,188 , 2

0,965 , 3 0,368 .

 

В

послідовності

одна

зміна

 

знаків,

 

тобто

n 2,813 1 .

Тоді

n 2,813 2 2 . Отже,

 

власне

 

значення 2 2,813, 3,125 . Покладемо

a5 c4

та перевіримо виконання умови збіжності ітераційного процесу

b5 a5

0,313 . Тобто умову збіжності виконано, тому приймемо приб-

лизно, що

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a5 b5

 

2,813 3,125

2,969 .

 

 

 

 

 

 

1

 

2

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

33

Отже, отримана величина 2 відрізняється від точного власного зна-

чення 2 3 менше, ніж на задану точність 0,5 .

 

Приклад 7. Використовуючи

дані

прикладу

5, методом бісекції

 

 

3

1

0

 

 

знайти власне значення 3 матриці

 

 

 

 

 

 

A

1

3

1

з точністю

0,5 .

 

 

0

1

3

 

 

 

 

 

 

Р о з в ' я з а н н я .

Розгляд почнемо з точки c1 2,5 . Побудована по-

слідовність Штурма в цій точці має один перехід знаку, тобто

n 2,5 1,

n 2,5 2 3 . Тому,

на

відміну

від попередніх прикладів,

покладемо

b2 c1 та отримаємо, що

 

 

 

 

 

 

 

c

 

a2 b2

 

0 2,5

1,25 .

 

 

 

 

 

 

2

2

2

 

 

 

 

 

 

Обчислимо послідовність Штурма в точці c2 1,25 .

 

0 1 , 1 1,75 ,

2 2,063 , 3 1,859 .

 

Зміни знаків у послідовності нема, тобто n 1,25 0 , n 1,25 3 3 ,

всі власні значення лежать на осі праворуч від точки 1,25. Отже, власне

значення 3 1,25, 2,5 . Покладемо a3

c2 та обчислимо

 

c

 

 

a3

b3

 

1,25 2,5

 

1,875 .

 

 

 

 

 

 

 

3

 

 

 

2

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Розглянемо послідовність Штурма в точці c3 1,875 .

 

0 1 ,

1

1,125 , 2 0,266 , 3 0,826 .

У

послідовності

одна

зміна

знаків,

 

тобто n 1,875 1. Тоді

n 1,875 2 3 . Отже,

 

власне

значення

3 1,25, 1,875 . Покладемо

b4 c3

та обчислимо

 

 

 

 

 

 

 

 

 

 

 

 

 

 

c

 

a4 b4

 

 

1,25 1,875

1,563 .

 

 

 

 

4

 

 

2

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Обчислимо послідовність Штурма в точці c3 1,563 .

 

0 1 ,

 

1 1,438 , 2

1,066 , 3 0,095 .

34