Собственные значения
Страница 2
3. ИТЕРАЦИОННЫЕ МЕТОДЫ РЕШЕНИЯ.
Пожалуй, наиболее очевидным способом решения задачи на собственные значения является их определение из системы уравнений
(A - lE) Х == 0,
которая имеет ненулевое решение лишь в случае, если det(A - lE)=0. Раскрыв определитель, получим многочлен п-й степени относительно l, корни которого и будут собственными значениями матрицы. Для определения корней можно воспользоваться любым из методов, описанных в гл. 2. К сожалению, в задачах на собственные значения часто встречаются кратные корни. Так как итерационные методы, в этих случаях не гарантируют получение решения, то для определения собственных значений следует пользоваться другими итерационными методами.
На рис. 1 показана блок-схема простейшего итерационного метода отыскания наибольшего собственного значения системы
AХ =lХ.
Процедура начинается с пробного нормированного вектора X(0). Этот вектор умножается слева на матрицу A, и результат приравнивается произведению постоянной (собственное значение) и нормированному вектору X(0) Если вектор X(0) совпадает с вектором X(0), то счет прекращается. В противном случае новый нормированный вектор используется в качестве исходного и вся процедура повторяется. Если процесс сходится, то постоянный множитель соответствует истинному наибольшему собственному значению, а нормированный вектор — соответствующему собственному вектору. Быстрота сходимости этого итерационного процесса зависит от того насколько удачно выбран начальный вектор. Если он близок к истинному собственному вектору, то итерации сходятся очень быстро. На быстроту сходимости влияет также и отношение величин двух наибольших собственных значений. Если это отношение близко к единице, то сходимость оказывается медленной.
|
Рис. 1. Блок-схема алгоритма иитерационного метода решения задач на собственные значения.
Пример 1
Исследуем трехосное напряженное состояние элемента тела, представленного на рисунке 2. Матрица напряжений для него имеет вид
10 |
5 |
6 | |
5 |
20 |
4 |
* 106 Н/м2 |
6 |
4 |
30 |
Рисунок 2.Трехосное напряженное состояние элемента тела.
Если исходить из того, что разрушение произойдет при максимальном напряжении, то необходимо знать величину наибольшего главного напряжения, которое соответствует наибольшему собственному значению матрицы напряжений. Для нахождения этого напряжения воспользуемся методом итерации Ниже приведена программа для ЭВМ, с помощью которой итерационная процедура осуществляется до тех пор, пока разность между собственными значениями, вычисленными в последовательных итерациях, не станет менее 0,01%. В программе использованы две подпрограммы — GMPRD из пакета программ для научных исследований фирмы IВМ, служащая для перемножения матриц и NORML, нормирующая собственные векторы по наибольшему элементу.
{**********************************************************************}
Программа определения собственных значений Программа позволяет определить наибольшее главное напряжение (собственное значение) для данного трехосного напряженного состояния. Применяется метод итераций. Счет прекращается, когда изменение собственного значения становится менее 0,01 процента или число итераций превышает 50.
{**********************************************************************}
DIMENSION S(3,3),X(3),R(3)
S(1,1) = 10.E06
S(1,2) = 5.ЕО6
S(2,1) = S(1,2)
S(1,3) = 6.E06
S(3,1) = S(1,3)
S(2,2) = 20.E06
S(2,3) = 4.E06
S(3,2) = S(2,3)
S(3,3) = З0.Е06
X(1) = 1.
Х(2) = 0.0
Х(3) = 0.0
XOLD = 0.0
I = 0
WRITE(6 100)
WRITE(6 101)
WRITE(6 102)
WRITE(6 100)
WRITE(6 104) I,X(1),X(2),X(3)
DO 1 1=1,50
CALL GMPRD (S, X, R, 3, 3, 1)
DO 2 J=1,3
2 X(J) = R(J)
CALL NORML(XLAM,X)
WRITE(6,103) I,XLAM,X(1),X(2),X(3)
IF(ABS((XOLD-XLAM)/XLAM).LE.0.0001) GO TO 3
1 XOLD = XLAM
3 WRITE(6,100)
100 FORMAT (1X 54C'-''))
101 FORMAT (2X ‘ITERATION’, ЗХ ‘ITERATION’, 11X,‘EIGENVECTOR')
102 FORMAT (3X 'NUMBER", 6X ,'(N/M**2)’, 5X, ‘X(1)’,
6X,'X(2)',6X,’X(3)’)
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 |