informatika / инфа / ustojchivost_szhatogo_sterzhnja_i / Занятие 3 - Устойчивость сжатого стержня
.docУстойчивость сжатого стержня
Уравнения изгиба центральной линии стержня:
-
(1)
Если разбить балку на дискретные интервалы длины точками
и аппроксимировать 2-ю производную, то получаем:
-
(2)
Данная линейная система с учётом краевых условий имеет вид:
-
,
(3)
где
,
трех диагональная матрица размерности и диагональная матрица :
.
Из теории известно, что для уравнения (3) существует ненулевое значение и соответствующий вектор
Для того, чтобы определить минимальную силу , при которой стержень сгибается (теряет устойчивость), необходимо решить полную задачу на собственные значения (3). При численном решении существенно упрощает задачу диагональный вид матрицы .
Задаётся , где - номер группы, а - номер студента по журналу. При и , представлено решение задачи : минимальная сила и определён соответствующий собственный вектор (прогиб по первой форме).
Программа на QBASIC 4.5:
'*************** EigSter.bas 132 str.*******************************
CLS
e1 = 1E-08
n0 = 20
n1 = (n0 + 1) * n0 / 2
'
DIM aa(n0, n0), bb(n0, n0), cc(n0, n0), EigVec(n0, n0)
DIM Eig(n0), dl(n0), a0(n1)
'
S = 3 : G = 12
REM ************** Obnulenie *************************
FOR i = 1 TO n0
Eig(i) = 0
FOR j = 1 TO n0
EigVec(i, j) = 0!: aa(i, j) = 0!: bb(i, j) = 0!
NEXT j: NEXT i
REM ************ Nachal. ustanovki *******************
n = 7
dl0 = 1!: h = dl0 / (n + 1)
Tol = e1
FOR i = 1 TO n
x = h * i
FOR j = 1 TO n
bb(i, j) = 0!: aa(i, j) = 0!
IF ABS(i - j) = 1 THEN aa(i, j) = -1!
aa(i, i) = 2!
bb(i, i) = 1! / ((((G + S) / 2) * x * (dl0 - x)) / h / h)
NEXT j
NEXT i
REM
REM ******************* MODIF REDAC1 ***************************
FOR i = 1 TO n
dl(i) = SQR(bb(i, i))
NEXT i
REM //
FOR i = 1 TO n
FOR j = i TO n
aa(j, i) = aa(i, j) / dl(i)
NEXT j
NEXT i
REM //
FOR j = 1 TO n
FOR i = j TO n
aa(i, j) = aa(i, j) / dl(i)
NEXT i
NEXT j
REM *** end MODIF Redac1 ******
'
'***************** For SobstvZnach *****************
FOR i = 1 TO n
FOR j = 1 TO i
a0(j + i * (i - 1) / 2) = aa(i, j)
NEXT j: NEXT i
'****************************************************
'
REM ******** SobstvZnach ***********
'
w = n * (n + 1) / 2
v = w + n
h = 0: k = n
REM //
FOR bt = 1 TO k
REM ****************
FOR i = 1 TO n
a0(w + i) = 1
NEXT i
f = 0
m0 = 0
70 FOR i = 1 TO n
a0(v + i) = 0
FOR j = 1 TO i
a0(v + i) = a0(v + i) + a0(i * (i - 1) / 2 + j) * a0(w + j)
NEXT j
NEXT i
m0 = m0 + 1
REM //
FOR j = 1 TO n - 1
FOR i = j + 1 TO n
a0(v + j) = a0(v + j) + a0((i * (i - 1)) / 2 + j) * a0(w + i)
NEXT i
NEXT j
REM //
p = 0: r = 0
FOR i = 1 TO n
p = p + a0(v + i) * a0(v + i)
r = r + a0(w + i) * a0(v + i)
NEXT i
L = p / r: c = SQR(p): p = 0
FOR i = 1 TO n
a0(w + i) = a0(v + i) / c
IF ABS(a0(w + i)) >= p THEN
p = ABS(a0(w + i))
END IF
NEXT i
IF m0 > 1500 THEN 90
IF ABS(p - f) > e1 THEN
f = p: GOTO 70
END IF
Eig(bt) = L
FOR i = 1 TO n: EigVec(bt, i) = a0(w + i): NEXT i
IF bt = k THEN 80
FOR i = 1 TO n
FOR j = 1 TO i
d = i * (i - 1) / 2 + j
a0(d) = a0(d) - L * a0(w + i) * a0(w + j)
NEXT j
NEXT i
NEXT bt
90 REM
REM ***************End SobstvZnach*******************
'
80 REM
FOR k = 1 TO n
FOR i = 1 TO n
EigVec(k, i) = EigVec(k, i) / dl(i)
NEXT i
NEXT k
'
'************ Normirovka ******************************************
FOR m = 1 TO n
h1 = 0!
FOR i = 1 TO n: h1 = h1 + (EigVec(m, i)) ^ 2: NEXT i
h1 = SQR(h1)
FOR i = 1 TO n: EigVec(m, i) = EigVec(m, i) / h1: NEXT i
NEXT m
'***************************************************************
FOR m = 1 TO n
PRINT " m = "; m; " Sobstv znach = "; Eig(m)
FOR i = 1 TO n: PRINT " ", EigVec(m, i); " ": NEXT i
Pause$ = INPUT$(1) ' Wait for a keystroke.
NEXT m
END
Результаты работы программы
m = 1 Sobstv znach = 420
3.289761E-02 -.1973856 .4934638 -.6579516 .4934638 -.1973856 3.289761E-02
m = 2 Sobstv znach = 314.9999
-.109108 .4364337 -.5455446 2.038468E-06 .545545 -.4364378 .1091099
m = 3 Sobstv znach = 225
.2375962 -.5430779 3.394526E-02 .5430755 3.393878E-02 -.5430727 .2375949
m = 4 Sobstv znach = 150
.384175 -.3292928 -.4939392 -5.901333E-08 .4939391 .3292928 -.3841749
m = 5 Sobstv znach = 90
.4719397 .1348402 -.3370999 -.5393602 -.3370999 .1348402 .4719399
m = 6 Sobstv znach = 15
.211829 .3631355 .4539202 .4841823 .4539204 .3631381 .2118303
m = 7 Sobstv znach = 45
.4213507 .4815436 .3009649 2.970834E-07 -.3009644 -.4815432 -.4213503