Алгебраическая проблема собственных значенийРефераты >> Математика >> Алгебраическая проблема собственных значений
103 FORMAT (1X,I5,7X,E12.5,3F10.5)
104 FORMAT (1X,I5,19X,3F10.5)
STOP
END
{**********************************************************************}
SUBROUTINE NORML(XL,X)
DIMENSION X(3)
{**********************************************************************}
Подпрограмма norml.
Эта подпрограмма находит наибольший из трех элементов собственного вектора и нормирует собственный вектор по этому наибольшему элементу.
{**********************************************************************}
# FIND THE LARGEST ELEMENT
XBIG = X(1)
IF(X(2).GT.XBIG)XBIG=X(2)
IF(X(3).GT.XBIG)XBIG=X(3)
# Нормирование по XBIG
X(l) = X(1)/XBIG
X(2) = X(2)/XBIG
X(3) = X(3)/XBIG
XL = XBIG
RETURN
END
{**********************************************************************}
Результат работы программы получаем в виде:
Номер Итерации |
Собственное Значение ( N / M ** 2 ) |
Собственный вектор | ||
X (1) |
X (2) |
X (3) | ||
0. |
1.00000 |
0. |
0. | |
1. |
0.10000 Е 08 |
1,00000 |
0.50000 |
0.60000 |
2. |
0.26000Е 08 |
0.61923 |
0.66923 |
1.00000 |
3. |
0.36392Е 08 |
0.42697 |
0.56278 |
1.00000 |
4. |
0.34813Е 08 |
0.37583 |
0.49954 |
1.00000 |
5. |
0.34253Е 08 |
0.35781 |
0.46331 |
1.00000 |
6. |
0.34000Е 08 |
0.34984 |
0.44280 |
1.00000 |
7. |
0.33870Е 08 |
0.34580 |
0.43121 |
1.00000 |
8. |
0.33800Е 08 |
0.34362 |
0.42466 |
1.00000 |
9. |
0.33760Е 08 |
0,34240 |
0.42094 |
1.00000 |
10. |
0.33738Е 08 |
0.34171 |
0.41884 |
1.00000 |
11. |
0.33726Е 08 |
0.34132 |
0.41765 |
1.00000 |
12. |
0.33719Е 08 |
0,34110 |
0.41697 |
1.00000 |
13. |
0.33714Е 08 |
0.34093 |
0.41658 |
1.00000 |
14. |
0.33712Е 08 |
0.34091 |
0.41636 |
1.00000 |
Отметим, что для достижения требуемой точности потребовалось 14 итераций.
Определение наименьшего собственного значения методом итераций
В некоторых случаях целесообразно искать наименьшее, а не наибольшее собственное значение. Это можно сделать, предварительно умножив исходную систему на матрицу, обратную A:
А-1АX=lА-1X.
Если обе части этого соотношения умножим на 1/l, то получим
1/l Х = A-1X.
Ясно, что это уже иная задача на собственное значение, для которой оно равно 1/l, а рассматриваемой матрицей является A-1. Максимум 1/l, достигается при наименьшем l. Таким образом, описанная выше итерационная процедура может быть использована для определения наименьшего собственного значения новой системы.
Определение промежуточных собственных значений методом итераций
Найдя наибольшее собственное значение, можно определить следующее за ним по величине, заменив исходную матрицу матрицей, содержащей лишь оставшиеся собственные значения. Используем для этого метод, называемый методом исчерпывания. Для исходной симметричной матрицы A с известным наибольшим собственным значением l1 и собственным вектором X1 можно воспользоваться принципом ортогональности собственных векторов, т. е. записать
ХiT Хj =0 при i<>j и ХiT Хj =1 при i=j.
Если образовать новую матрицу A* в соответствии с формулой
A* =A-l1Х1Х1T,
то ее собственные значения и собственные векторы будут связаны соотношением
А*Xi =liXi.
Из приведенного выше выражения для матрицы A* следует, что
A* Хi= AХi -lХ1 Х1TXi.
Здесь при i = 1 свойство ортогональности позволяет привести правую часть к виду
A Х1 - l1 Х1.
Но по определению собственных значений матрицы A это выражение должно равняться нулю. Следовательно, собственное значение l1 матрицы A* равно нулю, а все другие ее собственные значения совпадают с собственными значениями матрицы A. Таким образом, матрица A* имеет собственные значения 0, l2, l3,. . ., ln и соответствующие собственные векторы Х1, Х2, Хз,. . . Хn. В результате выполненных преобразований наибольшее собственное значение l1 было изъято, и теперь, чтобы найти следующее наибольшее собственное значение l2, можно применить к матрице A* обычный итерационный метод. Определив l2 и Х2, повторим весь процесс, используя новую матрицу A**, полученную с помощью A*, l2 и Х2. Хотя на первый взгляд кажется, что этот процесс должен быстро привести к цели, он имеет существенные недостатки. При выполнении каждого шага погрешности в определении собственных векторов будут сказываться на точности определения следующего собственного вектора и вызывать накопление ошибок. Поэтому описанный метод вряд ли применим для нахождения более чем трех собственных значений, начиная с наибольшего или наименьшего. Если требуется получить большее число собственных значений, следует пользоваться методами преобразования подобия.