ЧМ (ЭКТ-3) / Лабы / Лаба 4 / progon&QR(a)
.docЛабораторная работа 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
