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

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

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

С. Д. Алгазин

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


МАТФИЗИКИ.

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


балки с осцилляторами.

Препринт № 773

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

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


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

The abstract.

The problem about free oscillations of a beam with oscillators is


considered. It appears that in this vibratory system parametric resonances
are possible. Programs on a FORTRAN and instances of account of
eigenvalues and eigenfunctions are reduced.

Работа выполнена при финансовой поддержке Российского


фонда фундаментальных исследований. Проект № 05-01-00250.

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

2
Введение.

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


решение соответствующих уравнений гладкие функции. Но
некоторые задачи математической физики приводят к задачам на
собственные значения с кусочно-гладкими функциями (см. ниже). В
этой работе результаты [1] обобщаются на задачи с кусочно-
гладкими функциями. Приведены программы на Фортране. Оценка
погрешности предложенного метода приведена в [2]. Продольные
колебания стержня рассмотрены в [3]. В этом препринте
рассматриваются поперечные колебания балки с осцилляторами.
§1. Постановка задачи.
Рассмотрим балку (0≤ x ≤ a) со свободными концами к которой
в точках x=xk , k=1,2,…,n на невесомых штангах (в начальный
момент параллельных оси балки) длины lk прикреплены
сосредоточенные массы mk (осцилляторы), но так, что при
отклонении штанги с грузом на малый угол φ относительно
касательной к оси балки в точке подвеса, возникает момент
пропорциональный углу поворота с коэффициентом ck и
стремящийся вернуть груз в исходное положение.
Будем считать штанги с грузами твёрдыми телами, а балку
упругой с жёсткостью на изгиб EIx(x) и погонной массой m(x). Также
будем считать колебания бесконечно малыми, так что
сосредоточенные грузы совершают колебания в плоскости
перпендикулярной нейтральной оси балки.
Выведем уравнения свободных колебаний этой механической
системы.

3
1). О силах действующих на балку со стороны штанги с
грузом.

Если угол φ мал, так что величинами φ2 мы пренебрегаем, то


sinφ ≈ φ, cosφ ≈1 и, следовательно, груз совершает колебания в
плоскости перпендикулярной нейтральной оси балки. Таким
образом, сила реакции действующая на балку в точке прикрепления
x=xk направлена перпендикулярно оси балки.
Итак, на балку действует нагрузка
(1.1) f(x,t)=Mδ’(x-x0)+Rδ(x-x0)
Относительно момента M мы предполагаем, что момент –M,
действующий на штангу с грузом, пропорционален углу, который
составляет штанга с касательной к нейтральной оси в точке подвеса
и направлен так, что стремится вернуть груз в исходное положение.
Если обозначить v(x) прогиб, то уравнение изгиба балки
принимает вид:
(EIxv”)”= Mδ’(x-x0)+Rδ(x-x0)
В динамическое уравнение балки нужно добавить силы
инерции. Тогда получаем
∂2  ∂ 2v  ∂ 2v
(1.2)  EI x 2  + m( x) 2 = Rδ ( x − x0 ) + Mδ ′( x − x0 ) ,
∂x 2  ∂x  ∂t

где m=m(x) – погонная масса.


2). Геометрические соотношения.

Пусть z0 – амплитуда осциллятора, т. е. расстояние массы от


оси x (нейтральной оси балки в первоначальном состоянии); y0 –
амплитуда точки подвеса.

Система координат Осциллятор слева Осциллятор справа

Фиг. 1
Тогда для правого расположения осциллятора
4
z − y0
= sin ϕ ≈ ϕ , z0 = y0 + l0ϕ ;
l0

Для левого расположения осциллятора


z − y0
= sin(π − ϕ ) = sin ϕ ≈ ϕ , z0 = y0 + l0ϕ ;
l0

Учитывая знак φ (положительное направление φ


отсчитывается против часовой стрелки Фиг. 1) →
(1.3) z0=y0  l0φ, “+” осциллятор слева, “-“ осциллятор справа.
3). Уравнение движения осциллятора вокруг точки
прикрепления.

m0l02ϕ = − M ± m0 y0l0

-M ~ момент сил действующих со стороны балки на осциллятор;


± m0 y0l0 ~ момент сил инерции относительно точки x=x0 (“+”
осциллятор справа, “-“ осциллятор слева); Если y0 > 0, то сила
инерции направлена вверх и создаёт положительный момент для
правого расположения осциллятора и отрицательный момент для
левого расположения осциллятора.
Далее из (1.3) получаем

z0 = y0  l0ϕ ⇒ − m0 y0l0 = −m0 z0l0  m0l02ϕ,

m0 z0 = − R ~ уравнение движения центра масс. Следовательно,


имеем для левого расположения осциллятора

m0l02ϕ = − M + Rl0 + m0l02ϕ ⇒ M = Rl0 ;

Для правого расположения осциллятора знак


противоположный

(1.4) M =  Rl0

“-“ ~ осциллятор справа, “+” ~ осциллятор слева.

4). Уравнения свободных колебаний балки с


осцилляторами.

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

Из уравнения движения осциллятора m0 z0 = − R получаем

уравнение свободных колебаний осциллятора:



(1.5) − λz0 = −λ0 ( z0 − y0  l0 y′( x0 )), λ0 =
m0l02

Выведем уравнения свободных колебаний балки:


d2  d2y 
(1.6)  EI x 2  = λmy + Rδ ( x − x0 ) + Mδ ′( x − x0 ) ,
dx 2  dx 

Rδ ( x − x0 ) + Mδ ′( x − x0 ) = R{δ ( x − x0 )  l0δ ′( x − x0 )} =

= ( 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

(1.8) − λz k = λk ( yk − z k + lk yk′ ), k = 1,2,..., n


Здесь lk > 0, если осциллятор находится справа и lk < 0 если он
находится слева;
(1.9) EI x y′′ x=0,a = 0

(1.10) (EI x y′′)′ =0


x =0 ,a

Уравнения (1.4)-(1.10) суть искомая постановка задачи


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

6
§2. Интегральное уравнение.

Обозначим p(x)≡EIx . Условия разрешимости уравнения (1.7)


a
(2.1) λ ∫ m(ξ ) y (ξ )dξ + λ ∑ mk z k = 0
0 k

(∑<сил> приложенных к балке равна нулю)


a
(2.2) λ ∫ ξm(ξ ) y (ξ )dξ + λ ∑ mk z k ( xk + lk ) = 0
0 k

(∑<моментов> приложенных к балке равна нулю)


Введём в рассмотрение функцию Грина U€( x, ξ ) как решение
задачи:
d2 d2 
(2.3) p ( x ) U(x ξ,) + c 0 (ξ ) + xc1 (ξ ) =δ ( x − ξ )
dx 2 dx 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 

Функции с0 (ξ ) и с1 (ξ ) выберем так, чтобы система


приложенных к балке сил была равновесной.
Итак, имеем две упругие системы (1.7)-(1.10) и (2.3)-(2.7). По
теореме взаимности Бетти получаем интегральное представление
решения:

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

Константы с1 и с2 выберем так, чтобы выполнялись условия


разрешимости (2.1), (2.2). Таким образом, имеем два соотношения
a n
для определения с1 и с2: ∫ m( x)(c2 x + c1 )dx = −∑ mk z k ≡ f1 ,
0 k =1

a n

∫ xm( x)(c2 x + c1 )dx = −∑ mk zk ( xk + lk ) ≡ f 2 ⇒


0 k =1

 α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 го− осциллятора ;

(2.10) − λz k = λk ( yk − z k + lk yk′ ), k = 1,2,..., n;


Итак, для определения амплитуд y(x),z1,…,zn – имеем систему
интегро-алгебраических уравнений (2.9)-(2.10).

8
§3. Структура конечномерной задачи.

Дифференцированием соотношения (2.9) получаем


дополнительные соотношения для y′(x) :
n n a
− β 21 ∑ mk zk − β 22 ∑ mk zk ( xk* + lk ) + λ ∫ U x′ ( x, ξ )m(ξ ) y (ξ )d ξ +
y′( x) =
=k 1=k 1
(3.1) n
0

+ λ ∑ mk zk (U x′ ( x, xk* ) + lkU ξ′′x ( x, xk* ))


k =1

Вычисляя интегральные слагаемые в (2.9) и (3.1) по


квадратурной формуле [3] получим конечномерную задачу вида:
Y  Y 
   
E  Y ′  = λ D Y ′ 
z  z 
   

Здесь Y = ( y ( x1 ), ... , y ( x N )′ - вектор значений собственной


функции в узлах интерполяции; Y ′ = ( y′( x1* ), ... , y′( xn* ))′ - вектор
значений в точках крепления осцилляторов значений производной
y′( x); z = ( z1 , ... , z n )′.

 (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)

β pk = ( β 21 x p + β11 )mk + ( β 22 x p + β12 )mk ( xk* + lk ),


(т. к. β 21 =β12 ) =β12 ( x p + xk* )mk + β11mk + β 22 x p xk* mk + β 22 x p mk lk + β12 mk lk

9
(3.4)

β * − матрица n × n c одинаковыми столбцами β 21mk + β 22 mk ( xk* + lk ), k = 1,2,..., n

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


месте j(k) стоит –λk , а остальные элементы в этой строке
нулевые ( j(k) – целая функция, которая номеру осциллятора k
ставит в соответствие номер узла сетки);

(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 

(3.9) A – матрица размера N×N, Apk = ckU ( x p , xk ) - где U - функция


Грина, сk – коэффициенты квадратурной формулы [3];
N×n, U p k mk (U ( x p , xk* ) + lkU ξ′ ( x p , xk* )). Здесь
(3.10) U- матрица размера=

xk* - точки крепления осцилляторов, U ξ′ − производная

функции Грина по второму аргументу;


(3.11) Ax- матрица размера n×N, Axpk = ckU x′ ( x*p , xk ). Здесь x*p - точки
крепления осцилляторов; U x′ - производная функции Грина по первому
аргументу;
n×n, U xp k mk (U x′ ( x*p , xk* ) + lkU ξ′′x ( x*p , xk* )), где U ξ′′x -
(3.12) Ux- матрица размера=
вторая производная функции Грина;
Таким образом, требуются подпрограммы для вычисления
функции Грина U и её производных U x ,иUU
ξ
 .
ξx

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

C(5-8) – K11, K12, K21, K22 (константы из которых строится матрица A );


FM и EJ – имена подпрограмм функций, вызываемых внутри подпрограммы.
Они должны
быть описаны оператором EXTERNAL;

1
Подпрограмма написана Пестеревым А. В.
11
Далее вычисляем ещё три константы: J0=aα12 – α22; JL=a(aα11-α12)-
α22=aSL-α22; W = −(α122 − α11 J 0 );

Вводим 4 оператор функции (функции формулы):


l1 ( x) = α12 x − J 0 ;
l2 ( x) = α12 − α11 x;
l1L ( x) = S L x − J L ;
l2L ( x) = S L − α11 x;

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

Теперь всё готово для построения функции U€( x, ξ ). Строим 2


вектора длины 4 по формулам:
f1 ( x) = [l1L ( L − x), l2L ( L − x), K1x ( x), K 2 x ( x)]; f 2 (ξ ) = [l1 (ξ ), l2 (ξ ), K1ξ (ξ ), K 2ξ (ξ )]

Примечание. Для построения матрицы Apk по формуле (3.9)


нужно вычислять функцию U ( x, ξ ) в узлах сетки, т.е. когда x и ξ
пробегают узлы сетки. Тогда соответствующие значения K1x(x),
K2x(x) и K1ξ(ξ), K2ξ(ξ) выбираются из массива RES.
Пусть f1j; f2j, j=1,2,3,4 – компоненты векторов f1 и f2, тогда:
  f11 
  
( f , f =   f12  ( f (ξ ), Af
 ( x)), x ≤ ξ
22 , f 23 , f 24 ) A
 21
 f13  2 1

  
  f14 
(3.13) U ( x, ξ ) = 
  f11 
  
f12
( f 21 , f 22=, f 23 , f 24 ) A   ( f 2 ( x), Af
  (ξ )), x ≥ ξ
  f13  1

  
  f14 

Рассмотрим теперь построение производных функции U ( x, ξ ).


Для этого нужно дифференцировать функцию (3.13), т. е. для

12
построения U ξ′ ( x, ξ ) нужно в формулу (3.13) подставить вместо
f 2 (ξ ) → f 2′(ξ ) :
f 2′(ξ ) = (α12 ,−α11 , K1′ξ (ξ ), K 2′ξ (ξ ))

(3.14)
выбираются из
массива RES

Для построения U€x′ ( x, ξ ) нужно в формулу (3.13) подставить вместо

f1 ( x) → f1′( x)
f1′( x) = (α12 ,−α11 , K1′x ( x), K 2′ x ( x))

(3.15)
выбираются из
массива RES

Для построения U ξ′′x ( x, ξ ) нужно в формулу (3.13) подставить вместо

f 2 (ξ ) → f 2′(ξ ) , и вместо f1 ( x) → f1′( x) (см. (3.14) и (3.15)).


Матрицы U, Ax и Ux вычисляются с использованием построенных
функций Грина.
После того как матрицы E и D выписаны, заметим, что матрица E
устроена аналогично матрице E для продольных колебаний стержня [3], и,
следовательно, может быть обращена аналитически. Из [3] следует, что нужно
обратить матрицу (Λ-J*m*), где

 β 
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)

  (3)  (2) λ12  (1) λ12


 β = β − 1 + λ β Q = ( β 22 ( x p + l p ) + β12 − 1 + λ ( β 21 ( x p + l p ) + β11 ))mk ( xk + lk )
* * *

 1 1

 Легко видеть, что β матрица того же вида, что и β (1) и β (2) , т. е.


 (3)

  (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 

Переставляя 2-ой и 3-ий столбец, для сохранения подобия нужно


переставит 2-ую и 3-ю строки. В результате получаем:
 ( I N + βΛ * J ) A − βΛ
 * LΛA ( I + βΛ * J )U − βΛ * LΛU − βΛ
*
 
x N x

(3.26) E −1 D=  − Λ  * JA + Λ  * LΛA −Λ * JU + Λ  * LΛU + Λ * 


x x
 Ax Ux 
 

Нулевой последний столбец не выписан. Собственный вектор этой


матрицы (Y z Y ′)′ - т. е. в левом верхнем углу стоит искомая блочная матрица

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.

Квадратурная формула описана в [3], там же описаны


COMMON блоки.
§4. Описание программы.

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


будет осуществляться ввод / вывод информации, спецификацию
оператора FORMAT для печати, признак расчёта сетки IPR:
READ (*,*) NONLIN,NOUT,NPRINT,NREAD,FORM,IPR

Рекомендованы значения: NONLIN=1 (по этому каналу


сохраняется в бесформатном виде матрица дискретной задачи);
NOUT=7 (канал промежуточных выдач); NPRINT=6 (канал печати);
NREAD =8 (канал для ввода данных); FORM = ‘(1x,4G18.11)’,

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,*) ADLB


1.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

Примечание. 1. SELECT – логический массив длины N+NN.


Выбор собственных значений, для которых нужно вычислять
собственные векторы. В примере задано вычисление первых 5
собственных векторов.
2. После 32 метки нужно изменить оператор IF(I.EQ.5) THEN
на то значение собственный вектор, который хотим сохранить в
файле EXAMPL.DAT;
WRITE (10,*) 'ZONE I=9 F=POINT'
9– число узлов сетки (N), для другой сетки его нужно изменить;
WRITE (10,*) 'TEXT X=10 Y=90 T="Eigenvalue 605.6428"'

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

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


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

§6. Примеры задания данных.


NREAD.TXT

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

§7. Результаты численных расчётов.


В конкретных расчётах, выписанные выше уравнения, приводились к
безразмерной форме. За характерную массу и длину принималась масса балки
без осцилляторов и длина балки. За характерное время принималась величина
1/Wmax , где Wmax – характерная частота в герцах (конец расчётного диапазона).
Расчёты проводились как с методической целью, так и с целью исследования
возникновения параметрического резонанса в этой сложной колебательной
системе.
А). В качестве 1-го примера рассматривалась стальная балка круглого
сечения:
E=2,1×106 кг/см2; ρ=7,8/981 г·сек2/см4;a=10 м;R=0.1 м. В это м и других
примерах этого параграфа расчётный диапазон принимался равным от 0 до 30
герц, т.е. характерное время 1/30 сек.
Итак, получаем следующие безразмерные значения входящих в
уравнение параметров: EIx=0.0293461; m=1.0. В результате вычислений
получаем безразмерное значение квадрата круговой частоты системы
λ=(2πw/wmax)2.
В этом примере 4 осциллятора подвешены в точках x1=0.2; x2=0.4;
x3=0.6; x4=0.8; с массами: m1=0.1; m2=0.7; m3=0.7; m4=0.1; на штангах длиной
l1=0.5; l2=0.1; l3=0.1; l4=0.5; Все частоты осцилляторов одинаковы: λ1= λ2= λ3=
λ4=π2/25=0.3948, т. е. 3 гц.
30
В таблице 1 приведены безразмерные значения квадратов круговой
частоты. В последней колонке (99 точек в расчётной сетке) приведены 6
значащих цифр, а в остальных колонках приведены соответствующим образом
округлённые собственные значения. Аналогично приводятся результаты и в
следующих таблицах. В таблице 2 приведены значения амплитуд осцилляторов
для расчёта соответствующего таблице 1.
Таблица 1.
№ N=9 N=19 N=39 N=79 N=99
1 0.3724 0.37224 0.37220 0.372196 0.372195
2 0.385826 0.385825 0.385825 0.385824 0.385824
3 0.5476 0.546973 0.54680 0.546760 0.546754
4 1.267 1.2656 1.2653 1.26522 1.26522
5 19. 17. 17. 16.82 16.8000
6 129. 121. 116. 114.8 114.620
7 665. 504. 451. 436. 434.111
8 1817. 1427. 1247. 1194. 1187.46

Таблица 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

Б). В качестве второго численного примера рассматривалась круглая


балка переменного сечения: E=2,1×106 кг/см2; ρ=7,8/981 г·сек2/см4; a=10
м(a=a1+a2+a3);a1 =a3 =3 м; a2=4м; R=0.1 м. Расчётный диапазон тот же, что в
примере А. Безразмерное значен6ие жёсткости на изгиб суть 0.0293461 на 1-ом
31
и 3-ем участках и 2.25 на втором участке. Безразмерное значение массы
0.666666 на 1-о м и 3-ем участках и 1.5 на втором участке. Расположение
осцилляторов, их массы, а также длины штанг те же, что и в примере А, но
безразмерные частоты осцилляторов другие: λ1= λ2= λ3= λ4=100π=986.9600 т. е.
размерное значение 150 гц. В таблице 3 приведены результаты расчётов
собственных значений.
Таблица 3.
№ N=9 N=19 N=39 N=79 N=99
1 11.3 11.0 10.93 10.906 10.9030
2 22.51 22.49 22.46 22.456 22.4547
3 340.7 339.737
4 398. 396.732
5 1068. 1066.44
6 2632. 2639.62
7 4820.27
8 9162.91

Заключение.
По поводу получения полных версий описанных программ
обращайтесь по электронному адресу: 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

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

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

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


с осцилляторами

Подписано к печати 26.01.2005. Заказ № 49-2005. Тираж 50 экз.


________________________________________________________

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


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

33