材料力学剪力图弯矩图绘制(有详细的程序)
说明: 输入变量: 分段数组x
分段点一般在集中力,集中力偶作用出和分布载荷的起末端。 载荷数组MPQ
若梁上的外载荷总数为PN,则用PN行四列的数组MPQ储存载荷,数组MPQ第一列代表载荷的类型:1为集中力偶,2为集中力,3为分布载荷,第二列代表载荷的大小,第三列代表集中力,集中力偶或者分布载荷左端与简支梁左端的距离,第四列代表均匀载荷右端与简支梁左端的距离,当载荷为集中力或者集中力偶时,第四列为0. 符号规定
集中力和均匀载荷向下为正,向上为负,集中力偶顺时针为正,逆时针为负。
输出变量: 内力数组XQM
如果梁被分为NN-1段,则内力数组XQM为NN行,三列的数组,第一列代表梁的横截面的位置,第二列代表剪力,第三列代表弯矩。 剪力极值及位置QDX
QDX是一个二行二列的数组,第一列代表极值所在的位置,第二列代表极值 弯矩极值及位置MDX
MDX是一个二行二列的数组,第一列代表极值所在的位置,第二列代表极值
1.子程序
1.1集中力偶对弯矩贡献的子函数QMM 1.2集中力对剪力和弯矩贡献的子函数QMP 1.3分布载荷对剪力和弯矩贡献的子函数QMQ 1.4求剪力和弯矩极值的子函数MAX_MIN 1.5绘制剪力图和弯矩图的子函数TU_QM
2.计算分析程序
2.1简支梁QMDJ
2.2左端固定悬臂梁QMDXZ 2.3右端固定悬臂梁QMDXY 2.4左端外伸梁QMDWZ 2.5右端外伸梁QMDWY 2.6两端外伸梁QMDWL
1
1.子程序
1.1集中力偶对弯矩贡献的子函数QMM function MM=QMM(n,x1,a,M,MM) for j=1:n
if x1(j)==a n1=j; end end
MM(n1:n)=MM(n1:n)+M;
1.2集中力对剪力和弯矩贡献的子函数QMP function [QQ,MM]=QMP(n,x1,b,P,QQ,MM) for j=1:n
if x1(j)==b; n1=j; end end
QQ(n1:n)=QQ(n1:n)-P;
MM(n1:n)=MM(n1:n)-P*(x1(n1:n)-b);
1.3分布载荷对剪力和弯矩贡献的子函数QMQ function [QQ,MM]=QMQ(n,x1,c,d,q,QQ,MM) for j=1:n
if x1(j)>c
QQ(j)=QQ(j)-q*(x1(j)-c);
MM(j)=MM(j)-0.5*q*(x1(j)-c)^2; end
if x1(j)>d
QQ(j)=QQ(j)+q*(x1(j)-d);
MM(j)=MM(j)+0.5*q*(x1(j)-d)^2; end end
1.4求剪力和弯矩极值的子函数MAX_MIN
function [QDX,MDX,XQM]=MAX_MIN(x1,QQ,MM) XQM=[x1',QQ',MM']; [Qmax,i]=max(QQ); Q1=[Qmax,x1(i)]; [Qmin,i]=min(QQ); Q2=[Qmin,x1(i)]; [Mmax,i]=max(MM); M1=[Mmax,x1(i)]; [Mmin,i]=min(MM);
2
M2=[Mmin,x1(i)];
disp('剪力极值及位置') QDX=[Q1;Q2]
disp('弯矩极值及位置') MDX=[M1;M2]
t1=findobj(0,'Tag','text31'); str=num2str(Q1(1)); set(t1,'String',str);
t2=findobj(0,'Tag','text39'); str=num2str(Q1(2)); set(t2,'String',str);
t3=findobj(0,'Tag','text32'); str=num2str(Q2(1)); set(t3,'String',str);
t4=findobj(0,'Tag','text40'); str=num2str(Q2(2)); set(t4,'String',str);
m1=findobj(0,'Tag','text33'); str=num2str(M1(1)); set(m1,'String',str);
m2=findobj(0,'Tag','text41'); str=num2str(M1(2)); set(m2,'String',str);
m3=findobj(0,'Tag','text34'); str=num2str(M2(1)); set(m3,'String',str);
m4=findobj(0,'Tag','text42'); str=num2str(M2(2)); set(m4,'String',str);
1.5绘制剪力图和弯矩图的子函数TU_QM function TU_QM(x1,QQ,MM) h1=findobj(0,'Tag','axes1'); axes(h1); plot(x1,QQ); grid;
title('剪力图');
h2=findobj(0,'Tag','axes2'); axes(h2); plot(x1,MM); grid;
title('弯矩图');
3
2.计算分析程序
2.1简支梁QMDJ
function XQM=QMDJ(x,MPQ) [n,m]=size(x); L=x(m); x1=[];
for i=1:m-1
x1=[x1,linspace(x(i),x(i+1),50)]; end
MM=zeros(size(x1)); QQ=zeros(size(x1)); [m,t]=size(MPQ); [t,n]=size(x1); for i=1:m
switch MPQ(i,1) case 1
M=MPQ(i,2); a=MPQ(i,3); RA=-M/L; QQ=QQ+RA;
MM=MM+RA*x1; if a>0 & a MM=QMM(n,x1,a,M,MM); end if a==0 MM=MM+M; end case 2 P=MPQ(i,2); b=MPQ(i,3); RA=(L-b)*P/L; if b>0 & b MM=MM+RA*x1; [QQ,MM]=QMP(n,x1,b,P,QQ,MM); end case 3 q=MPQ(i,2); c=MPQ(i,3); d=MPQ(i,4); RA=(L-0.5*(c+d))*q*(d-c)/L; QQ=QQ+RA; MM=MM+RA*x1+MA; 4

