informatika / инфа / progib_szhato-izognutogo_sterzhnja / Занятие 1 - Прогиб сжато-изогнутого стержня
.docПрогиб сжато – изогнутого стержня
Уравнение изгиба центральной линии балки:
Если обозначить и , аппроксимируя 2-ю производную по на сетке с постоянным шагом , получаем следующую систему линейных уравнений:
где , .
, где s – номер студента по журналу, g - номер группы. |
Как правило, рассматривается более общий вид этой 3-х диагональной линейной системы и так как всю матрицу запоминать не надо, оперируют только с тремя одномерными массивами :
Если записать данную систему в каноническом виде:
Решение ищется по рекуррентной формуле обратного хода:
,
что позволяет получить для прямого хода выражения:
,
,
.
Данный метод называется прогонкой и является вариантом метода исключения Гаусса.
Алгоритм реализован на QBasic 4.5 при заданном G – номер группы и - номере студента по журналу.
5 CLS
10 G = 3: S = 12: L = 1: N = 9
20 H = 1! / (N - 1): C0 = (G + S) / 25
25 DIM P(N), F(N), A(N), B(N), C(N), D(N)
30 FOR I = 1 TO N: X = H * (I - 1)
40 P(I) = -S / (L * L + 4 * X * (L - X))
50 F(I) = -C0 * (2 - P(I) * X * (L - X))
60 NEXT I
70 B(1) = 1: C(1) = 0: B(N) = 1
75 D(1) = 0: D(N) = 0: A(1) = 0
80 FOR I = 2 TO N - 1
90 A(I) = 1: C(I) = 1: B(I) = -2 + H * H * P(I)
95 D(I) = H * H * F(I)
100 NEXT I
110 A(N - 1) = 0
120 REM ******* P R O G O N K A *******
130 W = B(1): D(1) = D(1) / W
140 FOR I = 2 TO N
150 B(I - 1) = C(I - 1) / W
160 W = B(I) - A(I - 1) * B(I - 1)
170 D(I) = (D(I) - A(I - 1) * D(I - 1)) / W
180 NEXT I
190 FOR I = 1 TO N - 1
200 D(N - I) = D(N - I) - B(N - I) * D(N - I + 1)
300 NEXT I
310 FOR I = 1 TO N: PRINT I; " "; D(I): NEXT I
Матрица A =
1.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
0.000 -2.130 1.000 0.000 0.000 0.000 0.000 0.000 0.000
0.000 1.000 -2.107 1.000 0.000 0.000 0.000 0.000 0.000
0.000 0.000 1.000 -2.097 1.000 0.000 0.000 0.000 0.000
0.000 0.000 0.000 1.000 -2.094 1.000 0.000 0.000 0.000
0.000 0.000 0.000 0.000 1.000 -2.097 1.000 0.000 0.000
0.000 0.000 0.000 0.000 0.000 1.000 -2.107 0.000 0.000
0.000 0.000 0.000 0.000 0.000 0.000 1.000 -2.130 0.000
0.000 0.000 0.000 0.000 0.000 0.000 0.000 1.000 1.000
Вектор B =
0.000 -0.027 -0.031 -0.032 -0.033 -0.032 -0.031 -0.027 0.000
Решение =
1 0.000000
2 0.065625
3 0.112500
4 0.140625
5 0.150000
6 0.140625
7 0.112500
8 0.065625
9 0.000000