哈工大 材料力学 MATLAB 梁 上机 大作业

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

本程序只支持静定结构的梁(左端悬臂梁、简支梁)

函数输入格式:beamsolver(L,EI,supports,loads,maxdx);

参量的输入格式:

L=10.0

EI=2e8

supports={{'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,100]}}

maxdx=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,50 0]},{'d',[7.0,9.0,3.0,20,100]}},maxdx=0.01

%输出为三张坐标图,图1:剪力V图,图2:弯矩M图,图3:挠度vy图.

%fixed-free

if (supports{1}{1}=='f' && supports{2}{1}=='v')

n=1;

M=linspace(0,0,L/maxdx);

V=linspace(0,0,L/maxdx);

while n<=length(loads)

%P------------------------fixed-free--------------------------------------

if loads{n}{1}=='f'

x=linspace(maxdx,L,L/maxdx); %将x分为小量

n1=loads{n}{2}(1)/maxdx; %确定x=L1处对应的下标

V1=linspace(loads{n}{2}(2),loads{n}{2}(2),n1); %第一段剪力赋值

V2=zeros(1,L/maxdx-n1); %第二段剪力赋值

M1=-loads{n}{2}(2)*(loads{n}{2}(1)-x(1:n1)); %第一段弯矩赋值

M2=zeros(1,L/maxdx-n1); %第二段弯矩赋值

M=M+[M1,M2]; %全梁的弯矩

V=V+[V1,V2]; %全梁的剪力

end

%M-----------------------fixed-free----------------------------------------- if loads{n}{1}=='m'

x=linspace(maxdx,L,L/maxdx); %将x分为小量

n1=loads{n}{2}(1)/maxdx; %确定x=L1处对应的下标

M1=linspace(loads{n}{2}(2),loads{n}{2}(2),n1); %第一段弯矩赋值

M2=zeros(1,L/maxdx-n1); %第二段弯矩赋值

M=M+[M1,M2]; %全梁的弯矩

end

%q-----------------------fixed-free---------------------------------------

if loads{n}{1}=='d'

x=linspace(maxdx,L,L/maxdx); %将x分为小量

n1=loads{n}{2}(1)/maxdx; %确定x=L1处对应的下标

n2=loads{n}{2}(2)/maxdx; %确定x=L2处对应的下标

k=length(loads{n}{2})-4;

A=size(loads{n}{2});

相关文档
最新文档