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

ЧМ (ЭКТ-3) / Лабы / Лаба 4 / progon&QR(a)

.doc
Скачиваний:
96
Добавлен:
17.04.2013
Размер:
218.11 Кб
Скачать

Лабораторная работа N4

Решение систем линейных алгебраических уравнений

Краткие теоретические сведения.

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

Метод прогонки.

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

Пусть СЛАУ

(1)

имеет вид

, (2)

то есть содержит трехдиагональную матрицу. Найдем решение этой системы, не требующее обращения ее матрицы.

Имеем , обозначив и , получим . Аналогично , обозначив , , получим .

На -м этапе находим равенство , подставив правую часть которого в соотношение для , получим . Откуда следует, что

(3)

с коэффициентами

(4)

где . Для равенство имеет вид , то есть . Найдя из последнего равенства , получим

. (5)

По формулам (4) найдем и для . Затем, вычислив по формуле (5), по формуле (3) последовательно определим при .

Вариант N7.

A =

6.3078 1.7543 0 0 0 0 0

1.7040 7.3072 0.3463 0 0 0 0

0 0.7839 6.7414 0.0069 0 0 0

0 0 1.2522 7.4389 1.8766 0 0

0 0 0 0.5460 7.3638 1.0998 0

0 0 0 0 0.2446 8.2195 0.7076

0 0 0 0 0 0.6190 7.1298

b =

2.1026

2.4357

2.2471

2.4796

2.4546

2.7398

2.3766

Текст программы.

M= [7.0036 0.0613 0 0 0 0 0

1.7814 7.7757 1.3166 0 0 0 0

0 0.5468 8.9569 2.5981 0 0 0

0 0 0.3546 7.6407 1.5528 0 0

0 0 0 1.1163 8.5168 1.1498 0

0 0 0 0 2.8466 8.0477 0.8761

0 0 0 0 0 1.8745 7.9993]

A=[1.7814; 0.5468; 0.3546; 1.1163; 2.8466; 1.8745]

B=[7.0036; 7.7757; 8.9569; 7.6407; 8.5168; 8.0477; 7.9993]

C=[0.0613; 1.3166; 2.5981; 1.5528; 1.1498; 0.8761]

F=[2.3345; 2.5919; 2.9856; 2.5469; 2.8389; 2.6826; 2.6664]

n=6

m=n+1

al=zeros(n,1)

be=zeros(n,1)

alfa=-C(1)/B(1)

beta=F(1)/B(1)

al(1)=alfa

be(1)=beta

for i=2:n

d=A(i)*alfa+B(i)

alfa=-C(i)/d

beta=(F(i)-A(i)*beta)/d

al(i)=alfa

be(i)=beta

end

y(m)=(F(m)-A(n)*be(n))/(A(n)*al(n)+B(n))

for i=1:n

y(m-i)=y(m+1-i)*al(m-i)+be(m-i)

end

V=y'

Z=M*V-F

clc

y

Z

y =

0.2628 0.2536 0.2860 0.2412 0.2822 0.2891 0.2674

Z =

-0.2465

0.3810

1.0796

-0.0974

0.5500

0.6239

0.3040

Метод QR-разложения.

Если число и вектор размерности () удовлетворяют уравнению , то называется собственным значением матрицы и – собственным вектором, соответствующим .

Собственные значения матрицы определяются из уравнения для определителя

, (1)

где – единичная матрица.

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

На основе данного положения строится -алгоритм нахождения собственных значений матрицы. Пусть – матрица, у которой нужно найти собственные значения. Обозначим и разложим эту матрицу в произведение: . Умножив последнее равенство на , получим

.

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

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

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

Текст программы.

A =[

15.2055 0.5163 0.6797 0.4851 0.1495 0.5624 0.4023

0.5163 6.6158 0.7485 0.8648 1.3984 0.7003 1.1198

0.6797 0.7485 16.7459 0.7689 0.5132 0.3659 1.5007

0.4851 0.8648 0.7689 8.2132 0.6295 0.8973 0.6130

0.1495 1.3984 0.5132 0.6295 6.7805 1.6089 1.6654

0.5624 0.7003 0.3659 0.8973 1.6089 10.1165 0.5238

0.4023 1.1198 1.5007 0.6130 1.6654 0.5238 2.5914]

E=10^(-4)

n=0

[Q,R]=qr(A)

A1=R*Q

e=abs(diag(B))

while e(1)>E || e(2)>E || e(3)>E || e(4)>E || e(5)>E || e(6)>E || e(7)>E

n=n+1

A0=A1

[Q,R]=qr(A1)

A1=R*Q

e=abs(diag(A0)-diag(A1))

end

clc

eig(A)

A1

e

n

ans =

1.8177

5.2195

7.1498

8.0464

11.4516

14.9993

17.5846

A1 =

17.5846 0.0059 0.0000 -0.0000 -0.0000 0.0000 -0.0000

0.0059 14.9993 0.0000 -0.0000 0.0000 -0.0000 -0.0000

0.0000 0.0000 11.4516 0.0000 -0.0000 -0.0000 -0.0000

-0.0000 -0.0000 0.0000 8.0460 -0.0178 0.0000 0.0000

0.0000 0.0000 -0.0000 -0.0178 7.1502 0.0000 0.0000

0.0000 0.0000 -0.0000 0.0000 0.0000 5.2195 0.0000

0.0000 0.0000 -0.0000 -0.0000 -0.0000 -0.0000 1.8177

e =

1.0e-004 *

0.0498

0.0498

0.0000

0.9443

0.9443

0.0000

0

n = 43

Соседние файлы в папке Лаба 4