Комплексный расчет элементов строительных конструкций в среде MATLAB. Карпов В.В - 47 стр.

UptoLike

Составители: 

92 93
Листинг 3.6
function btnSCHEME_Callback(hObject, eventdata, handles)
fig_graf(handles.L,handles.q,handles.ends)
Добавим кнопку с именем btnCLEAR. В функцию btnCLEAR_
Callback записываем команду cla (листинг 3.7).
Листинг 3.7
function btnCLEAR_Callback(hObject, eventdata, handles)
cla
Проверим, что эта кнопка очищает график.
Будем решать поставленную задачу методом Ритца. Алгоритм ме-
тода реализуем в функции ritz_lin_elast.m, текст которой приведён в
листинге 3.8.
Листинг 3.8
function C = ritz_lin_elast(L,E,H,q,nf,ends)
% метод Ритца для расчёта балки прямоугольного сечения
% линейно-упругая
задача
% входные параметры:
% Lдлина балки,
% H – высота поперечного сечения балки,
% E модуль упругости материала,
% q – вектор нагрузки,
% nf – число базисных функций,
% ends способ закрепления концов балки.
% выходной параметр:
% C – вектор коэффициентов разложения по базисным функциям
syms x
A = zeros(nf,nf);
B = zeros(nf,1);
% ввод базисных функций и производных базисных функций
switch ends
case 0
for k=1:nf
fi(k) = sin(k*pi*x/L);
ddfi(k) = -(k*pi/L)^2*sin(k*pi*x/L);
end
case 1
for k = 1:nf
fi(k) = x^(k+3)-2*L*x^(k+2)+L^2*x^(k+1);
ddfi(k) = (k^2+5*k+6)*x^(k+1)-2*L*(k^2+3*k+2)*x^k…
+ L^2*(k^2+k)*x^(k-1);
end
end
% вычисляем элементы матрицы системы метода Ритца
for i = 1:nf
for j = 1:nf
F = ddfi(i).*ddfi(j);
a(j) = int(F, x, 0, L);
I = H^3/12;
A(i,j) = eval(a(j))*(E*I);
end
end
% вычисляем вектор правой части системы метода Ритца
switch length(q)
case 1
fx = 'q(1)';
case 2
fx = 'q(1) + (q(2)-q(1))*x/L';
case 3
mxq = [0 L/2 L];
ps = polyfit(mxq, q, 2);
fx = 'ps(1)*L^2*(x/L)^2+ps(2)*L*(x/L) + ps(3)';
end
for i = 1:nf
pf(i) = fi(i)*fx;
b(i) = int(pf(i), x, 0, L);
B(i) = eval(b(i));
end
% решаем систему и находим вектор C
C = A\B;