哈工大 材料力学 MATLAB 梁 上机 大作业.doc_第1页
哈工大 材料力学 MATLAB 梁 上机 大作业.doc_第2页
哈工大 材料力学 MATLAB 梁 上机 大作业.doc_第3页
哈工大 材料力学 MATLAB 梁 上机 大作业.doc_第4页
哈工大 材料力学 MATLAB 梁 上机 大作业.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本程序只支持静定结构的梁(左端悬臂梁、简支梁)函数输入格式:beamsolver(L,EI,supports,loads,maxdx);参量的输入格式:L=10.0EI=2e8supports=f,0,v,10.0-左端悬臂梁supports=p,2.0,r,8.0 -简支梁loads=f,2.0,1000,m,4.0,500,d,7.0,9.0,3.0,20,100maxdx=0.01输出为V,M,vy,x的一维行向量和三张坐标图-图1:剪力V图,图2:弯矩M图,图3:挠度vy图.范例:悬臂梁:纯受集中力:beamsolver(10.0,2e8,f,0,v,10.0,f,2.0,1000,0.01)纯受集中矩:beamsolver(10.0,2e8,f,0,v,10.0,m,4.0,500,0.01)纯受分布力(格式一):beamsolver(10.0,2e8,f,0,v,10.0,d,7.0,9.0,3.0,20,100,0.01)纯受分布力(格式二):beamsolver(10.0,2e8,f,0,v,10.0,d,(7.0:0.01:9.0);(0:0.01:2.0).2,0.01)受混合力:beamsolver(10.0,2e8,f,0,v,10.0,f,2.0,1000,m,4.0,500,d,7.0,9.0,3.0,20,100,0.01)简支梁:纯受集中力:beamsolver(10.0,2e8,p,2.0,r,8.0,f,5.0,1000,0.01)纯受集中矩:beamsolver(10.0,2e8,p,2.0,r,8.0,m,4.0,500,0.01)纯受分布力(格式一):beamsolver(10.0,2e8,p,2.0,r,8.0,d,7.0,9.0,3.0,20,100,0.01)纯受分布力(格式二):beamsolver(10.0,2e8,p,2.0,r,8.0,d,(7.0:0.01:9.0);(0:0.01:2.0).2,0.01)受混合力:beamsolver(10.0,2e8,p,2.0,r,8.0,f,5.0,1000,m,4.0,500,d,7.0,9.0,3.0,20,100,0.01)以上范例输出的剪力V图、弯矩M图都经过笔算检验完全正确。悬臂梁的挠度经检验为正确的,简支梁的挠度有误(整个程序的唯一错误)。function x,V,M,vy=beamsolver(L,EI,supports,loads,maxdx)%材料力学上机课作业(满分)%本DOC文件由M文件转换而成,可能有格式错误%班级;1036*(专业班级1036*)%支持两种梁的模型:%1.左端悬臂梁%2.一端pin一端roller的简支梁%输入格式:beamsolver(L,EI,supports,loads,maxdx);%例如:L=10.0,EI=2e8,supports=f,0,v,10.0,loads=f,2.0,1000,m,4.0,500,d,7.0,9.0,3.0,20,100,maxdx=0.01%输出为三张坐标图,图1:剪力V图,图2:弯矩M图,图3:挠度vy图.%fixed-freeif (supports11=f & supports21=v) n=1; M=linspace(0,0,L/maxdx); V=linspace(0,0,L/maxdx); while n=length(loads)%P-fixed-free- if loadsn1=f x=linspace(maxdx,L,L/maxdx); %将x分为小量 n1=loadsn2(1)/maxdx; %确定x=L1处对应的下标 V1=linspace(loadsn2(2),loadsn2(2),n1); %第一段剪力赋值 V2=zeros(1,L/maxdx-n1); %第二段剪力赋值 M1=-loadsn2(2)*(loadsn2(1)-x(1:n1); %第一段弯矩赋值 M2=zeros(1,L/maxdx-n1); %第二段弯矩赋值 M=M+M1,M2; %全梁的弯矩 V=V+V1,V2; %全梁的剪力 end%M-fixed-free- if loadsn1=m x=linspace(maxdx,L,L/maxdx); %将x分为小量 n1=loadsn2(1)/maxdx; %确定x=L1处对应的下标 M1=linspace(loadsn2(2),loadsn2(2),n1); %第一段弯矩赋值 M2=zeros(1,L/maxdx-n1); %第二段弯矩赋值 M=M+M1,M2; %全梁的弯矩 end%q-fixed-free- if loadsn1=d x=linspace(maxdx,L,L/maxdx); %将x分为小量 n1=loadsn2(1)/maxdx; %确定x=L1处对应的下标 n2=loadsn2(2)/maxdx; %确定x=L2处对应的下标 k=length(loadsn2)-4; A=size(loadsn2); if A(1)=1 %如果是第一种q的输入情况 ks=1; q2=linspace(loadsn2(4),loadsn2(4),n2-n1+1); while ks=k k0=loadsn2(4+ks); q2=q2+k0*(x(n1:n2)-loadsn2(3); ks=ks+1; end q1=zeros(1,n1-1); q3=zeros(1,L/maxdx-n2); q0=q1,q2,q3; q=fliplr(q0); %求出q Vq0=cumsum(q)*maxdx; Vq=fliplr(Vq0); %求出剪力V Mq0=-cumsum(Vq0)*maxdx; Mq=fliplr(Mq0); %求出弯矩M end if A(1)=2 %如果是q的第二种输入情况 q2=loadsn2(2,:); %表示出q2 n1=loadsn2(1,1)/maxdx; %定出q开始的坐标 B=length(loadsn2); %求q的长度 n2=loadsn2(1,B)/maxdx; %定出q结束的坐标 q1=zeros(1,n1-1); q3=zeros(1,L/maxdx-n2); q0=q1,q2,q3; %求出q0 q=fliplr(q0); Vq0=cumsum(q)*maxdx; Vq=fliplr(Vq0); %求出剪力V Mq0=-cumsum(Vq0)*maxdx; Mq=fliplr(Mq0); %求出弯矩M end M=M+Mq; %全梁的弯矩 V=V+Vq; %全梁的剪力 end n=n+1; end V=V M=M A=cumsum(M)*maxdx/EI; %对弯矩积分求转角 vy=cumsum(A)*maxdx %对转角积分求挠度 subplot(3,1,1),plot(x,V),grid; %绘图 subplot(3,1,2),plot(x,M),grid; subplot(3,1,3),plot(x,vy),grid; end%分割线-%pin-roller-if (supports11=p | supports11=r)&(supports21=p | supports21=r) n=1; np=supports12/maxdx; nr=supports22/maxdx; M=linspace(0,0,L/maxdx); V=linspace(0,0,L/maxdx); while n=length(loads)%P-pin-roller- if loadsn1=f x=linspace(maxdx,L,L/maxdx); %将x分为小量 n1=loadsn2(1)/maxdx; %确定x=L1处对应的下标 Nr=loadsn2(2)*(loadsn2(1)-supports12)/(supports22-supports12); if n1np & n1nr %力作用在支架右边 V1=zeros(1,np-1); V2=linspace(loadsn2(2)-Nr,loadsn2(2)-Nr,nr-np); V3=linspace(loadsn2(2),loadsn2(2),n1-nr); V4=zeros(1,L/maxdx-n1+1); V=V+V1,V2,V3,V4; M1=zeros(1,np-1); M2=(loadsn2(2)-Nr)*(x(np:nr-1)-supports12); M3=-loadsn2(2)*(loadsn2(1)-x(nr:n1-1); M4=zeros(1,L/maxdx-n1+1); M=M+M1,M2,M3,M4; end end%M-pin-roller- if loadsn1=m x=linspace(maxdx,L,L/maxdx); %将x分为小量 n1=loadsn2(1)/maxdx; %确定x=L1处对应的下标 if n1np & n1nr %弯矩作用在支架右边 Np=loadsn2(2)/(supports22-supports12); Nr=Np V1=zeros(1,np-1); V2=linspace(Np,Np,nr-np); V3=zeros(1,L/maxdx-nr+1); V=V+V1,V2,V3; M1=zeros(1,np-1); M2=Np*(x(np:nr-1)-supports12); M3=linspace(loadsn2(2),loadsn2(2),n1-nr); M4=zeros(1,L/maxdx-n1+1); M=M+M1,M2,M3,M4; %全梁的弯矩 end end%q-pin-roller- if loadsn1=d x=linspace(maxdx,L,L/maxdx); %将x分为小量 n1=loadsn2(1)/maxdx; %确定x=L1处对应的下标 n2=loadsn2(2)/maxdx; %确定x=L2处对应的下标 k=length(loadsn2)-4; A=size(loadsn2); if A(1)=1 %如果是第一种q的输入情况 ks=1; q2=linspace(loadsn2(4),loadsn2(4),n2-n1+1); while ks=k k0=loadsn2(4+ks); q2=q2+k0*(x(n1:n2)-loadsn2(3); ks=ks+1; end q1=zeros(1,n1-1); q3=zeros(1,L/maxdx-n2); q0=q1,q2,q3; F=q0*maxdx; %等效为很多个力作用在杆上 nF=length(F); %找出F的最后一点值得坐标 X=1; while X=nF if F(X)=0 Nr=F(X)*(X-np)/(nr-np); if Xnp & Xnr %力作用在支架右边 V1=zeros(1,np-1); V2=linspace(F(X)-Nr,F(X)-Nr,nr-np); V3=linspace(F(X),F(X),X-nr); V4=zeros(1,L/maxdx-X+1); V=V+V1,V2,V3,V4; M1=zeros(1,np-1); M2=(F(X)-Nr)*(x(np:nr-1)-supports12); M3=-F(X)*(X*maxdx-x(nr:X-1); M4=zeros(1,L/maxdx-X+1); M=M+M1,M2,M3,M4; end end X=X+1; end end if A(1)=2 %如果是q的第二种输入情况 q2=loadsn2(2,:); %表示出q2 n1=loadsn2(1,1)/maxdx; %定出q开始的坐标 B=length(loadsn2); %求q的长度 n2=loadsn2(1,B)/maxdx; %定出q结束的坐标 q1=zeros(1,n1-1); q3=zeros(1,L/maxdx-n2); q0=q1,q2,q3; %求出q F=q0*maxdx; %等效为很多个力作用在杆上 nF=length(F); %找出F的最后一点值得坐标 X=1; while X=nF if F(X)=0 Nr=F(X)*(X-np)/(nr-np); if Xnp & Xnr %力作用在支架右边 V1=zeros(1,np-1); V2=linspace(F(X)-Nr,F(X)-Nr,nr-np); V3=linspace(F(X),F(X),X-nr); V4=zeros(1,L/maxdx-X+1); V=V+V1,V2,V3,V4; M1=zeros(1,np-1); M2=(F(X)-Nr)*(x(np:nr-1)-supports12);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论