Пример 1. Исследуем трехосное напряженное состояние элемента тела, представленного на рисунке 2
Исследуем трехосное напряженное состояние элемента тела, представленного на рисунке 2. Матрица напряжений для него имеет вид
Рисунок 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 {**********************************************************************} Результат работы программы получаем в виде:
Отметим, что для достижения требуемой точности потребовалось 14 итераций.
|