Алгебраическая проблема собственных значений — страница 4

  • Просмотров 4720
  • Скачиваний 42
  • Размер файла 57
    Кб

Программа позволяет определить наибольшее главное напряжение (собственное значение) для данного трехосного напряженного состояния. Применяется метод итераций. Счет прекращается, когда изменение собственного значения становится менее 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 XOLD = XLAM 3 WRITE(6,100) 100 FORMAT (1X 54C'-'')) FORMAT (2X ‘ITERATION’, ЗХ ‘ITERATION’, 11X,‘EIGENVECTOR') 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. 0.10000 Е 08 1,00000 0.50000 0.60000 0.26000Е 08 0.61923 0.66923 1.00000 0.36392Е 08 0.42697 0.56278 1.00000 0.34813Е 08 0.37583 0.49954 1.00000 0.34253Е 08 0.35781 0.46331 1.00000 0.34000Е 08 0.34984 0.44280 1.00000 0.33870Е 08 0.34580 0.43121 1.00000 0.33800Е 08 0.34362 0.42466 1.00000 0.33760Е 08 0,34240 0.42094 1.00000 0.33738Е 08 0.34171 0.41884 1.00000 0.33726Е 08 0.34132 0.41765 1.00000 0.33719Е 08 0,34110 0.41697 1.00000 0.33714Е 08 0.34093 0.41658 1.00000 0.33712Е 08 0.34091 0.41636 1.00000 Отметим, что для достижения требуемой точности потребовалось 14 итераций. Определение наименьшего собственного значения

методом итераций В некоторых случаях целесообразно искать наименьшее, а не наибольшее собственное значение. Это можно сделать, предвари­тельно умножив исходную систему на матрицу, обратную A: А-1АX=А-1X. Если обе части этого соотношения умножим на 1/, то получим 1/ Х = A-1X. Ясно, что это уже иная задача на собственное значение, для кото­рой оно равно 1/, а рассматриваемой матрицей является A-1. Максимум 1/, достигается при

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