Вы находитесь на странице: 1из 31

Институт проблем механики

Российской Академии Наук

С. Д. Алгазин

ЧИСЛЕННЫЕ АЛГОРИТМЫ КЛАССИЧЕСКОЙ


МАТФИЗИКИ.

IX. Численное исследование свободных колебаний


стержня с осцилляторами.

Препринт № 755

Москва 2004 г.
Аннотация.

Рассматривается задача о свободных колебаниях стержня с


осцилляторами. Приводятся программы на Фортране и примеры
расчёта собственных значений и собственных функций.

The abstract.

It is considered problem about free oscillations of a rod with


oscillators. Programs on a FORTRAN and instances of account of
eigenvalues and eigenfunctions are reduced.

055(02)2  Институт проблем механики РАН 2004

2
Введение.

В [1] рассмотрены задачи на собственные значения, когда


решение соответствующих уравнений гладкие функции. Но
некоторые задачи математической физики приводят к задачам на
собственные значения с кусочно-гладкими функциями (см. ниже). В
этой работе результаты [1] обобщаются на задачи с кусочно-
гладкими функциями. Приведены программы на Фортране. Оценка
погрешности предложенного метода приведена в [2].
§1. Постановка задачи.
Рассматривается стержень (0≤ x ≤ L) поперечного сечения
F(x) (вообще говоря, переменного), на который навешены массы mk
на пружинах (осцилляторы) с жёсткостями ck . Требуется определить
свободные колебания этой системы.
Рассмотрим установившиеся колебания одного груза
(осциллятора). Уравнение движения груза (осциллятора):
d 2 z (t )
m = −c( z (t ) − u ( x * , t )),
dt 2
где m – масса груза; c – жёсткость пружины; z(t) – амплитуда
осциллятора; u(x*,t) – перемещение точки подвеса x=x* осциллятора.
Положим
z (t ) = e iωt z , u ( x, t ) = e iωt u ( x) ⇒ (u ( x * ) − z )c + mλz = 0, λ = ω 2 .

∂ 2 u ∂σ
Уравнение движения стержня m = + ∑ Fсоср. , где σ -
∂x 2 ∂x

напряжение в стержне ⇒

3
n
d d
(1.1) EF ( x) u ( x) + λm( x)u ( x) − ∑ c k (u k − z k )δ ( x − x k ) = 0,
dx dx k =1

(1.2) ck(uk-zk)+λmkzk=0, λk=ck/mk ,


du
(1.3) EF ( x) = 0.
dx x =0, L

Граничные условия (1.3) означают, что концы стержня


свободны. Введём в рассмотрение функцию Грина U=U(x,y), как
решение задачи:
d d m( x )
(1.4) EF ( x) U ( x, y ) + δ ( x − y ) − = 0, 0 < y < L ,
dx dx M
dU ( x, y )
(1.5) EF ( x) = 0,
dx x =0, L

L
(1.6) ∫ m( x)U ( x, y)dx = 0.
0

Замечание. Уравнение (1.1) можно рассматривать как


статическое, т.е. как задачу о растяжении стержня переменного
поперечного сечения под действием массовой силы (-λm(x)u(x) ) и
сосредоточенных сил.
В силу этого замечания имеем две упругие системы (1.1)-(1.3) и
(1.4)-(1.6) по теореме взаимности Бетти: работа сил первой системы
на перемещениях второй системы равна работе сил второй системы
на перемещениях первой системы. В результате получаем:
n L n
1
(1.7) u ( x) +
M
∑ mk z k = λ ∫ U ( x, ξ )m(ξ )u (ξ )dξ + λ ∑ mk z kU ( x, xk ),
k =1 k =1
0

(1.8) λk(uk-zk)+λzk=0, λk=ck/mk, [uk=u(xk), (k=1,2,…,n) –


значение перемещения в точке крепления k-го осциллятора].
Таким образом, для определения амплитуд свободных
колебаний u(x),z1,z2,…,zn и соответствующей частоты λ имеем
систему однородных интегро-алгебраических уравнений (1.7), (1.8).

4
Для случая вынужденных колебаний имеем неоднородное
интегральное уравнение.
Функция Грина U(x,y) вычисляется подпрограммой 1:

SUBROUTINE GRU (N, X, RX, RY, RC, DLN, FM, FP)


Описание параметров:
N – число узлов сетки (внутренних);
X – массив двойной точности длины N+2, который на входе
содержит расчётную сетку;
RX, RY – массивы двойной точности длины N, которые на
выходе содержат функцию Грина (в узлах сетки);
RC – константа двойной точности (входит в функцию Грина);
DLN – масса стержня без осцилляторов, константа двойной
точности;
FM,FP – имена подпрограмм-функций двойной точности
FM(x), FP(x) - линейная интерполяция для m(x) и EF(x)), которые
должны быть описаны в вызывающей программе оператором
EXTERNAL FM, FP.
− RC + RX ( x) + RY ( y ), x ≤ y
Примечание. U ( x, y ) = 
− RC + RX ( y ) + RY ( x), x > y

§2. Квадратурная формула.

Для дискретизации интегрального уравнения (1.7)


применяется квадратурная формула:
x k +1

(2.1) c k = ∫ m( x) S k ( x)dx,
xk −1

1
Подпрограмма написана Пестеревым А. В.

5
 x − x k −1
 x − x , x ∈ [ x k −1 , x k ]
 k k −1
S k ( x) =  , k = 2,..., N − 1
 x − x k +1
, x ∈ [ x k , x k +1 ]
 x k − x k −1

1, x ∈ [ x0 , x1 ]

S1 ( x ) =  x − x 2
 x − x , x ∈ [ x1 , x 2 ]
 1 2

 x − x N −1
 , x ∈ [ x N −1, x N ]
S N ( x) =  x N − x N −1
1 , x ∈ [ x N , L]

m(x) – кусочно-линейная функция, точки разрыва (излома) которой


совпадают с узлами сетки. Таким образом, на каждом отрезке
функция m(x) – линейна. Пусть на i-ом интервале m(x)=ai x+bi , где
ai и bi определяются из таблицы.
Для простоты программирования применим формулу
Симпсона:
x2
h
∫ f ( x)dx = 3 [ f
x0
0 + 4 f1 + f 2 ] .

x k + x k −1 * x + xk
Обозначим x k* = , x k +1 = k +1 , тогда для k=1,2,…,N:
2 2

x k − x k −1
xk x k +1

ck = ∫ m( x ) S
xk −1
k ( x)dx + ∫ m( x) S k ( x)dx =
xk
6
[m( x k −1 ) S k ( x k −1 ) + 4m( x k* ) S k ( x k* ) +

x k +1 − x k
+ m( x k ) S k ( x k )] + [m( x k ) S k ( x k ) + 4m( x k*+1 ) S k ( x k*+1 ) + m( x k +1 ) S k ( x k +1 )] ,
6
0, k ≠ N 0, k ≠ N
Здесь S k ( x k −1 ) =  , S k ( x k +1 ) =  , S k ( x k ) = 1.
1, k = N 1, k = N
Вычисление коэффициентов квадратурной формулы ck ,
k=1,2,…,N осуществляется подпрограммой QFORM:
SUBROUTINE QFORM (C, FM)

6
C – выходной массив двойной точности длины N, который содержит
на выходе коэффициенты квадратурной формулы;
FM – имя подпрограмм функции для вычисления m(x) (линейная
интерполяция), которое должно быть описано в операторе
EXTERNAL FM в вызывающей программе.
Примечание. Сетка и число узлов передаётся в подпрограмму
QFORM COMMON- блоком: COMMON /COMX1U/ X(102), N.
§3. Дискретизация.
Вычисляя в (1.7) интегральное слагаемое по квадратурной
формуле (2.1) получаем конечномерную задачу вида:

 m1 mn  u1   u1 
1 0 ... 0 ...  u  
 M M  2   u2 

 ........... ..............  ....   .... 
    
m m  u   € u 
(3.1)  0....... 1  A UM
= λ   N 
1 n N

M
...

M  z1   
   0 I n  z1 
 λ1 ... 0  z   z2 
   
2
 J ..............  .....
    ..... 
 0 ....... λ n  z   z 
 n  n

Или в матричном виде

u u
(3.2) E   = λD 
z z
Здесь
x k +1

(3.3) Ak ( x) = ∫ U ( x, ξ )m(ξ )S
xk −1
k (ξ )dξ , k = 1,2,..., N ; Aik = Ak ( xi ), k , i = 1,2,..., N ;

L N

∫ U ( x, ξ )m(ξ )u (ξ )dξ = ∑ c
0 k =1
k Ak ( x)u k ,
(3.4)
N
если положить u (ξ ) = ∑ u k S k (ξ ), u k = u ( x k );
k =1

J – матрица n×N, у которой в k-ой строке (k = 1, 2, … ,n) на


месте j(k) стоит –λk , а остальные элементы в этой строке нулевые (
7
j(k) – целая функция, которая номеру осциллятора k ставит в
соответствие номер узла сетки);
U – матрица размера N × n; Uik=U(xi,xj(k));
=M diag (m1 , m2 ,..., mn ) − диагональная матрица размера n×n;

В соотношении (3.2) можно обратить матрицу E


аналитически и в результате получить конечномерную задачу вида
(3.5) v=λE-1Dv, v=(u,z)’
 I + m(Λ − Jm) −1 J − m(Λ − Jm) −1 
(3.6) E −1 =  N  , где
 − (Λ − Jm) −1 J Λ − −1 
 ( Jm ) 
 m1 ... mn 
1  
m=  .............  − N × n матрица; Λ = diag (λ1 ,... , λ n ).
M 
 m1 ... mn 
 ( I + mΛ J ) A ( I + mΛ
 J )UM − mΛ

(3.7) E −1 D =  N N
,
 −Λ JA  JUM + Λ
−Λ  

 ( I + m ) −1 Λ −1 , где
Заметим, что Jm = −Λm и, следовательно, Λ= n

 m1 .... mn 
1  
=m
M  ...............  − матрица размера n× n ( m – матрица размера N×n ! ).
 m .... m 
 1 n 

Матрицу I n + m нетрудно обратить аналитически. Обозначим

1  p1 p2 − 1... pn − 1 
1+ ∑ mj  
=
(3.8) pi
M i≠ j
= , i 1, 2,..., n; ( I n +
= m ) −1  p1 − 1 p2 ... p= n −1 
P,
1  .................................. 
1+
M
∑ mj 
 p − 1 p − 1..... p 

j
 1 2 n 

а поэтому
 p1 p 2 − 1... p n − 1 −1
  λ1 ..... 0 
 p − 1 p ... p − 1  
 =
Λ 1 2 n
 .......... ..... 
 ..................................  0 ...........λ−1 
 p − 1 p − 1..... p  n 
 1 2 n 

Для удобства программирования перепишем (3.7) так:

8
 A + mΛ JA UM + mΛ
 ( JUM − I ) 
(3.9) E −1 D =  
 −Λ  JA  −Λ
Λ  JUM 

Матрица E-1D вычисляется подпрограммой E1DU:


SUBROUTINE E1DU (D, N, NN, NK, ALM, SM, K1, RV1, DLN, X, C, RX, RY, RC)
D – выходная матрица размера (N+NN)×(N+NN) двойной точности,
которая содержит матрицу E-1D;
N – число узлов сетки (внутренних);
NN – n – число осцилляторов;
NK=N+NN – число точек;
ALM – массив двойной точности размера NN, который на входе
содержит λk , k=1,2,…,n – частоты осцилляторов;
SM – массив двойной точности размера NN, который на входе
содержит mk , k=1,2,…,n – массы осцилляторов;
K1 – целый массив длины NN, K1(K) – номер узла сетки в котором
подвешен k – ый осциллятор;
RV1 – рабочий массив двойной точности длины NN (содержит pk,
k=1,2,…,n см. (3.8));
DLN – масса балки без осцилляторов, а не длина!
X – массив двойной точности длины 1 (в старой версии
подпрограммы на входе содержал расчётную сетку), в новой
версии не используется ;
C – массив двойной точности длины N, который на входе содержит
коэффициенты квадратурной формулы (выходной массив
подпрограммы QFORM);
RX(N), RY(N), RC – выходные массивы (двойной точности и
константа двойной точности) подпрограмм GRU, содержат функцию
Грина;

9
§4. Common – блоки.
Способ передачи данных в подпрограммы (EF(x) и m(x));

COMMON /COMX1U/ X(102), N

X – сетка (x0 , x1 , …, xn , xn+1=L);


N – число внутренних узлов, N2=N+2 общее число узлов;
COMMON /COMP1U/ EF(2,102)

EF(x) 1-ая строка значение слева в узле сетки, 2 –ая значение справа;

COMMON /COMM1U/ PM(2,102)

m(x) 1-ая строка значение слева в узле сетки, 2 –ая значение справа;

§5. Описание программы.


Вначале программа просит ввести номера каналов, по которым
будет осуществляться ввод / вывод информации, спецификацию
оператора FORMAT для печати, признак расчёта сетки IPR:
READ (*,*) NONLIN, NOUT, NPRINT, NREAD, FORM, IPR
Рекомендованы значения: NONLIN=1 (по этому каналу
сохраняется в бесформатном виде матрица дискретной задачи);
NOUT=7 (канал промежуточных выдач); NPRINT=6 (канал печати);
NREAD =8 (канал для ввода данных); FORM = ‘(1x,4G18.11)’,
IPR=T – по каналу NREAD считывается сетка (x0 , x1 , …, xn , xn+1=L);
IPR=F - по каналу NREAD считывается длина стержня DLN и
вводится равномерная сетка: x0=0, x(N+2)=DLN, xi=(I-
1)*DLN/(N+1), I=2,…,N+1.
Примечание. По 10 каналу осуществляется запись в файл
EXAMPL.DAT. Это файл данных для Tecplot.

10
После того как каналы определены, по каналу NREAD
считывается информация:
READ (NREAD,*) N, NN, (ALM(I), I=1,NN),(SM(I), I=1,NN),
(K1(I),I=1,NN)
Для теста:
68 2 5.0 6.0 0.1 0.1 18 36
READ (NREAD,*) DLN
1.0
READ(NREAD,*)(EF(I,J),I=1,2),J=1,N+2),(PM(I,J),I=1,2),J=1,N+2),
*(SELECT(I),I=1,N+NN)
1.0 (28×5=140)
1.0 (28×5=140)
T T T T T F(65)
Примечание. 1. SELECT – логический массив длины N+NN. Выбор
собственных значений, для которых нужно вычислять собственные
векторы. В примере задано вычисление первых 5 собственных
векторов.
2. После 32 метки нужно изменить оператор IF(I.EQ.5) THEN на то
значение собственный вектор, который хотим сохранить в файле
EXAMPL.DAT;
WRITE (10,*) ‘ZONE I=68 FPOINT’
68 – число узлов сетки (N), для другой сетки его нужно изменить;
WRITE (10,*) ‘TEXT X=10 Y=90 T=”EIGEN VALUE 89.3858”’
89.3958 – 5-е собственное значение. Для других собственных
значений нужно заменить (это – пойдёт в заголовок).

11
§6. Текст программы.
$objcomment lib:"unitu.lib"
IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION C(100),D(120,120),RM1(120,120),RV1(120),RV2(120),
1 INT(120),WR(129),SCALE(120),ALM(20),K1(20),SM(20),
2 WI(120),Z(3600),RX(100),RY(100)
LOGICAL SELECT(120),IPR
CHARACTER FORM*14
EXTERNAL FM,FP
COMMON /COMM1U/ PM(2,102)
COMMON /COMX1U/ X(102),N
COMMON /COMP1U/ EF(2,102)
READ (*,*) NONLIN,NOUT,NPRINT,NREAD,FORM,IPR
WRITE (*,*) 'NONLIN=',NONLIN,' NOUT=',NOUT,' NREAD=',NREAD,
1 ' NPRINT=',NPRINT,' FORMAT=',FORM
OPEN (UNIT=NOUT,FILE='NOUT.TXT')
OPEN (UNIT=NPRINT,FILE='NPRINT.TXT')
OPEN (UNIT=NREAD,FILE='NREAD.TXT')
OPEN (UNIT=10,FILE='EXAMPL.DAT')
READ (NREAD,*) N,NN,(ALM(I),I=1,NN),(SM(I),I=1,NN),(K1(I),I=1,NN)
WRITE (NOUT,*) N,NN,(ALM(I),I=1,NN),(SM(I),I=1,NN),(K1(I),I=1,NN)
N2=N+2
N3=N+NN
IF(IPR) THEN
READ (NREAD,*) (X(I),I=1,N2)
DLN=X(N+2)
ELSE
READ (NREAD,*) DLN
WRITE (NOUT,*) 'Считана длина'
X(1)=0.D0
X(N+2)=DLN
KMK=N+1
DO 15 I=2,KMK
15 X(I)=(I-1)*DLN/KMK
END IF
READ (NREAD,*)((EF(I,J),I=1,2),J=1,N2),
1 ((PM(I,J),I=1,2),J=1,N2),(SELECT(I),I=1,N3)
WRITE (NOUT,*) 'X ',(X(I),I=1,N2),'EF ',((EF(I,J),I=1,2),J=1,N2),
1 'PM ',((PM(I,J),I=1,2),J=1,N2),
2 'SELECT ',(SELECT(I),I=1,N3),'DLN ',DLN
NK=N+NN
MM=30
NM=N
CALL QFORM (C,FM)
P=0.D0
DO 11 K=1,N
11 P=P+C(K)
WRITE (NOUT,*) P
CALL GRU (N,X,RX,RY,RC,DLN,FM,FP)
RC=-RC
WRITE (NOUT,*) 'RX'
C WRITE (NOUT,FORM) (RX(I),I=1,N)
WRITE (NOUT,*) (RX(I),I=1,N)
WRITE (NOUT,*) 'RY'
C WRITE (NOUT,FORM) (RY(I),I=1,N)
WRITE (NOUT,*) (RY(I),I=1,N)
WRITE (NOUT,*) 'DLN'
12
WRITE (NOUT,FORM) DLN
CALL E1DU (D,N,NN,NK,ALM,SM,K1,RV1,DLN,X,C,RX,RY,RC)
CALL BALANC (NK,NK,D,LOW,IGH,SCALE)
CALL ELMHES (NK,NK,LOW,IGH,D,INT)
WRITE (NONLIN) D
END FILE NONLIN
CALL HQR (NK,NK,LOW,IGH,D,WR,WI,IERR)
WRITE (NOUT,*) IERR,(WR(I),I=1,NK),(WI(I),I=1,NK)
REWIND NONLIN
READ (NONLIN) D
CALL INVIT (NK,NK,D,WR,WI,SELECT,MM,M,Z,IERR,RM1,RV1,RV2)
REWIND NONLIN
READ (NONLIN) D
CALL ELMBAK (NK,LOW,IGH,D,INT,M,Z)
CALL BALBAK (NK,NK,LOW,IGH,SCALE,M,Z)
WRITE (NOUT,*) (WR(I),I=1,NK),(WI(I),I=1,NK)
DO 5 I=1,NK
5 WR(I)=1./WR(I)
WRITE (NPRINT,*) 'Собственные значения'
IF (NPRINT.EQ.6) WRITE (NPRINT,FORM) (WR(I),I=1,NK)
IF (NPRINT.NE.6) WRITE (NPRINT,*) (WR(I),I=1,NK)
I1=0
DO 31 I=1,M
WRITE (NPRINT,*) 'Собственный вектор для собственного значения
',
1 WR(I)
DO 32 J=1,NK
I1=I1+1
32 RV1(J)=Z(I1)
CALL NORM (RV1,NK)
IF (NPRINT.EQ.6) WRITE (NPRINT,FORM) (RV1(K),K=1,NK)
IF (NPRINT.NE.6) WRITE (NPRINT,*) (RV1(K),K=1,NK)
C IF (I.EQ.1) THEN
C IF (I.EQ.2) THEN
C IF (I.EQ.3) THEN
IF (I.EQ.5) THEN
WRITE (10,*) 'TITLE="Eigen function"'
WRITE (10,*) 'VARIABLES="X" "Y"'
WRITE (10,*) 'ZONE I=68 F=POINT'
DO K=1,N
WRITE (10,'(1X,2E11.2)') X(K),RV1(K)
ENDDO
WRITE (10,*) 'TEXT X=10 Y=90 T="Eigen value 89.3858"'
ENDIF
31 CONTINUE
STOP
END
DOUBLE PRECISION FUNCTION FM(X)
IMPLICIT REAL*8 (A-H,O-Z)
COMMON /COMM1U/ P(2,102)
COMMON /COMX1U/ SX(102),N
N2=N+2
DO 1 I=2,N2
IF(X.GE.SX(I-1).AND.X.LE.SX(I)) IS=I
IF(X.GE.SX(I-1).AND.X.LE.SX(I)) GO TO 2
1 CONTINUE
WRITE (6,3)
3 FORMAT(1X,'X ВНЕ ИНТЕРВАЛА (0,1)')
2 X1=SX(I-1)
X2=SX(I)
13
F1=P(2,I-1)
F2=P(1,I)
A=(F1-F2)/(X1-X2)
B=F1-A*X1
FM=A*X+B
RETURN
END
DOUBLE PRECISION FUNCTION FP(X)
IMPLICIT REAL*8 (A-H,O-Z)
COMMON /COMP1U/ P(2,102)
COMMON /COMX1U/ SX(102),N
N2=N+2
DO 1 I=2,N2
IF(X.GE.SX(I-1).AND.X.LE.SX(I)) IS=I
IF(X.GE.SX(I-1).AND.X.LE.SX(I)) GO TO 2
1 CONTINUE
WRITE (6,3)
3 FORMAT(1X,'X ВНЕ ИНТЕРВАЛА (0,1)')
2 X1=SX(I-1)
X2=SX(I)
F1=P(2,I-1)
F2=P(1,I)
A=(F1-F2)/(X1-X2)
B=F1-A*X1
FP=A*X+B
RETURN
END
SUBROUTINE QFORM(C,FM)
IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION C(1)
SK(X,Y,Z)=(X-Y)/(Z-Y)
COMMON /COMX1U/ X(102),N
DO 1 K=1,N
X1=X(K)
X3=X(K+1)
X2=(X1+X3)*0.5D0
X5=X(K+2)
X4=(X5+X3)*0.5D0
IF(K.EQ.1) S1=1.D0
IF(K.NE.1) S1=0.D0
IF(K.EQ.N) S5=1.D0
IF(K.NE.N) S5=0.D0
IF(K.EQ.1) S2=1.D0
IF(K.NE.1) S2=SK(X2,X1,X3)
IF(K.EQ.N) S4=1.D0
IF(K.NE.N) S4=SK(X4,X5,X3)
1 C(K)=((X3-X1)/6.D0)*(FM(X1)*S1+4.D0*FM(X2)*S2+FM(X3))+
+((X5-X3)/6.D0)*(FM(X3)+4.D0*FM(X4)*S4+FM(X5)*S5)
RETURN
END
SUBROUTINE NORM(Y,N)
IMPLICIT DOUBLE PRECISION (A-H,O-Z)
DIMENSION Y(1)
P=0.D0
DO 1 K=1,N
IF(DABS(Y(K)).LE.P) GO TO 1
P=DABS(Y(K))
1 CONTINUE
DO 2 I=1,N
Y(I)=Y(I)/P
14
2 CONTINUE
RETURN
END
SUBROUTINE GRU(N,X,KX,KKSI,KL,M,FM,FP)
IMPLICIT REAL*8 (A-H,O-Z)
REAL*8 KX,KKSI,KL,M,MB,MB0,ME,ME0,KXB,KXB0,KKSIE,KKSIE0
DIMENSION KX(1),KKSI(1),X(1),MB(64),ME(64),PB(32),PE(32),PHI1(32)
1 ,PHI2(32),KXB(16),KKSIE(16)
M=0
KL=0
PHI1(32)=0
PHI2(32)=0
KXB(16)=0
KKSIE(16)=0
NN=N+1
ER=1.D-15
RLEVM=0.001
RLEVP=0.1
DO 1 I=1,NN
RB=X(I)
MB0=FM(RB+ER)
STEPA=(X(I+1)-RB)/64
DO 11 K=1,63
11 MB(K)=FM(RB+K*STEPA)
MB(64)=FM(X(I+1)-ER)
M=M+(MB0+4*MB(1)+MB(2))*(1/3.D0 )*STEPA
DO 12 K=1,61,2
12 M=M+(MB(K+1)+4*MB(K+2)+MB(K+3))*(1/3.D0)*STEPA
1 CONTINUE
DO 2 I=1,NN
J=N+3-I
RB=X(I)
RE=X(J)
MB0=FM(RB+ER)
ME0=FM(RE-ER)
PB0=FP(RB+ER)
PE0=FP(RE-ER)
KXB0=KXB(16)
KKSIE0=KKSIE(16)
PHI10=PHI1(32)
PHI20=PHI2(32)
STEPA=(X(I+1)-RB)/64
STEPB=(RE-X(J-1))/64
DO 21 K=1,63
21 MB(K)=FM(RB+K*STEPA)
DO 22 K=1,63
22 ME(K)=FM(RE-K*STEPB)
DO 23 K=1,31
23 PB(K)=FP(RB+2*K*STEPA)
DO 24 K=1,31
24 PE(K)=FP(RE-2*K*STEPB)
MB(64)=FM(X(I+1)-ER)
ME(64)=FM(X(J-1)+ER)
PB(32)=FP(X(I+1)-ER)
PE(32)=FP(X(J-1)+ER)
PHI1(1)=PHI10+(MB0+4*MB(1)+MB(2))*(1/3.D0)*STEPA
DO 25 K=2,32
25 PHI1(K)=PHI1(K-1)+(MB(2*K-2)+4*MB(2*K-1)+MB(2*K))*(1/3.D0)*STEPA
PHI2(1)=PHI20+(ME0+4*ME(1)+ME(2))*(1/3.D0)*STEPB
DO 26 K=2,32

15
26 PHI2(K)=PHI2(K-1)+(ME(2*K-2)+4*ME(2*K-1)+ME(2*K))*(1/3.D0)*STEPB
KXB(1)=KXB0+(1.D0/M)*(PHI10/PB0+4*PHI1(1)/PB(1)+PHI1(2)/PB(2))*
*(2/3.D0)*STEPA
DO 27 K=2,16
27 KXB(K)=KXB(K-1)+(1.D0/M)*(PHI1(2*K-2)/PB(2*K-2)+4*PHI1(2*K-1)/
/PB(2*K-1)+PHI1(2*K)/PB(2*K))*(2/3.D0)*STEPA
KKSIE(1)=KKSIE0+(1.D0/M)*(PHI20/PE0+4*PHI2(1)/PE(1)+
+PHI2(2)/PE(2))*(2/3.D0)*STEPB
DO 29 K=2,16
29 KKSIE(K)=KKSIE(K-1)+(1.D0/M)*(PHI2(2*K-2)/PE(2*K-2)+
+4*PHI2(2*K-1)/PE(2*K-1)+PHI2(2*K)/PE(2*K))*(2/3.D0)*STEPB

KL=KL+(-1.D0/M**2)*(PHI10**2/PB0+4*PHI1(1)**2/PB(1)+
+PHI1(2)**2/PB(2))*(2/3.D0)*STEPA
DO 32 K=2,16
32 KL=KL+(-1.D0/M**2)*(PHI1(2*K-2)**2/PB(2*K-2)+
+4*PHI1(2*K-1)**2/PB(2*K-1)+PHI1(2*K)**2/PB(2*K))*(2/3.D0)*STEPA
IF(I.EQ.NN) GO TO 2
KX(I)=KXB(16)
KKSI(J-2)=KKSIE(16)
2 CONTINUE
KL=KXB(16)+KL
101 FORMAT(2X,'KX(L)=',D20.12,3X,'KKSI(0)='D20.12)
RETURN
END
SUBROUTINE E1DU(E1D,N,NN,NT,RLAM,SM,JM,P,BM,X,C,RX,RY,RC)
IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION E1D(NT,NT),RLAM(NN),SM(NN),JM(NN),P(NN),X(1),C(1),
1 RX(1),RY(1)
120 FORMAT(1X,7G12.4)
DO 1 I=1,NT
DO 1 J=1,NT
1 E1D(I,J)=0.D0
DO 40 I=1,N
DO 40 J=1,N
IF (I.LE.J) FU=RX(I)+RY(J)+RC
IF (I.GT.J) FU=RX(J)+RY(I)+RC
40 E1D(I,J)=C(J)*FU
DO 50 I=1,N
DO 50 J=1,NN
KL=JM(J)
IF (I.LE.KL) FU=RX(I)+RY(KL)+RC
IF (I.GT.KL) FU=RX(KL)+RY(I)+RC
50 E1D(I,N+J)=FU*SM(J)
11 FORMAT(1X,'E1D')
10 FORMAT(1X,9G12.4)
PS=1.
DO 2 I=1,NN
2 PS=PS+SM(I)/BM
DO 3 I=1,NN
P(I)=1.D0
DO 4 J=1,NN
IF (I.NE.J) P(I)=P(I)+SM(J)/BM
4 CONTINUE
3 P(I)=P(I)/PS
12 FORMAT(1X,'P')
DO 5 I=1,NN
DO 5 J=1,NN
IF (I.EQ.J) E1D(N+I,N+J)=P(I)/RLAM(I)
IF (I.NE.J) E1D(N+I,N+J)=(P(J)-1.)/RLAM(J)

16
5 CONTINUE
DO 6 I=1,NN
DO 6 J=1,N
PIJ=0.D0
DO 7 K=1,NN
7 PIJ=PIJ+E1D(N+I,N+K)*RLAM(K)*E1D(JM(K),J)
6 E1D(N+I,J)=PIJ
DO 8 I=1,N
DO 8 J=1,N
PIJ=0.
DO 9 K=1,NN
9 PIJ=PIJ+SM(K)*E1D(N+K,J)/BM
8 E1D(I,J)=E1D(I,J)-PIJ
DO 20 I=1,NN
DO 20 J=1,NN
PIJ=0.
DO 21 K=1,NN
IF (K.EQ.I) P0=P(K)
IF (K.NE.I) P0=P(K)-1
21 PIJ=PIJ+P0*E1D(JM(K),J+N)
20 E1D(N+I,N+J)=E1D(N+I,N+J)+PIJ
DO 22 J=1,NN
PIJ=0.
DO 23 K=1,NN
23 PIJ=PIJ+SM(K)*E1D(N+K,N+J)/BM
DO 22 I=1,N
22 E1D(I,N+J)=E1D(I,N+J)-PIJ
RETURN
END

Примечания. 1. Первая строка этой программы – вызов


библиотеки, содержащей программы пакета EISPACK: BALANC,
ELMHES, HQR, INVIT, ELMBAK, BALBAK. Эти подпрограммы
доступны в Интернет по адресу: htpp://www.netlib.org/eispack/.
2. Программа написана на языке Фортран-77 и
транслировалась разными компиляторами. Настоящая версия
транслировалась компилятором CompaqVisual FORTRAN 6.1.

§7. Пример численного расчёта.

В качестве примера численного расчёта рассматривалась


однородная балка EF(x)=1, m(x)=1 единичной длины. Выбиралась
равномерная сетка из 68 внутренних узлов. В 18 и 36 узлах к балке
прикреплялись осцилляторы массами 0.1 с частотами 5 и 6.
17
Получены первые 5 собственных частот: 4.7240, 6.4569, 10.7744,
40.8333, 89.3858. На Фиг. 1 – 5 приведены соответствующие
собственные формы.

18
19
20
21
22
Библиография.
1. Алгазин С. Д. Численные алгоритмы без насыщения в
классических задачах математической физики. М.: Научный
Мир, 2002, 155 стр.
2. Алгазин С. Д. Численное исследование резонансов в
некоторых сложных колебательных системах // Изв. АН
СССР, Мех. тв. тела, № 3, 1991, с. 155-159.
3. Алёшин А. Я. Колебания пространственных криволинейных
стержней с присоединёнными массами // Изв. Вузов, 1972, №
5, с. 24-29.
4. Богуш М. Е., Поздняков П. Г. Зависимость частоты
крутильных колебаний кварцевых стержней от температуры //
ДАН, 1979, т. 248, № 3, с. 618 - 621.
5. Быцань Е. Н. Крутильно-изгибные колебания конусообразной
пакетной системы // Мат. физика (АН УСССР), 1979, вып. 16,
с. 8-13.
6. Вейц В. Л., Кочура А. Е. Об одном методе определения
собственных спектров составных упругих систем // Прикл.
мех., 1978, т. 14, № 7, с. 88-96.
7. Дворников В. И. Собственные формы и частоты колебаний
многопролётных балок на упругих опорах // Прикл. мех., 1974,
т. 10, вып. 9, с. 92-97.
8. Дмитриев А. С. Динамика балочной конструкции на упругом
основании при движении массы // Пробл. Машиностроения/
Ин-т проблем машиностр. АН УССР, 1980, вып. 12, с. 23-29.
9. Дмитриев А. С. Колебания балки на упругом основании под
действием движущейся силы // Пробл. Машиностроения/ Ин-т
проблем машиностр. АН УССР, 1979, вып. 9, с. 24-34.
23
10.Дмитриев А. С. Продольные колебания балки под действием
движущегося груза // Прикл. мех., 1976, т. 12, № 2, с. 100-105.
11.Зарембо Л. К., Пиотух В. Б., Секоян С. С. Экспериментальное
исследование структуры собственных продольных колебаний
стержней и акустического резонансного детектирования //
Акуст. Журнал, 1973, т. 19, вып. 5, с. 778-781.
12.Зубова А. Ф. Исследование колебаний балок переменного
сечения // Дифф. ур-я , 1978, т. 14, № 9, с. 1698-1700.
13.Квашина С. С. Высокочастотные длинноволновые колебания
упругих стержней // Прикл. мат. и мех., 1979, т. 43, вып. 2, с.
335-341.
14.Колесник И. А. Колебания арочной стстемы при движении
группы грузов // Прикл. мех., 1971, т. 7, вып. 5, с. 73-78.
15.Конашенко С. И., Науменко Н. Е. О свободных колебаниях
системы двух параллельно расположенных упругих связанных
стержней переменного сечения // Прикл. мех., 1971, т. 7, вып.
11, с. 21-27.
16.Кузьмич А. Н. Связанные колебания пластин и стержней //
Исследования по теории пластин и оболочек, 1975, вып. 11, с.
327-336.
17.Мартьянов А. П. К расчёту на устойчивость и колебания
стержневых систем с большим числом степеней свободы //
Изв. АН Каз. ССР, Серия физ-мат, 1974, № 3, с. 51-58.
18.Миронов М. В. О расчёте свободных колебаний стержней
переменного сечения методом медленно меняющегося
параметра // Изв. АН СССР, Механика тв. тела, 1972, № 2, с.
130-138.

24
19.Старосельский Л. А. Об уравнениях описывающих колебания
криволинейных упругих стержней // ДАН СССР, 1979, т. 247,
№ 1, с. 63-67.
20.Харитонова Т. В. Анализ колебаний систем, образованных из
криволинейных стержней // Изв. АН СССР, Механика тв. тела,
1974, № 6, с. 135-143.
21.Челомей С. В. Об одном методе расчёта частот собственных
колебаний прямых стержней // Изв. АН СССР, Механика тв.
тела, 1977, № 6, с. 167-170.
22.Бабий В. П. О вычислении периодических решений
неавтономных систем со многими степенями свободы // Изв.
Вузов, Математика, 1976, № 10, с. 17-21.
23.Бердичевский В. Л., Квашина С. С. Об уравнениях,
описывающих колебания упругих стержней // Прикл.
математика и механика, 1976, т. 40, вып. 1, с. 120-135.
24.Дмитриев А. С. Поперечные колебания балки с упругими
опорами при движении сосредоточенной силы // Прикл. мех.,
1974, т. 10, вып. 4, с. 113-118.
25.Зайцев А. С. Динамика стержня с упругим амортизатором //
Прикл. механика, 1974, т. 10, вып. 9, с. 98-104.
26.Конашенко С. И., Науменко Н. Е. О динамических усилиях
при продольных колебаниях неоднородных стержней с
сосредоточенными включениями // Прикл. мех., 1973, т. 9,
вып. 7, с. 109-114.
27.Фабижевский К. В. Трансформация продольной упругой
волны в составном стержне с упруго подвешенными
сосредоточенными массами // Прикл. механика, 1977, т. 13, №
6, с. 97-101.

25
28.Косолап Н. Д. Изопериметрическая задача строительной
механики стержневых систем // Прикл. мех., 1975, т. 11, вып.
8, с. 124-127
29.Максимов Л. С. Измерение частот колебаний башенного
сооружения с целью контроля за изменениями его жёсткости //
Строительная механика и расчёт сооружений, 1978, № 2, с. 54-
57.
30.Ананьин А. И., Барченков А. Г., Сафронов В. С. О свободных
колебаниях комбинированных систем // Строительная
механика и расчёт сооружений, 1972, № 4, с. 42-45.
31.Садовский М. А., Костюченко В. Н. О сейсмическом действии
подземных взрывов (на здания) // ДАН, 1974, т. 215, № 5, с.
1097-1100.
32.Тарханов Г. В. Модификация метода начальных параметров
для расчёта колебаний стержневых систем // Машиноведение,
1979, № 2, с. 36-39.
33.Цейтлин А. И. О развитии прикладной динамики сооружений
// Строительная механика и расчёт сооружений, 1973, № 6, с.
1-5.
34.Амбарцумян В. А. Об одном методе определения частот и
форм свободных нелинейных колебаний каркасных зданий //
Изв. АН Арм. ССР, сер. техн. наук, 1979, т. 32, № 5, с. 18-24.
35.Архангельский И. С., Гусев М. Ф. Изгибно-крутильные
колебания рамных каркасов // Труды ЦНИИПромзданий
(Центр. Научно-исслед. и проектно-экспериментальный ин-т
пром. зданий и сооружений ), 1972, вып. 28, с. 39-49.
36.Биргман И. Н. Нелинейные колебания каркасов (зданий) с
подвешенными массами при сейсмическом воздействии //

26
Строительная механика и расчёт сооружений, 1973, № 1, с. 58-
61.
37.Бутенко Ю. И. И др. IV Всесоюзная конф. по статике и
динамике простр. конструкций (Киев, окт. 1978) // Прикл. мех.,
1979, т. 15, №3, с. 106-108.
38.Вольфсон Б. П. К вопросу о собственных колебаниях каркасов
одноэтажных промышленных зданий // Труды ЦНИИ
Промзданий, 1971, вып. 20, с. 60-67.
39.Глаголев А. Жёсткие характеристики связей. Усилия в
элементах унифицированного каркаса // Стр-во и архит.
Москвы, 1978, № 8, с. 18-19.
40.Гороян Г. А. К определению периодов свободных колебаний
каркасных зданий с гибкими нижними этажами // Изв. АН
Арм. ССР, серия техн. наук, 1973, т. 26, № 4, с. 28-32.
41.Гохбаум Ф. А. К расчёту пространственных каркасов
многоэтажных промышленных зданий // Труды ЦНИИ
Промзданий, 1971, вып. 20, с. 15-47; 1977, вып. 57, с. 5 –119;
1972, вып. 28, с. 12-38.
42.Каграманова Э. Г. Дифференциальные уравнения колебания
многоэтажных коробчатых систем // Дан УЗ ССР, 1974, № 12,
с. 8-11.
43.Котов-Лунёв А. А. Определение частот и форм собственных
колебаний зданий рамно-связанной конструктивной схемы с
учётом деформаций изгиба, сдвига и инерции вращения масс
перекрытия // Изв. Вузов, Стр-во и архит., 1971, № 9, с. 37-44.
44.Масленников А. М. Матрица жёсткости и матрица масс
коробчатого элемента // Изв. Вузов, Стр-во и архит., 1971, №
6, с. 33-40.

27
45.Рылов С. Н. Расчёт частот и форм собственных колебаний
закреплённых балочных систем // Изв. Вузов,
Машиностроение, 1979, № 2, с. 14-17.
46.Шром Г. М. Использование метода динамических жёсткостей
для расчёта свободных колебаний каркасных зданий // Стр-во
и архит. Узбекистана, 1975, № 8, с. 38 – 40.
Книги.
47.Избранные задачи по строительной механике и теории
упругости. Красноярск, 1971, под. Ред. Абовского Н. П., ч.1,
1971; ч.2, 1976.
48.Тимошенко С. П. Курс теории упругости (2-е изд.), Киев,
«Наукова Думка», 1972.
49.Автоматические системы расчёта колебаний методом
конечных элементов. Иркутск, 1984.
50.Егупов В. К. Расчёт зданий на прочность устойчивость и
колебания, Киев, Будевильник, 1965.
51.Пиковский А. А. Статика стержневых систем со сжатыми
элементами. М., Физматгиз, 1961.
52.Снитко И. К. Практические методы расчёта статически
неопределённых систем. Изд. 2-ое, М., Стройиздат, 1964.
53.Филин А. П. Матрицы в статике стержневых систем и
некоторые элементы использования ЭЦВМ. Л.-М.,
Стройиздат, 1966.
54.Рекач В. Г. Основная библиография по строительной механике
и по некоторым вопросам смежных наук связанных с
механическим расчётом сооружений и непрерывных сред. М.,
1968.
55.Динамический расчёт зданий и сооружений (М. Ф. Берштейн,
В. А. Ильичёв, Б. Г. Коренев и др.), Стройиздат, 1984.
28
56.Справочник по динамике сооружений (под ред. Б. Г. Коренева,
И. М. Рабиновича). М., Стройиздат, 1972.
57.Болотин В. В. и др. Современные проблемы строительной
механики. М., Стройиздат, 1964.
58.Болотин В. В. и др. Строительная механика. Современное
состояние и перспективы развития. М., Стройиздат, 1972.
59.Игнатьев В. А. Расчёт регулярных стержневых систем.
Саратов, 1973.
60.Шульгин Ю. Б. Теория упругих стержневых конструкций. М.,
Наука, 1984.
61.Дорохов А. Н. Унифицированный способ расчёта стержневых
систем. М., Стройиздат, 1981.
62.Клаф Рей В., Пензиен Джозеф. Динамика сооружений. М.,
Стройиздат, 1979.
63.Беклемишев Д. П. Основы методики расчёта статически
неопределимых систем методом сил. Л., 1962.
64.Пинский М. Г. Методы определения перемещений и расчёт
статически неопределимых систем. Метод. пособие, Харьков,
1961.
65.Соболев Ю. С. Расчёт статически неопределимых систем
методом сил. М., МАТИ, 1980, 88 с.
66.Леонтьев Н. Н., Соболев Д. А. Вариационные принципы
строительной механики и основные теоремы об упругих
системах. М., МИСИ, 1980.
67.Филин А. П. И др. Алгоритмы построения разрешающих
уравнений механики стержневых систем. Л., Стройиздат, 1983.
68.Карашанский Тодор Д. Численные методы строительной
механики. М., Стройиздат, 1980.

29
69.Синицин А. П. Метод конечных элементов в динамике
сооружений. М., Стройиздат, 1978.
70.Бидный Г. Р. и др. Матричный метод решения задач
строительной механики. Кишинёв, Штинца, 1981.
71.Ливсли Р. К. Матричные методы строительной механики. М.,
Стройиздат, 1980.
72.Геммерлинг А. В. Расчёт стержневых систем. М., Стройиздат,
1974.
Колебания.
73.Аксентян К. Б. и др. Вариационно-энергетический метод
расчёта колебаний инженерных сооружений. Изд-во Рост. ун-
та, 1970.
74.Лисовский А. Колебания прямых стержней и рам.
Госстройиздат, 1961.
75.Тимошенко С. П. Прочность и колебания элементов
конструкций. М., Наука, 1975.
76.Ионов В. Н., Огибалов П. М. Прочность пространственных
элементов конструкций.
Ч.1 Основы механики сплошной среды, 1979.
Ч.2 Статика и колебания, 1979.
Ч.3 Динамика и волны напряжений, 1980.
77.Лившиц И. Е. Особенности расчёта стержневых
пространственных конструкций. Л., Стройиздат, 1968.
78.Немчинов Ю. И. Расчёт пространственных конструкций. Киев,
Будевильник, 1980.

30
Заключение.
По поводу получения полных версий описанных программ
обращайтесь по электронному адресу: algazinsd@mail.ru или на
адрес Института проблем механики РАН, 119526, Москва, проспект
Вернадского д.101, к.1.

Оглавление

Введение. ...................................................................................................................... 3
§1. Постановка задачи. ................................................................................................ 3
§2. Квадратурная формула. ......................................................................................... 5
§3. Дискретизация. ....................................................................................................... 7
§4. Common – блоки................................................................................................... 10
§5. Описание программы. ......................................................................................... 10
§6. Текст программы.................................................................................................. 12
§7. Пример численного расчёта. ............................................................................... 17
Библиография. ............................................................................................................ 23
Книги. ...................................................................................................................... 28
Колебания. .............................................................................................................. 30
Заключение. ................................................................................................................ 31

Алгазин Сергей Дмитриевич

Численные алгоритмы классической матфизики.


IX. Численное исследование свободных колебаний
стержня с осцилляторами

Подписано к печати 28.07.2004. Заказ № 22-2004. Тираж 50 экз.


________________________________________________________

Отпечатано на ризографе Института проблем механики РАН


117526, Москва, пр-т Вернадского, 101

31