Открыть Электронные книги
Категории
Открыть Аудиокниги
Категории
Открыть Журналы
Категории
Открыть Документы
Категории
С. Д. Алгазин
Препринт № 773
Москва 2005 г.
Аннотация.
The abstract.
2
Введение.
3
1). О силах действующих на балку со стороны штанги с
грузом.
Фиг. 1
Тогда для правого расположения осциллятора
4
z − y0
= sin ϕ ≈ ϕ , z0 = y0 + l0ϕ ;
l0
m0l02ϕ = − M ± m0 y0l0
(1.4) M = Rl0
5
Примем, что на штангу с осциллятором действует момент
пропорциональный углу ϕ − y′( x0 ) и стремящийся вернуть груз назад:
cϕ M cϕ
M = cϕ (ϕ − y′( x0 )) = ( z − y0 l0 y′( x0 )) ⇒ R = = 2 ( z − y0 l0 y′( x0 )).
l0 l0 l0
Rδ ( x − x0 ) + Mδ ′( x − x0 ) = R{δ ( x − x0 ) l0δ ′( x − x0 )} =
cϕ
= ( z − y0 l0 y ′( x0 )){δ ( x − x0 ) l0δ ′( x − x0 )}
l02
⇓
λm0 z0
Для n осцилляторов получаем уравнения свободных колебаний:
d2 d2y n
(1.7) EI x 2 = λmy + λ ∑ mk z k (δ ( x − x0 ) − lk δ ′( x − x0 )) ,
dx 2 dx k =1
6
§2. Интегральное уравнение.
d2
(2.4) p( x) U(x,ξ ) =0
dx 2 x = 0, a
d d2
(2.5) p ( x) 2 U(x, ξ) =0
dx dx x = 0, a
a
(2.6) ∫ m( x)U ( x, ξ )dx = 0
условие ортогональности абсолютно жёсткому перемещению
0
a
(2.7) ∫ xm( x)U ( x, ξ )dx = 0
0
7
a n
(2.8) y ( x) λ ∫ U ( x, ξ )m(ξ ) y (ξ )dξ + λ ∑ mk zk (U ( x, xk ) + lkU ξ′ ( x, xk )) + c2 x + c1
=
0 k =1
a n
α11 α12 с1 f1 a a a
= , где α11 = ∫ m( x)dx, α12 = α 21 = ∫ xm( x)dx, α 22 = ∫ x 2 m( x)dx.
α α с
21 22 2 f 2 0 0 0
Пусть β=α-1, т. е.
−1
β11 β12 α11 α12 с = β11 f1 + β12 f 2
= ⇒ 1
β 21 β 22 α 21 α 22
с2 = β 21 f1 + β 22 f 2
α 22 α α
где β11 = , β 21 = β12 = − 12 , β 22 = 11 , det α = α11α 22 − α122 ;
det α det α det α
Следовательно,
c2 x + c1 = ( β 21 f1 + β 22 f 2 )x+ β11 f1 + β12 f 2 =
n n
( β 21 x + β11 )(−∑ mk z k ) + ( β 22 x + β12 )(−∑ mk z k ( xk + lk ) ⇒
k =1 k =1
n n
y ( x) + ( β 21 x + β11 )∑ mk zk + ( β 22 x + β12 )∑ mk zk ( xk* + lk ) =
=k 1=k 1
a n
(2.9)= λ ∫ U ( x, ξ )m(ξ ) y (ξ )dξ + λ ∑ mk zk (U ( x, xk* ) + lkU ξ′ ( x, xk* )),
0 k =1
k −
*
xточка крепления k го− осциллятора ;
8
§3. Структура конечномерной задачи.
(N × N ) ( N × n) ( N × n)
IN 0 β
(n × N ) ( n × n) ( n × n)
(3.2) E =
0 In β
*
(n × N ) ( n × n) ( n × n)
J − LΛ Λ
Здесь IN и In – единичные матрицы, размера N×N и n×n
соответственно.
(3.3)
9
(3.4)
(3.6) L=diag(l1,…,ln);
(3.7) Λ=diag(λ1,…,λn);
( N × N ) ( N × n) ( N × n)
A 0 U
( n × N ) ( n × n) ( n × n)
(3.8) D=
Ax 0 Ux
( n × N ) ( n × n) ( n × n)
0
0 I n
10
( x)), x ≤ ξ
( f 2 (ξ ), Af
U ( x, ξ ) =
1
(ξ )), x ≥ ξ
( f 2 ( x), Af1
где векторы f1 и f 2 длины 4 и матрица A - 4×4 строятся из 8
массивов и 8 констант вычисляемых подпрограммой:
IZSGF(N,XV,RES,C,FM,EJ) 1
N – число внутренних узлов сетки;
XV- массив длины N+2, содержащий на входе сетку;
RES – массив 8×N, в котором по строкам расположены массивы:
K1 x ( x )
K ′ ( x)
1x
K 2 x ( x)
K 2′ x ( x)
RES (8, N ) = , x – пробегает узлы сетки;
K1ξ ( x)
K1′ξ ( x)
K 2ξ ( x )
K ′ ( x)
2ξ
С – одномерный массив длины 8, содержащий на выходе константы:
С(1)-
a
α11 = ∫ m( x)dx = M − полная масса балки без осцилляторов, a − длина балки;
0
С(2)- SL=aα11-α12;
a
C(3)- α12 = ∫ xm( x)dx (= aα11 − S L =) = S 0 ;
0
a
C(4)- α 22 = ∫ x 2 m( x)dx (= aα12 − J 0 =) = aS L − J L ;
0
1
Подпрограмма написана Пестеревым А. В.
11
Далее вычисляем ещё три константы: J0=aα12 – α22; JL=a(aα11-α12)-
α22=aSL-α22; W = −(α122 − α11 J 0 );
K11 K12
1 0
W W
K K 22
Строим матрицу A размера 4×4: A = 21 0 1 ;
W W
1 0 0 0
0 1 0 0
f14
(3.13) U ( x, ξ ) =
f11
f12
( f 21 , f 22=, f 23 , f 24 ) A ( f 2 ( x), Af
(ξ )), x ≥ ξ
f13 1
f14
12
построения U ξ′ ( x, ξ ) нужно в формулу (3.13) подставить вместо
f 2 (ξ ) → f 2′(ξ ) :
f 2′(ξ ) = (α12 ,−α11 , K1′ξ (ξ ), K 2′ξ (ξ ))
↓
(3.14)
выбираются из
массива RES
f1 ( x) → f1′( x)
f1′( x) = (α12 ,−α11 , K1′x ( x), K 2′ x ( x))
↓
(3.15)
выбираются из
массива RES
β
J *m*= ( J − LΛ ) * = J β − LΛβ *
β
Далее получаем
βJ (1),1 βJ (1),2 ... βJ (1),n
β β
β
... J (2), n
J β = −Λ J (2),1 J (2),2
= −Λβ
...................................
β
(3.16) J ( n ),1 β J ( n ),2 ... β J ( n ),n
↓
Эта матрица получается из β заменой x p на x*p
(т. е. узлы крепления осцилляторов );
13
Для того чтобы обратить эту матрицу рассмотрим вначале обращение
матрицы ( I n + m ) для продольных колебаний стержня [3]:
m1 m2 ... mn 1
1 m1 m2 ... mn 1 1
=m = ( m1 m2 ... mn )
l ................... l ...
m1 m2 ... mn 1
Эта матрица имеет единственный собственный вектор (1 1....1)′ и
соответствующее собственное значение ∑mi/l. Матрица m проектор (с
точностью до скалярного множителя). Любой вектор x матрица m переводит в
вектор коллинеарный (1 1....1)′ .
Легко видеть, что
1
(3.17) ( I n + m ) −1 =In − m
1
1 + ∑ mi
l
Это следует из того, что
=m 2
∑
=
m
m i
λ m
l
Если обозначить λ – собственное значение матрицы m€ (n- кратное), то
1
( I n + m ) −1 =In − m
λ +1
Как обобщить эту формулу на случай проектора в двумерное
подпространство?
1
Предложение. Если m 2 = λ m , то ( I n + m ) −1 =In − m .
λ +1
Для поперечных колебаний балки нужно обратить матрицу
( I + β* ) размера n×n. Причём =
β* β (1) + β (2) , где
β=(1)
( β 21 ( x*p + l p ) + β11 )mk
pk
(3.18) (1)2 n
=β λ 1
(1)=
β , λ1 ∑k =1
mk ( β 21 ( xk* + lk ) + β11 )
β=(2)
( β 22 ( x*p + l p ) + β12 )mk ( xk* + lk )
pk
(3.19) (2)2 n
β= λ2 β =
(2) , λ
2 ∑
k =1
mk ( xk* + lk )( β 22 ( xk* + lk ) + β12 )
14
(2) (1) n
β = β λ 21
(2)Q −1=
β , λ21 ∑ mk ( xk* + lk )( β 21 ( xk* + lk ) + β11 )
k =1
(1) (2) n
(3.20) =β β
λ12 β = Q , λ12 ∑ mk ( β 22 ( xk* + lk ) + β12 )
(1) −1
k =1
Q = diag ( x + l ,..., x + l )
* *
1 1 n n
Используя эти соотношения:
( I + β* ) −1 = ( I + β (1) + β (2) ) −1 = ( I + ( I + β (1) ) −1 β (2) ) −1 ( I + β (1) ) −1 =
1 (1) (2) −1 1 (1)
= (I + (I − β )β ) ( I − β )
λ1 + 1 λ1 + 1
↓
λ
(...) −1 =( I + β (2) − 12 β (1)Q) −1
1 + λ1
Обозначим
(3.21)
1 1
(3)2
β = λ3 β (3) ,
n
λ
=λ3 ∑ (( β 22 ( xk* + lk ) + β12 − 12 ( β 21 ( xk* + lk ) + β11 ))mk ( xk* + lk ))
k =1 1 + λ1
1 (3)
Тогда (...) −1= I − β . В результате получаем
λ3 + 1
1 (3) 1 (1) 1 (3) 1 (1)
( I + β* ) −1 =
(I − β )( I − β )=
I− β − β +
λ3 + 1 1 + λ1 λ3 + 1 1 + λ1
(3.22)
β (3) β (1)
+
(λ3 + 1)(λ1 + 1)
Входящие в эту формулу величины определены в (3.18)-(3.21).
Обозначим
15
n
λ31 = ∑ mq ( xq* + lq )( β 21 ( xq* + lq ) + β11 ), тогда
q =1
m m λ
( I + β* ) −pk1 = δ pk − k ( β 21 ( x*p + l p ) + β11 ) + k ( 31 − xk* − lk ) ×
λ1 + 1 λ3 + 1 λ1 + 1
λ12
(3.23) ×( β 22 ( x*p + l p ) + β12 − ( β 21 ( x*p + l p ) + β11 ));
1 + λ1
1, p = k
δ pk =
0, p ≠ k
Матрица E определена в (3.2). Если обозначить
J * = ( J − LΛ )
↓ ↓
n× N n×n
β → N × n
m* = *
β → n × n
то формальной заменой ( J → J * , m → m* и N→N+n) эта матрица имеет тот же
вид, что и матрица E для продольных колебаний стержня [3]. В результате
получаем:
I N + βΛ
* J − βΛ * LΛ − βΛ*
* *
(3.24) E −=
1
β Λ J I n − β *Λ * LΛ − β * Λ * = ( I + β ) −1 Λ −1 ;
* , где Λ
*
* LΛ
−Λ J Λ Λ
* *
( I N + βΛ * J ) A − βΛ
* L ΛA 0 ( I N + βΛ
* J )U − βΛ * LΛU − βΛ *
x x
−1
(3.25) E D = Ax 0 Ux
−Λ JA + Λ
* L ΛA
*
−Λ JU + Λ
* L ΛU + Λ
* *
x 0 x
16
2×2. Эта матрица вычисляется подпрограммой MED.
SUBROUTINE MED(N,NN,DL,ED,X,AM,K1,AL,NKN,ALM,RES,CX,FM,FP) 2
Описание параметров:
N – число узлов сетки;
NN-число осцилляторов;
DL –длина балки;
ED –выходная матрица размера NKN×NKN (NKN=N+NN), которая содержит
блочную матрицу 2×2 E-1D (левый верхний угол);
X – сетка (массив длины N+2): x0=0,x1,…,xN+1=DLN;
K1-одномерный массив длины NN, k-ый элемент которого содержит номер
внутреннего узла сетки в которой подвешен осциллятор;
AL – одномерный массив длины NN, содержит на входе длины математических
маятников в подвеске осцилляторов;
NKN=N+NN;
ALM- одномерный массив длины NN, который содержит частоты
осцилляторов;
RES(8,N) – рабочий массив;
CX(N)- коэффициенты квадратурной формулы;
FM,FP- имена подпрограмм функций для вычисления погонной массы и
жёсткости балки (см. [3]), должны быть описаны в операторе EXTERNAL.
2
Подпрограмма написана Андреевой Т. В.
17
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.
После того как каналы определены, по каналу NREAD
считывается информация:
READ (NREAD,*)
N,NN,(AM(I),I=1,NN),(K1(I),I=1,NN),(AL(I),I=1,NN),
* (ALM(J),J=1,NN)
Для теста
9 4 0.1 0.7 0.7 0.1 2 4 6 8 0.5 0.1 0.1 0.5 5.0 5.0 5.0 5.0
READ (NREAD,*)(SELECT(I),I=1,N3),((PM(I,J),I=1,2),J=1,N2),
1 ((EF(I,J),I=1,2),J=1,N2)
T T T T T F F F F F F F F
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0
18
605.6428 – 5-е собственное значение. Для других собственных
значений нужно заменить (это – пойдёт в заголовок).
3. Первые N компонент собственного вектора содержат
значения собственной функции во внутренних узлах сетки,
последние NN компонент содержат амплитуды осцилляторов.
§5. Текст программы.
$objcomment lib:"unitu.lib"
IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION AM(20),K1(20),AL(20),ALM(20),INT(120),
1 ED(140,140),CX(100),WR(120),WI(120),Z(3600),
2 RV1(120),RV2(120),RES(8,100),RM1(120,120),SCALE(120)
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,(AM(I),I=1,NN),(K1(I),I=1,NN),(AL(I),I=1,NN),
* (ALM(J),J=1,NN)
WRITE (NOUT,*)
N,NN,(AM(I),I=1,NN),(K1(I),I=1,NN),(AL(I),I=1,NN),
* (ALM(J),J=1,NN)
N2=N+2
N3=N+NN
IF(IPR) THEN
READ (NREAD,*) (X(I),I=1,N2)
ADLB=X(N+2)
ELSE
READ (NREAD,*) ADLB
WRITE (NOUT,*) 'Считана длина'
X(1)=0.D0
X(N+2)=ADLB
KMK=N+1
DO 15 I=2,KMK
15 X(I)=(I-1)*ADLB/KMK
END IF
READ (NREAD,*)(SELECT(I),I=1,N3),((PM(I,J),I=1,2),J=1,N2),
1 ((EF(I,J),I=1,2),J=1,N2)
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
NKN=N+2*NN
CALL QFORM (CX,FM)
MM=30
19
CALL MED(N,NN,ADLB,ED,X,AM,K1,AL,NKN,ALM,RES,CX,FM,FP)
MATZ=1
NM=N+NN
CALL BALANC (NKN,NM,ED,LOW,IGH,SCALE)
CALL ELMHES (NKN,NM,LOW,IGH,ED,INT)
WRITE (NONLIN) ED
END FILE NONLIN
CALL HQR (NKN,NM,LOW,IGH,ED,WR,WI,IERR)
WRITE (NOUT,*) IERR,(WR(I),I=1,NM),(WI(I),I=1,NM)
I0=0
REWIND NONLIN
READ (NONLIN) ED
CALL INVIT (NKN,NM,ED,WR,WI,SELECT,MM,M,Z,IERR,RM1,RV1,RV2)
REWIND NONLIN
READ (NONLIN) ED
CALL ELMBAK (NKN,LOW,IGH,ED,INT,M,Z)
CALL BALBAK (NKN,NM,LOW,IGH,SCALE,M,Z)
WRITE (NOUT,*) (WR(I),I=1,NM),(WI(I),I=1,NM)
DO 5 I=1,NM
5 WR(I)=1./WR(I)
WRITE (NPRINT,*) 'Собственные значения'
IF (NPRINT.EQ.6) WRITE (NPRINT,FORM) (WR(I),I=1,NM)
IF (NPRINT.NE.6) WRITE (NPRINT,*) (WR(I),I=1,NM)
I1=0
DO 31 I=1,M
WRITE (NPRINT,*) 'Собственный вектор для собственного значения
',
1 WR(I)
DO 32 J=1,NM
I1=I1+1
32 RV1(J)=Z(I1)
CALL NORM (RV1,NK)
IF (NPRINT.EQ.6) WRITE (NPRINT,FORM) (RV1(K),K=1,NM)
IF (NPRINT.NE.6) WRITE (NPRINT,*) (RV1(K),K=1,NM)
C IF (I.EQ.1) THEN
C IF (I.EQ.2) THEN
C IF (I.EQ.3) THEN
C IF (I.EQ.4) THEN
IF (I.EQ.5) THEN
WRITE (10,*) 'TITLE="Eigen function"'
WRITE (10,*) 'VARIABLES="X" "Y"'
WRITE (10,*) 'ZONE I=9 F=POINT'
DO K=1,N
WRITE (10,'(1X,2E11.2)') X(K),RV1(K)
ENDDO
WRITE (10,*) 'TEXT X=10 Y=90 T="Eigenvalue 605.6428"'
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)
20
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
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))
21
1 CONTINUE
DO 2 I=1,N
Y(I)=Y(I)/P
2 CONTINUE
RETURN
END
SUBROUTINE MED(N,NN,DL,ED,X,AM,K1,AL,NKN,ALM,RES,CX,FM,FP)
IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION ED(NKN,NKN),X(1),AM(NN),K1(NN),AL(NN),ALM(NN),
1 RES(8,N),C(8),F1(4),F2(4),DA(4,4),CX(N)
EXTERNAL FM,FP
FL(R,A,B)=A*R-B
FL2(Y,C,D)=C-Y*D
KK=N+NN
CALL IZSGF(N,X,RES,C,FM,FP)
RJ0=DL*C(3)-C(4)
RJL=DL*C(2)-C(4)
W=-(C(3)**2-C(1)*RJ0)
DA(1,1)=C(5)/W
DA(1,2)=C(6)/W
DA(1,3)=1.
DA(1,4)=0.
DA(2,1)=C(7)/W
DA(2,2)=C(8)/W
DA(2,3)=0.
DA(2,4)=1.
DO 9 I=1,2
DO 9 J=1,4
IF(I.EQ.J) GO TO 917
DA(I+2,J)=0.
GO TO 9
917 DA(I+2,J)=1.
9 CONTINUE
DO 19 I=1,N
DO 19 J=1,N
IF(X(I+1).LE.X(J+1)) GO TO 16
I1=J
J1=I
GO TO 161
16 I1=I
J1=J
161 F1(1)=FL((DL-X(I1+1)),C(2),RJL)
F1(2)=FL2((DL-X(I1+1)),C(2),C(1))
F1(3)=RES(1,I1)
F1(4)=RES(3,I1)
F2(1)=FL(X(J1+1),C(3),RJ0)
F2(2)=FL2(X(J1+1),C(3),C(1))
F2(3)=RES(5,J1)
F2(4)=RES(7,J1)
ASUM=0.
DO 18 KI=1,4
SUM=0.
DO 181 KJ=1,4
181 SUM=SUM+F2(KJ)*DA(KJ,KI)
18 ASUM=ASUM+SUM*F1(KI)
19 ED(I,J)=CX(J)*ASUM/W
C --------U-----------
DO 27 I=1,N
DO 27 J=1,NN
22
KJK=K1(J)+1
IF(X(I+1).LE.X(KJK)) GO TO 22
I1=K1(J)
J1=I
GO TO 23
22 I1=I
J1=K1(J)
23 F1(1)=FL((DL-X(I1+1)),C(2),RJL)
F1(2)=FL2((DL-X(I1+1)),C(2),C(1))
F1(3)=RES(1,I1)
F1(4)=RES(3,I1)
F2(1)=FL(X(J1+1),C(3),RJ0)
F2(2)=FL2(X(J1+1),C(3),C(1))
F2(3)=RES(5,J1)
F2(4)=RES(7,J1)
ASUM=0.
DO 26 KI=1,4
SUM=0.
DO 24 KJ=1,4
24 SUM=SUM+F2(KJ)*DA(KJ,KI)
26 ASUM=ASUM+SUM*F1(KI)
27 ED(I,J+N)=ASUM/W
DO 36 I=1,N
DO 36 J=1,NN
KJK=K1(J)+1
IF(X(I+1).LE.X(KJK)) GO TO 31
F1(1)=-C(2)
F1(2)=C(1)
F1(3)=RES(2,KJK-1)
F1(4)=RES(4,KJK-1)
F2(1)=FL(X(I+1),C(3),RJ0)
F2(2)=FL2(X(I+1),C(3),C(1))
F2(3)=RES(5,I)
F2(4)=RES(7,I)
GO TO 331
31 F1(1)=FL((DL-X(I+1)),C(2),RJL)
F1(2)=FL2((DL-X(I+1)),C(2),C(1))
F1(3)=RES(1,I)
F1(4)=RES(3,I)
F2(1)=C(3)
F2(2)=-C(1)
F2(3)=RES(6,(KJK-1))
F2(4)=RES(8,(KJK-1))
331 ASUM=0.
DO 34 KI=1,4
SUM=0.
DO 33 KJ=1,4
33 SUM=SUM+F2(KJ)*DA(KJ,KI)
34 ASUM=ASUM+SUM*F1(KI)
36 ED(I,J+N)=AM(J)*(ED(I,J+N)+AL(J)*ASUM/W)
LKN=N+1
LKK=N+NN
C ----------AX-----------
DO 45 I=1,NN
KIK=K1(I)+1
DO 45 J=1,N
IF(X(KIK).LE.X(J)) GO TO 41
F1(1)=FL((DL-X(J+1)),C(2),RJL)
F1(2)=FL2((DL-X(J+1)),C(2),C(1))
F1(3)=RES(1,J)
23
F1(4)=RES(3,J)
F2(1)=C(3)
F2(2)=-C(1)
F2(3)=RES(6,KIK-1)
F2(4)=RES(8,KIK-1)
GO TO 42
41 F1 (1)=-C(2)
F1(2)=C(1)
F1(3)=RES(2,KIK-1)
F1(4)=RES(4,KIK-1)
F2(1)=FL(X(J+1),C(3),RJ0)
F2(2)=FL2(X(J+1),C(3),C(1))
F2(3)=RES(5,J)
F2(4)=RES(7,J)
42 ASUM=0.
DO 43 KI=1,4
SUM=0.
DO 44 KJ=1,4
44 SUM=SUM+F2(KJ)*DA(KJ,KI)
43 ASUM=ASUM+SUM*F1(KI)
45 ED(I+KK,J)=CX(J)*ASUM/W
LKN=KK+1
LKK=KK+NN
C ----------UX-----------
DO 75 I=1,NN
KIK=K1(I)+1
DO 75 J=1,NN
KJK=K1(J)+1
IF (X(KIK).LE.X(KJK)) GO TO 71
F1(1)=FL((DL-X(KJK)),C(2),RJL)
F1(2)=FL2((DL-X(KJK)),C(2),C(1))
F1(3)=RES(1,KJK-1)
F1(4)=RES(3,KJK-1)
F2(1)=C(3)
F2(2)=-C(1)
F2(3)=RES(6,KIK-1)
F2(4)=RES(8,KIK-1)
GO TO 72
71 F1 (1)=-C(2)
F1(2)=C(1)
F1(3)=RES(2,KIK-1)
F1(4)=RES(4,KIK-1)
F2(1)=FL(X(KJK),C(3),RJ0)
F2(2)=FL2(X(KJK),C(3),C(1))
F2(3)=RES(5,KJK-1)
F2(4)=RES(7,KJK-1)
72 ASUM=0.
DO 73 KI=1,4
SUM=0.
DO 74 KJ=1,4
74 SUM=SUM+F2(KJ)*DA(KJ,KI)
73 ASUM=ASUM+SUM*F1(KI)
75 ED(I+KK,J+N)=ASUM/W
DO 97 I=1,NN
KIK=K1(I)+1
DO 97 J=1,NN
KJK=K1(J)+1
IF (X(KIK).LE.X(KJK)) GO TO 91
I1=KJK-1
J1=KIK-1
24
GO TO 92
91 I1=KIK-1
J1=KJK-1
92 F1 (1)=-C(2)
F1(2)=C(1)
F1(3)=RES(2,I1)
F1(4)=RES(4,I1)
F2(1)=C(3)
F2(2)=-C(1)
F2(3)=RES(6,J1)
F2(4)=RES(8,J1)
ASUM=0.
DO 93 KI=1,4
SUM=0.
DO 94 KJ=1,4
94 SUM=SUM+F2(KJ)*DA(KJ,KI)
93 ASUM=ASUM+SUM*F1(KI)
97 ED(I+KK,J+N)=AM(J)*(ED(I+KK,J+N)+AL(J)*ASUM/W)
C Константы вычислены для случая m(x)=1
BET11=DL
BET12=DL**2/2.
BET21=BET12
BET22=DL**3/3.
DET=BET11*BET22-BET12**2
BC=BET11
BET11=BET22/DET
BET21=-BET12/DET
BET12=BET21
BET22=BC/DET
C ---------------------
DO 20 I=1,N
DO 20 J=1,NN
KJ=K1(J)+1
20
ED(I,J+KK)=(BET21*X(I+1)+BET11)*AM(J)+(BET22*X(I+1)+BET12)*AM(J)
* *(X(KJ)+AL(J))
ALM1=0.
ALM12=0.
ALM31=0.
DO 40 I=1,NN
KI=K1(I)+1
ALM1=ALM1+AM(I)*(BET21*(X(KI)+AL(I))+BET11)
ALM12=ALM12+AM(I)*(BET22*(X(KI)+AL(I))+BET12)
40 ALM31=ALM31+AM(I)*(X(KI)+AL(I))*(BET21*(X(KI)+AL(I))+BET11)
ALM3=0.
DO 35 I=1,NN
KI=K1(I)+1
35 ALM3=ALM3+(BET22*(X(KI)+AL(I))+BET12-ALM12/(1.+ALM1)*
*(BET21*(X(KI)+AL(I))+BET11))*AM(I)*(X(KI)+AL(I))
C -----------------------------------------------------
KN=NN+N
NK=N-NN
DO 50 I=1,NN
KI=K1(I)+1
DO 50 J=1,NN
KJ=K1(J)+1
ED(I+N,J+NK)=-
AM(J)/(ALM1+1.)*(BET21*(X(KI)+AL(I))+BET11)+AM(J)/
/(ALM3+1.)*(ALM31/(ALM1+1.)-X(KJ)-AL(J))*(BET22*(X(KI)+AL(I))+
+BET12-ALM12/(1.+ALM1)*(BET21*(X(KI)+AL(I))+BET11))
25
IF(I.NE.J) GO TO 50
ED(I+N,J+NK)=1.D0+ED(I+N,J+NK)
50 CONTINUE
KK=N+NN
DO 60 I=1,NN
DO 60 J=1,NN
60 ED(I+N,J+N)=ED(I+N,J+NK)/ALM(I)
C --------Л*J--------------------
DO 70 J=1,N
DO 65 I=1,NN
IF (K1(I).EQ.J) GO TO 68
65 ED(I+N,J)=0.
GO TO 70
68 DO 67 L=1,NN
67 ED(L+N,J)=ED(L+N,I+NK)
70 CONTINUE
C --------ЛLЛ-----------
DO 80 I=1,NN
DO 80 J=1,NN
80 ED(I+KK,J+KK)=ED(I+N,J+N)*AL(J)*ALM(J)
DO 100 I=1,NN
DO 100 J=1,NN
SUM=0.
DO 90 K=1,N
90 SUM=SUM+ED(I+N,K)*ED(K,J+N)
100 ED(I+N,J+N)=ED(I+N,J+N)+SUM
DO 120 I=1,NN
DO 120 J=1,NN
SUM=0.
DO 110 K=1,NN
110 SUM=SUM+ED(I+KK,K+KK)*ED(K+KK,J+N)
120 ED(I+N,J+N)=ED(I+N,J+N)+SUM
C -----------------------------
DO 130 I=1,N
DO 130 J=1,NN
SUM=0.
DO 125 K=1,NN
125 SUM=SUM+ED(I,K+KK)*ED(K+N,J+N)
130 ED(I,J+N)=ED(I,J+N)-SUM
DO 140 I=1,NN
DO 140 J=1,N
SUM=0.
DO 135 K=1,N
135 SUM=SUM+ED(I+N,K)*ED(K,J)
140 ED(J,I+KK)=SUM
DO 141 I=1,NN
DO 141 J=1,N
141 ED(I+N,J)=ED(J,I+KK)
DO 150 I=1,NN
DO 150 J=1,N
SUM=0.
DO 145 K=1,NN
145 SUM=SUM+ED(KK+I,KK+K)*ED(K+KK,J)
150 ED(J,I+KK)=SUM
DO 160 I=1,N
DO 160 J=1,N
SUM=0.
DO 155 K=1,NN
KL=K1(K)+1
155 SUM=SUM+((BET21*X(I+1)+BET11)*AM(K)+(BET22*X(I+1)+BET12)*
26
*AM(K)*(X(KL)+AL(K)))*ED(J,K+KK)
160 ED(I,J)=ED(I,J)-SUM
DO 170 I=1,N
DO 170 J=1,N
SUM=0.
DO 165 K=1,NN
KL=K1(K)+1
165 SUM=SUM+((BET21*X(I+1)+BET11)*AM(K)+(BET22*X(I+1)+BET12)*
*AM(K)*(X(KL)+AL(K)))*ED(K+N,J)
170 ED(I,J)=ED(I,J)+SUM
DO 180 I=1,NN
DO 180 J=1,N
180 ED(I+N,J)=ED(I+N,J)+ED(J,I+KK)
RETURN
END
SUBROUTINE IZSGF (N,XV,RES,C,FM,EJ)
IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION PHI(6),PSI(6),A1(2,33),A2(2,17),A3(2,9)
DIMENSION XV(1)
DIMENSION RES(8,N),C(16)
DIMENSION X(65),RM(65),P(33)
RL=XV(N+2)
ER=1.D-10
NN=N+1
NC=0
IZ=1
300 DO 4 L=1,6
PHI(L)=0.
4 PSI(L)=0.
DO 5 L=1,2
A1(L,33)=0.
A2(L,17)=0.
5 A3(L,9)=0.
IF (NC.EQ.4) IZ=-1
DO 1 I=1,NN
DO 9 L=1,2
A1(L,1)=A1(L,33)
A2(L,1)=A2(L,17)
9 A3(L,1)=A3(L,9)
I1=I
I2=I+1
IF (NC.EQ.0) GO TO 6
I1=N+3-I1
I2=N+3-I2
6 H=(XV(I2)-XV(I1))/64
HS=DABS(H)/3
X(1)=XV(I1)
RM(1)=FM(X(1)+H*ER)
DO 11 K=2,64
X(K)=X(1)+H*(K-1)
11 RM(K)=FM(X(K))
X(65)=XV(I2)
RM(65)=FM(X(65)-H*ER)
P(1)=EJ(X(1)+H*ER)
DO 7 K=2,32
7 P(K)=EJ(X(2*K-1))
P(33)=EJ(X(65)-H*ER)
IF (NC.EQ.0) GO TO 100
DO 8 K=1,65
8 X(K)=RL-X(K)
27
100 DO 12 K=2,33
PHI(1)=PHI(1)+HS*(RM(2*K-3)+4*RM(2*K-2)+RM(2*K-1))
PSI(1)=PSI(1)+HS*(RM(2*K-3)*X(2*K-3)+4*RM(2*K-2)*X(2*K-2)+
+ RM(2*K-1)*X(2*K-1))
PHI(2)=PSI(1)
PSI(2)=PSI(2)+HS*(RM(2*K-3)*X(2*K-3)**2+4*RM(2*K-2)*X(2*K-
2)**2+
+ RM(2*K-1)*X(2*K-1)**2)
A1(1,K)=X(2*K-1)*PHI(1)-PSI(1)
12 A1(2,K)=X(2*K-1)*PHI(2)-PSI(2)
DO 13 K=2,17
DO 13 L=1,2
PHI(L+2)=PHI(L+2)+HS*(A1(L,2*K-3)/P(2*K-3)+4*A1(L,2*K-2)/P(2*K-
2)+
+ A1(L,2*K-1)/P(2*K-1))*2
PSI(L+2)=PSI(L+2)+HS*(A1(L,2*K-3)*X(4*K-7)/P(2*K-3)+4*A1(L,2*K-
2)*
+ X(4*K-5)/P(2*K-2)+A1(L,2*K-1)*X(4*K-3)/P(2*K-1))*2
13 A2(L,K)=X(4*K-3)*PHI(L+2)-PSI(L+2)
DO 15 K=2,9
K1=2*K-1
K2=8*K-7
DO 15 L=1,2
PHI(L+4)=PHI(L+4)+HS*4*(A2(L,K1-2)*RM(K2-8)+4*A2(L,K1-1)*RM(K2-
4)+
+ A2(L,K1)*RM(K2))
PSI(L+4)=PSI(L+4)+HS*4*(A2(L,K1-2)*RM(K2-8)*X(K2-8)+4*A2(L,K1-
1)*
* RM(K2-4)*X(K2-4)+A2(L,K1)*RM(K2)*X(K2))
15 A3(L,K)=X(K2)*PHI(L+4)-PSI(L+4)
IF(I.EQ.NN) GO TO 1
DO 22 L=1,2
RES(2*L+NC-1,I2-1)=A2(L,17)
22 RES(2*L+NC,I2-1)=PHI(L+2)*IZ
1 CONTINUE
K0=0
IF (NC.EQ.4) K0=8
DO 21 L=1,2
C(K0+2*L-1)=PHI(L)
C(K0+2*L+3)=PHI(L+4)
C(K0+2*L)=A1(L,33)
21 C(K0+2*L+4)=A3(L,9)
IF (NC.EQ.4) GO TO 400
NC=4
GO TO 300
400 CONTINUE
C
RETURN
END
9 4 0.1 0.7 0.7 0.1 2 4 6 8 0.5 0.1 0.1 0.5 5.0 5.0 5.0 5.0
1.0
T T T T T F F F F F F F F
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0
9 узлов сетки (внутренних); 4 осциллятора в точках 0.2, 0.4, 0.6, 0.8 (в узлах
сетки 2,4,6,8);
массы осцилляторов 0.1, 0.7, 0.7, 0.1; длины маятников 0.5, 0.1, 0.1, 0.5; все
частоты осцилляторов 5.0; 1.0 – длина балки; задано вычисление первых 5
собственных векторов; EIx=1.0, m=1.0.
Результаты расчётов выводятся в файл NPRINT.TXT:
Собственные значения
7.31131789589302 4.89765150419362 4.95750391421884
16.1299707138881 605.642800363516 5830.65011986420
22582.0326307211 64182.0596789651 99367.0338773141
127791.264678367 233093.008250763 631493.946621226
529623.767121834
Собственный вектор для собственного значения 7.31131789589302
0.795000826849218 0.640941416253731 0.487490299660608
0.335633562016032 0.187398423058199 4.366189971743932E-
002
-9.587057646058801E-002 -0.231538411451199 -0.365453962135673
3.369934246464789E-002 -0.399937445345317 -3.217839134308337E-
002
0.971908024014519
Собственный вектор для собственного значения 4.89765150419362
0.000000000000000E+000 0.000000000000000E+000
0.000000000000000E+000
0.000000000000000E+000 0.122470564544143 9.358171089709458E-
002
6.350394994670142E-002 3.140519240473105E-002 -2.153769719704657E-
003
-3.678960063854425E-002 -7.227104885998714E-002 -0.108420434603670
-0.144847592142297
Собственный вектор для собственного значения 4.95750391421884
1.00000000000000 -7.720950168562143E-002 -2.248612849033350E-
002
29
-0.233938031546200 0.000000000000000E+000
0.000000000000000E+000
0.000000000000000E+000 0.000000000000000E+000 0.211759596798350
0.160095033522093 0.108073793233255 5.548625311846402E-
002
2.138350668534739E-003
Собственный вектор для собственного значения 16.1299707138881
-5.143197952677386E-002 -0.103416228127072 -0.153092913383950
-0.201716633750129 0.280692232944854 0.314343978850043
-0.468756757736488 0.766013254547328
0.000000000000000E+000
0.000000000000000E+000 0.000000000000000E+000
0.000000000000000E+000
-1.27314274874581
Собственный вектор для собственного значения 605.642800363516
-1.07787003331314 -0.882784975548790 -0.688942811938038
-0.497212243266451 -0.307401796405086 -0.119748826352698
6.711488278849778E-002 0.253260011594538 0.336641227915767
0.222114329985733 0.345311459331673 0.719373833473059
0.000000000000000E+000
Таблица 2.
№ λ=0.372195 λ=0.385824
N=99 N=9 N=99 N=9
1 1.000000 1.000000 0.470687 0.463
2 -0.6630089E-1 -0.665 0.383055 0.38301
3 -0.477738E-2 -0.49 -0.608918 -0.608
4 -0.308042 -0.307 1.000000 1.000000
№ λ=0.546754 λ=1.26522
N=99 N=9 N=99 N=9
1 0.188009 0.18 0.422319 0.43
2 -0.470454 -0.469 0.287537 0.29
3 -0.248762E-1 -0.241E-1 0.462628 0.47
4 1.000000 1.000000 1.000000 1.000000
Заключение.
По поводу получения полных версий описанных программ
обращайтесь по электронному адресу: algazinsd@mail.ru или на
адрес Института проблем механики РАН, 119526, Москва, проспект
Вернадского д.101, к.1.
Литература.
1. Алгазин С. Д. Численные алгоритмы без насыщения в
классических задачах математической физики. М.: Научный
Мир, 2002, 155 стр.
2. Алгазин С. Д. Численное исследование резонансов в
некоторых сложных колебательных системах // Изв. АН
СССР, Мех. тв. тела, № 3, 1991, с. 155-159.
3. Алгазин С. Д. Численные алгоритмы классической матфизики.
IX. Численное исследование свободных колебаний стержня с
осцилляторами. ИПМех РАН, препринт № 755, 2004 г., 31 с.
32
Оглавление
ЧИСЛЕННЫЕ АЛГОРИТМЫ КЛАССИЧЕСКОЙ ........................................... 1
Введение. ...................................................................................................................... 3
§1. Постановка задачи. ................................................................................................ 3
1). О силах действующих на балку со стороны штанги с грузом. ...................... 4
2). Геометрические соотношения. .......................................................................... 4
3). Уравнение движения осциллятора вокруг точки прикрепления. .................. 5
4). Уравнения свободных колебаний балки с осцилляторами. ........................... 5
§2. Интегральное уравнение. ...................................................................................... 7
§3. Структура конечномерной задачи. ....................................................................... 9
§4. Описание программы. ......................................................................................... 17
§5. Текст программы.................................................................................................. 19
§6. Примеры задания данных. .................................................................................. 29
§7. Результаты численных расчётов......................................................................... 30
Заключение. ................................................................................................................ 32
Литература. ................................................................................................................. 32
33