哈工大材料力学上机大作业四——绘制梁的剪力弯矩图
- 格式:doc
- 大小:903.50 KB
- 文档页数:21
绘制工程力学剪力图和弯矩图的简易方法-力学论文-物理论文——文章均为WORD文档,下载后可直接编辑使用亦可打印——0引言工程力学中,直梁的弯曲变形是杆件受力变形的基本形式之一,在对梁进行强度和刚度计算时,通常要画出剪力图和弯矩图,以便清楚地看出梁的各个截面上剪力和弯矩的大小、正负以及最大值所在截面的位置[1].但不少学生在学习剪力图和弯矩图绘制知识点时,直呼太难,根本不知从何下手。
因此,总结出一套行之有效的简易绘制剪力图和弯矩图的方法,显得越来越重要。
下面就结合作者实际教学经验,提出解决此类问题的简易方法。
1绘制剪力图和弯矩图的简易方法绘制剪力图和弯矩图时,应严格遵循下列基本步骤:①画梁的受力图,求约束力求出梁上所有约束部位的约束力是至关重要的第一步,这一步如果出现问题,后续步骤基本进行不了,关于求约束力的方法,在画好受力分析图后列平衡方程式即可求得。
②画剪力图。
画剪力图时,应牢记下面几句话:集中力作用处,剪力图有突变,突变幅值等于集中力的大小,突变的方向与力的方向同向;集中力偶作用处,剪力图无变化;均布载荷作用的梁段上,剪力图为一条斜直线;无外力作用的梁段上,剪力图为水平的直线。
对于剪力图为斜直线,只需确定直线的两个端点所对应的剪力值即可确定该直线,要求两个端点所对应的剪力值,采用某截面上的剪力值等于截面左边梁上所有外力的代数和,外力向上,则剪力为正,反之为负的方法。
③画弯矩图画弯矩图时,也须牢记以下几句话:集中力作用处,弯矩图有折点;集中力偶作用处,弯矩图有突变,突变幅值等于力偶矩的大小,力偶方向若为顺时针,则弯矩向上突变,反之向下突变;均布载荷作用的梁段,弯矩图为二次曲线,曲线开口方向与均布载荷同向,在剪力为零的截面,弯矩有极值;无外力作用的梁段,弯矩为直线。
对于弯矩为二次曲线的,只需取曲线上三个特殊的点,求出该点所对应截面的弯矩值即可确定该曲线,而求某截面上弯矩值,采用某截面上的弯矩值等于截面左边梁上所有外力矩的代数和,外力矩为顺时针的,弯矩为正,反之为负的方法。
快速绘制梁的剪力图和弯矩图梁的内力图梁的内力图——剪力图和弯矩图剪力图和弯矩图剪力方程和弯矩方程剪力方程和弯矩方程FF=F(x)=F(x)M=M(x)M=M(x)梁的剪力方程梁的剪力方程梁的弯矩方程梁的弯矩方程由前面的知识可知:梁的剪力和弯矩是随截面位置变化由前面的知识可知:梁的剪力和弯矩是随截面位置变化而变化的,如果将而变化的,如果将xx轴建立在梁的轴线上,原点建立在梁轴建立在梁的轴线上,原点建立在梁左端,左端,xx表示截面位置,则F和表示截面位置,则F和MM就随就随xx的变化而变化,的变化而变化,FF和和MM就是就是xx的函数,这个函数式就叫剪力方程和弯矩方程。
的函数,这个函数式就叫剪力方程和弯矩方程。
剪力图和弯矩图剪力图和弯矩图以梁横截面沿梁轴线的位置为横坐标,以垂直以梁横截面沿梁轴线的位置为横坐标,以垂直于梁轴线方向的剪力或弯矩为纵坐标,分别绘于梁轴线方向的剪力或弯矩为纵坐标,分别绘制表示F制表示F(x)(x)和和M(x)M(x)的图线。
这种图线分别称为的图线。
这种图线分别称为剪力图和弯矩图,简称F图和剪力图和弯矩图,简称F图和MM图。
绘图时一图。
绘图时一般规定正号的剪力画在般规定正号的剪力画在xx轴的上侧,负号的剪轴的上侧,负号的剪力画在力画在xx轴的下侧;正弯矩画在轴的下侧;正弯矩画在xx轴下侧,负弯轴下侧,负弯矩画在矩画在xx轴上侧,即把弯矩画在梁受拉的一侧。
轴上侧,即把弯矩画在梁受拉的一侧。
下端受拉为正弯矩下端受拉为正弯矩画剪力图和弯矩图时,一定要将梁正确分段,画剪力图和弯矩图时,一定要将梁正确分段,分段建立方程,依方程而作图分段建立方程,依方程而作图简支梁受均布荷载作用,如图示,简支梁受均布荷载作用,如图示,作此梁的剪力图和弯矩图。
作此梁的剪力图和弯矩图。
解:解:1.1.求约束反力求约束反力由对称关系,可得:由对称关系,可得:22、建立内力方程、建立内力方程33、依方程作剪力图和弯矩图、依方程作剪力图和弯矩图0时向右下方斜斜,时向右下方斜斜,V0时向右上方倾斜,时向右上方倾斜,V=0时为水平线。
浅谈材料力学中简易法快速画梁的剪力图和弯矩图杜超凡,陶阳(扬州大学建筑科学与工程学院,江苏扬州225000)[摘要]文章以作用于梁上的横向分布力集度与剪力、弯矩的微分关系为基础,归纳总结了几种荷载作用下剪力图、弯矩图的特征。
掌握这些特征就能不写内力方程而根据外力直接画出相应的剪力图和弯矩图。
[关键词]剪力图;弯矩图;微分关系;积分关系[基金项目]2020年度扬州大学“课程思政”教学示范课程建设项目“材料力学”(131010341)[作者简介]杜超凡(1987—),男,山东威海人,工学博士,扬州大学建筑科学与工程学院土木系讲师,主要从事多体系统动力学与控制、计算力学教学与研究;陶阳(1964—),女,安徽宣城人,工学学士,扬州大学建筑科学与工程学院土木系副教授,主要从事工程力学测试与计算教学与研究。
[中图分类号]G642.0[文献标识码]A[文章编号]1674-9324(2021)04-0157-04[收稿日期]2020-08-13一、引言“材料力学”是工科学生的一门必修课,其中剪力图和弯矩图的绘制是本门课的重点也是难点,尤其对土木工程专业的学生而言尤为重要,也是后续课程“结构力学”的基础。
教材[1-3]中介绍的绘制剪力图和弯矩图的方法主要有两种:一种是用截面法写剪力方程和弯矩方程,再根据所列方程作图。
写剪力方程和弯矩方程的时候,要在外力荷载规律变化的截面进行分段,对于作用于梁上的荷载只有一种或两种的情况,对截面分段较少,所以这种方法简单、直观。
但若作用于梁上的荷载种类较多时,分段写剪力方程和弯矩方程将是一个非常烦琐的过程,而且极易出错,所以这种方法使用较少。
另一种方法是基于横向分布力集度与剪力、弯矩的微分关系和积分关系,根据剪力图和弯矩图在外力荷载作用下的规律,由控制截面上的内力值连线即可,不用写内力方程而直接画出相应的内力图。
这种方法简便、高效,也被称为简易法。
该方法的关键是要能熟练掌握不同荷载作用下剪力图和弯矩图的特征。
材料力学上机报告课程名称:材料力学设计题目:简支梁在任意载荷下剪力图弯矩图挠度曲线的绘制院系:材料学院班级:设计者:学号:编程语言:Visual Basic设计时间:2016.06一、课题要求求三种截面的简支梁(矩形截面,实心圆截面和空心圆截面)在受到任意多的力F,力偶M和分布力q的作用下,其上任意一点的剪力弯矩和挠度的大小,并绘制梁的剪力图、弯矩图和挠曲线。
输入1.梁的总长度l和材料的弹性模量E。
2.选择界面形状(矩形截面,实心圆,空心圆)。
如果是矩形截面,输入矩形的宽度b和高度h。
如果是实心圆截面,输入圆的直径D。
如果是空心圆截面,输入空心圆的外径D和内径d。
3. 输入载荷情况。
若载荷是力,输入力的大小F和作用点a。
如果载荷是均布载荷,输入均布载荷的大小q和载荷的起始位置c和终止位置f。
如果载荷是力偶。
输入力偶的大小m和作用点e。
输出:1. 结构构形图2. 任意一点的剪力,弯矩,挠度3. 画出剪力图,弯矩图和挠曲线二.数学模型及算法总体思想为叠加法。
不妨假设简支梁的长度为l。
1.只有一个作用点位置为a的力F的作用下a)剪力的大小当0<x<a时,f1=(l-a)/l*f当a<x<l时,f1=(-1)*a/l*fb)弯矩的大小当0<x<a时:m1= (l-a)/l*F*x当a<x<l时:m1= a/l*F*(l-x)c)挠度的大小v1=(-1)*(F*(l-a)/(6*E*I*l))*(l/(l-a)*(x-a)^3)+((l*l-(l-a)*( l-a))*x- x^3)2.只有一个作用点位置为b和c的均布力作用下a)剪力的大小当0<x<b时:f2= q*(c-b)*(3*c-b)/(2*l)当b<x<c时:f2= q*(c-b)*(3*c-b)/(2*l)-q*(x-b)当c<x<l时:f2= (-1)*q*(c*c-b*b)/(2*l)b)弯矩的大小当0<x<b时:m2=q*(c-b)*(3*c-b)/(2*l)当b<x<c时:m2= q*(c-b)*(3*c-b)/(2*l)-(q*(x-b)*(x-b))/2当c<x<l时:m2= (-1)*(q*(c*c-b*b)/(2*l))*(c-x)c)挠度的大小当0<x<b时:v2= q*(c-b)*(3*c-b)/(12 *E*I*l)* (x^3)当b<x<c时:v2=q*(c-b)*(3*c-b)/(2*l)* (x^3)/6-((q*(x-b)*(x-b))/4) * (x^2)当c<x<l时:v2= (-1)*(q*(c*c-b*b)/(4 *E*I*l))*(c-x)* (x^2)3.只有一个作用点位置为d的力偶的作用下a)剪力的大小f3=m/lb)弯矩的大小当0<x<d时:m3= m/l*x当d<x<l时:m3= (-1)*m/l*(l-x)c)挠度的大小v3= (-1)*m/(6*E*I*l)*((-1)* (x^3)+3*l* ((x-d)^2)+x*(l*l-3* ((l-d)^2)))其中惯性矩I分为三种情况,即实心圆,空心圆和矩形截面:实心圆:I= pi*(d^4)/64空心圆:I= pi*(D^4) *(1- ((d/D)^4)/64矩形截面:I= b* (h^3)/12三.程序流程图三.程序变量说明及程序清单E:弹性模量n:力的个数F:集中力大小c:分布力右端距左端支座的距离k:空心圆筒内径o:空心圆筒外径L:杆件长度G:切变模量b:矩形截面的宽度h:矩形截面的高Y:挠度jiao:转角I:截面惯性矩L:梁长E:弹性模量Z:惯性矩a:集中力距支座左端的距离d:实心圆径q:分布力大小M:力偶大小程序源代码Form 1(封皮)Private Sub Command1_Click() '点击简支梁,出现form2Form1.HideForm10.ShowPrivate Sub Command2_Click() '点击结束,结束整个程序EndEnd SubPrivate Sub Form_Load()Label1.FontBold = TrueEnd SubForm10开始进入选择阶段(剪力弯矩或者挠度)Private Sub Command1_Click() '梁剪力弯矩图Form3.ShowForm2.HideEnd SubPrivate Sub Command2_Click() '梁挠度Form2.ShowForm3.HideEnd SubPrivate Sub Form_Load()End SubPrivate Sub Frame1_DragDrop(Source As Control, X As Single, Y As Single)Private Sub Option1_Click() '矩形数据的输入Text8.Enabled = FalseText6.Enabled = TrueText7.Enabled = TrueText11.Enabled = FalseText12.Enabled = FalsePicture4.Visible = TruePicture5.Visible = FalsePicture6.Visible = FalseEnd SubPrivate Sub Option2_Click() '圆截面数据的输入Text8.Enabled = TrueText6.Enabled = FalseText7.Enabled = FalseText11.Enabled = FalseText12.Enabled = FalsePicture4.Visible = FalsePicture5.Visible = TruePicture6.Visible = FalseEnd SubPrivate Sub Option3_Click() '空心圆截面数据的输入Text8.Enabled = FalseText6.Enabled = FalseText7.Enabled = FalseText11.Enabled = TrueText12.Enabled = TruePicture4.Visible = FalsePicture5.Visible = FalsePicture6.Visible = TrueEnd SubPrivate Sub Text1_Change() 'F的单位换算F = Val(Text1.Text) * 1000End SubPrivate Sub Text11_Change() '对o赋值,并换算o = Val(Text11.Text) / 100End SubPrivate Sub Text12_Change() '对d赋值,换算,并计算空心圆截面的Iz的值k = Val(Text12.Text) / 100F = (k / o) ^ 4Iz = 3.1415926 * o ^ 4 / 64 * (1 - F)End SubPrivate Sub Text2_Change() 'a的单位换算a = Val(Text2.Text) / 100End SubPrivate Sub Text3_Change() 'M的单位换算M = Val(Text3.Text) * 1000End SubPrivate Sub Text5_Change() 'q的单位换算q = Val(Text5.Text) * 1000End SubPrivate Sub Text6_Change() '对b赋值b = Val(Text6.Text)End SubPrivate Sub Text7_Change() '对h赋值,并计算矩形截面的Iz的值h = Val(Text7.Text)Iz = 10 ^ -8 * h * b ^ 3 / 12End SubForm 2 (输入杆长,载荷和截面大小尺寸,并且选择所要求的挠度,挠曲线等)Private Sub Check1_Click() '显示待输入数据栏及力样图片Text1.Enabled = TrueText2.Enabled = TruePicture3.Visible = TruePicture1.Visible = FalsePicture2.Visible = FalseEnd SubPrivate Sub Check2_Click() '显示待输入数据栏及力样图片Text3.Enabled = TruePicture1.Visible = FalsePicture2.Visible = TruePicture3.Visible = FalseEnd SubPrivate Sub Check3_Click() '显示待输入数据栏及力样图片Text5.Enabled = TruePicture1.Visible = TruePicture2.Visible = FalsePicture3.Visible = FalseEnd SubPrivate Sub Command1_Click() '返回主菜单,并清空数据Text1.Enabled = False: Text2.Enabled = False: Text3.Enabled = False: Text5.Enabled = False: Text8.Enabled = False:Text12.Enabled = False: Text11.Enabled = False: Text6.Enabled = False: Text7.Enabled = FalseCheck1 = False: Check2 = False: Check3 = False: Option1 = False: Option2 = FalsePicture1.Visible = False: Picture2.Visible = False: Picture3.Visible = False: Picture4.Visible = False: Picture5.Visible = FalseIz = 0: E = 0: Ym = 0: jiaom = 0: L = 0: F = 0: M = 0: q = 0: a = 0: b = 0: h = 0: d = 0: X = 0Text1.Text = "": Text2.Text = "": Text3.Text = "": Text8.Text = "": Text5.Text = "": Text6.Text = "": Text7.Text = "": Text9.Text = "": Text10.Text = ""Form2.HideForm10.ShowForm3.HideEnd SubPrivate Sub Command2_Click() '最大挠度与转角的输入检测If L = 0 Or E = 0 Or Iz = 0 Thenn = MsgBox("您还有数据未输入。
H a r b i n I n s t i t u t e o f T e c h n o l o g y材料力学上机作业课程名称:材料力学设计题目:绘制梁的剪力弯矩图院系:机电工程学院班级:分析者:学号:指导教师:张桂莲设计时刻: 2021.6.3哈尔滨工业大学一、设计题目题目4 绘制梁的剪力弯矩图输入:1.梁的总长度l2.支撑条件及量的各区段长度输入(左、右固定端悬臂梁;简支梁;左、右、双外伸梁)3.各载荷大小、作用位置及方向(qi、ai、bi;pj、cj、mk、dk)输出:1.结构构型图(图示)2.剪力、弯矩(图示)3.输出剪力、弯矩的最大值及截面位置。
二、程序介绍一、简介本程序编译平台为MATLAB,能够对六种梁(左固定端悬臂梁、右固定端悬臂梁、简支梁、左外伸梁、右外伸梁、双外伸梁)在集中载荷、均布载荷及弯矩作用下的剪力、弯矩进行求解并绘制剪力、弯矩图。
本程序基于MATLAB的图形用户界面(GUI)功能,操作简单、运算稳固、界面简约美观,有良好的交互性。
二、程序利用方式此程序运行环境为安装有MATLAB R2020a或以上版本的运算机。
要运行此程序,第一打开MATLAB,在其中打开“KaiShiJieMian.m”文件,在函数编辑窗口里点击运行按钮(或按F5键),程序便开始启动。
启动画面如下:图1 启动界面点击“进入”即可进入选择梁的类型界面,在此界面中,利用者依如实际情形选择要研究的梁的类型,点击即可进入相应梁的计算界面。
例如想要计算双外伸梁,那么点击“6、双外伸梁”即可进入计算界面,假假想返回开始界面,那么点击“返回开始界面”即可。
图2 梁的选择界面图3 梁的计算界面此程序能够计算梁在集中力、均布力和集中力偶的作用下梁的剪力和弯矩,并求出剪力的最大值和弯矩的最大值。
以双外伸梁为例,对照左侧参数输入提示,在相应文本框里输入梁的大体参数,如弹性模量E、长度L,和载荷大小及位置,如均布力q、均布力起始位置b1、终止位置b2。
H a r b i n I n s t i t u t e o f T e c h n o l o g y材料力学上机作业课程名称:材料力学设计题目:绘制梁的剪力弯矩图院系:班级:分析者:学号:指导教师:设计时间:哈尔滨工业大学材料力学上机课设计说明书一,设计题目题目4 绘制梁的剪力弯矩图输入:1.梁的总长度l2.支撑条件及量的各区段长度输入(左、右固定端悬臂梁;简支梁;左、右、双外伸梁)3.各载荷大小、作用位置及方向(q i、a i、b i;p j、c j、m k、d k)输出:1.结构构型图(图示)2.剪力、弯矩(图示)3.输出剪力、弯矩的最大值及截面位置。
二,方向规定本程序规定集中作用力及均布载荷以向下为正,右固定端悬臂梁与左外伸梁集中力偶以顺时针方向为正,其他情况集中力偶以逆时针方向为正。
当取出梁的一段为研究对象时,梁左端面力以向下为正,力偶以顺时针方向为正,梁右端面力以向上为正,力偶以逆时针方向为正。
三,程序设计过程1,制作程序框架,显示提示内容,提示操作者需要输入的作用条件及各作用位置;2,编写程序使计算机读入操作者输入的作用条件;3,草稿拟写各种情况下为达到题目要求所需使用的计算公式设量的长度为l,集中力大小为p,作用位置为c,集中力大小为q,作用起始位置a,终止位置为b,集中力偶大小为m,作用位置d。
(1)左固定端悬臂梁:在任意位置x处,取x以右部分为研究对象a,终止位置为b,集中力作用位置为c,大小为P,集中力偶作用位置为d,大小为m。
①若c<x,a<b<x,d>x,则Fs y=0,M(x)=m;②若c>x,a<b<x,d<x,则Fs y=-P,M(x)=Px-Pc;③若c<x,a<x<b,d<x,则Fs y=-q(b-x),M(x)=-2q(b-x)²;④若c<x, x<a<b,d>x,则Fs y=-q(b-a),M(x)=-q(b-a)(2ba+-x);⑤若c>x,a<b<x,d>x,则Fs y=-P,M(x)= Px-Pc+m;(第①、②两种情况合成)⑥若c<x,a<x<b,d>x,则Fs y=-q(b-x),M(x)=m-2q(b-x)²;(第①、③两种情况合成)⑦若c<x,x<a<b,d>x,则Fs y=-q(b-a),M(x)=m-q(b-a)(2ba+-x);(第①、④两种情况合成)⑧若c>x,a<x<b,d<x,则Fs y=-P-q(b-x),M(x)=Px-Pc-2q(b-x)²;(第②、③两种情况合成)⑨若c>x,x<a<b,d<x,则Fs y=-P-q(b-a),M(x)=Px-Pc-q(b-a)*(2ba+-x);(第②、④两种情况合成)⑩若c>x,x<a<b,d>x,则Fs y=-P-q(b-a), M(x)=m+Px-Pc-q(b-a)*(2ba+-x);(第①、②、④两种情况合成)⑪c>x,a<x<b,d>x, 则Fs y=-P-q(b-x), M(x)m+Px-Pc-q(b-a)*(2ba+-x); (第①、②、③两种情况合成)将上述公式编入程序即可计算出在固定端悬臂梁情况下任意位置处的剪力和弯矩,采用散点法作出梁的剪力弯矩图。
材料力学剪力图弯矩图绘制(有详细的程序)说明:输入变量:分段数组x分段点一般在集中力,集中力偶作用出和分布载荷的起末端。
载荷数组MPQ若梁上的外载荷总数为PN,则用PN行四列的数组MPQ储存载荷,数组MPQ第一列代表载荷的类型:1为集中力偶,2为集中力,3为分布载荷,第二列代表载荷的大小,第三列代表集中力,集中力偶或者分布载荷左端与简支梁左端的距离,第四列代表均匀载荷右端与简支梁左端的距离,当载荷为集中力或者集中力偶时,第四列为0.符号规定集中力和均匀载荷向下为正,向上为负,集中力偶顺时针为正,逆时针为负。
输出变量:内力数组XQM如果梁被分为NN-1段,则内力数组XQM为NN行,三列的数组,第一列代表梁的横截面的位置,第二列代表剪力,第三列代表弯矩。
剪力极值及位置QDXQDX是一个二行二列的数组,第一列代表极值所在的位置,第二列代表极值弯矩极值及位置MDXMDX是一个二行二列的数组,第一列代表极值所在的位置,第二列代表极值1.子程序1.1集中力偶对弯矩贡献的子函数QMM1.2集中力对剪力和弯矩贡献的子函数QMP1.3分布载荷对剪力和弯矩贡献的子函数QMQ1.4求剪力和弯矩极值的子函数MAX_MIN1.5绘制剪力图和弯矩图的子函数TU_QM2.计算分析程序2.1简支梁QMDJ2.2左端固定悬臂梁QMDXZ2.3右端固定悬臂梁QMDXY2.4左端外伸梁QMDWZ2.5右端外伸梁QMDWY2.6两端外伸梁QMDWL1.子程序1.1集中力偶对弯矩贡献的子函数QMMfunction MM=QMM(n,x1,a,M,MM)for j=1:nif x1(j)==an1=j;endendMM(n1:n)=MM(n1:n)+M;1.2集中力对剪力和弯矩贡献的子函数QMP function [QQ,MM]=QMP(n,x1,b,P,QQ,MM)for j=1:nif x1(j)==b;n1=j;endendQQ(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:nif x1(j)>cQQ(j)=QQ(j)-q*(x1(j)-c);MM(j)=MM(j)-0.5*q*(x1(j)-c)^2;endif x1(j)>dQQ(j)=QQ(j)+q*(x1(j)-d);MM(j)=MM(j)+0.5*q*(x1(j)-d)^2;endend1.4求剪力和弯矩极值的子函数MAX_MINfunction [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);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('弯矩图');2.计算分析程序2.1简支梁QMDJfunction XQM=QMDJ(x,MPQ)[n,m]=size(x);L=x(m);x1=[];for i=1:m-1x1=[x1,linspace(x(i),x(i+1),50)];endMM=zeros(size(x1));QQ=zeros(size(x1));[m,t]=size(MPQ);[t,n]=size(x1);for i=1:mswitch MPQ(i,1)case 1M=MPQ(i,2);a=MPQ(i,3);RA=-M/L;QQ=QQ+RA;MM=MM+RA*x1;if a>0 & a<LMM=QMM(n,x1,a,M,MM);endif a==0MM=MM+M;endcase 2P=MPQ(i,2);b=MPQ(i,3);RA=(L-b)*P/L;if b>0 & b<LQQ=QQ+RA;MM=MM+RA*x1;[QQ,MM]=QMP(n,x1,b,P,QQ,MM);endcase 3q=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;[QQ,MM]=QMQ(n,x1,c,d,q,QQ,MM);endend[QDX,MDX,XQM]=MAX_MIN(x1,QQ,MM);TU_QM(x1,QQ,MM);disp('梁的有限元分析结果')disp('位置-----------剪力----------弯矩')2.2左端固定悬臂梁QMDXZfunction XQM=QMDXZ(x,MPQ)[n,m]=size(x);L=x(m);x1=[];for i=1:m-1x1=[x1,linspace(x(i),x(i+1),50)];endMM=zeros(size(x1));QQ=zeros(size(x1));[PN,t]=size(MPQ);[t,n]=size(x1);for i=1:PNswitch MPQ(i,1)case 1M=MPQ(i,2);a=MPQ(i,3);if a>0 & a<LMM=MM-M;MM=QMM(n,x1,a,M,MM);endif a==LMM=MM-M;endcase 2P=MPQ(i,2);b=MPQ(i,3);RA=P;MA=-P*b;QQ=QQ+RA;MM=MM+RA*x1+MA;if b>0 & b<L[QQ,MM]=QMP(n,x1,b,P,QQ,MM);endcase 3q=MPQ(i,2);c=MPQ(i,3);d=MPQ(i,4);RA=q*(d-c);MA=-0.5*q*(d-c)*(d+c);QQ=QQ+RA;MM=MM+RA*x1+MA;[QQ,MM]=QMQ(n,x1,c,d,q,QQ,MM);endend[QDX,MDX,XQM]=MAX_MIN(x1,QQ,MM);TU_QM(x1,QQ,MM);disp('梁的有限元分析结果')disp('位置-----------剪力----------弯矩')2.3右端固定悬臂梁QMDXYfunction XQM=QMDXY(x,MPQ)[n,m]=size(x);L=x(m);x1=[];for i=1:m-1x1=[x1,linspace(x(i),x(i+1),50)];endMM=zeros(size(x1));QQ=zeros(size(x1));[PN,t]=size(MPQ);[t,n]=size(x1);for i=1:PNswitch MPQ(i,1)case 1M=MPQ(i,2);a=MPQ(i,3);if a==0MM=MM+M;endif a>0 & a<LMM=QMM(n,x1,a,M,MM);endcase 2P=MPQ(i,2);b=MPQ(i,3);if b==0QQ=QQ-PMM=MM-P*x1;endif b>0 & b<L[QQ,MM]=QMP(n,x1,b,P,QQ,MM);endcase 3q=MPQ(i,2);c=MPQ(i,3);d=MPQ(i,4);[QQ,MM]=QMQ(n,x1,c,d,q,QQ,MM);endend[QDX,MDX,XQM]=MAX_MIN(x1,QQ,MM);TU_QM(x1,QQ,MM);disp('梁的有限元分析结果')disp('位置-----------剪力----------弯矩')2.4左端外伸梁QMDWZfunction XQM=QMDWZ(x,L1,MPQ)[n,m]=size(x);L=x(m);x1=[];for i=1:m-1x1=[x1,linspace(x(i),x(i+1),50)];endMM=zeros(size(x1));QQ=zeros(size(x1));[PN,t]=size(MPQ);[t,n]=size(x1);for i=1:PNswitch MPQ(i,1)case 1M=MPQ(i,2);a=MPQ(i,3);if a>0 & a<LMM=QMM(n,x1,a,M,MM);endif a==0MM=MM+M;endcase 2P=MPQ(i,2);b=MPQ(i,3);RA=P*(L-b)/(L-L1);[QQ,MM]=QMP(n,x1,L1,-RA,QQ,MM);if b>0 & b<L[QQ,MM]=QMP(n,x1,b,P,QQ,MM);endif b==0QQ=QQ-P;MM=MM-P*x1;endcase 3q=MPQ(i,2);c=MPQ(i,3);d=MPQ(i,4);b=(c+d)*0.5;P=(d-c)*q;RA=P*(L-b)/(L-L1);[QQ,MM]=QMP(n,x1,L1,-RA,QQ,MM);[QQ,MM]=QMQ(n,x1,c,d,q,QQ,MM);endend[QDX,MDX,XQM]=MAX_MIN(x1,QQ,MM);TU_QM(x1,QQ,MM);disp('梁的有限元分析结果')disp('位置-----------剪力----------弯矩')2.5右端外伸梁QMDWYfunction XQM=QMDWY(x,L1,MPQ)[n,m]=size(x);L=x(m);x1=[];for i=1:m-1x1=[x1,linspace(x(i),x(i+1),50)];endMM=zeros(size(x1));QQ=zeros(size(x1));[PN,t]=size(MPQ);[t,n]=size(x1);for i=1:PNswitch MPQ(i,1)case 1M=MPQ(i,2);a=MPQ(i,3);RA=-M/L1;RB=-RA;QQ=QQ+RA;MM=MM+x1*RA;if a>0 & a<LMM=QMM(n,x1,a,M,MM);endif a==0MM=MM+M;endcase 2P=MPQ(i,2);b=MPQ(i,3);RA=P*(L1-b)/L1;RB=P*b/L1;QQ=QQ+RA;MM=MM+x1*RA;[QQ,MM]=QMP(n,x1,L1,-RB,QQ,MM);if b>0 & b<L[QQ,MM]=QMP(n,x1,b,P,QQ,MM);endif b==0QQ=QQ-P;MM=MM-P*x1;endcase 3q=MPQ(i,2);c=MPQ(i,3);d=MPQ(i,4);b=(c+d)*0.5;P=(d-c)*q;RA=P*(L1-b)/L1;RB=P*b/L1;QQ=QQ+RA;MM=MM+x1*RA;[QQ,MM]=QMP(n,x1,L1,-RB,QQ,MM);[QQ,MM]=QMQ(n,x1,c,d,q,QQ,MM);endend[QDX,MDX,XQM]=MAX_MIN(x1,QQ,MM);TU_QM(x1,QQ,MM);disp('梁的有限元分析结果')disp('位置-----------剪力----------弯矩')2.6两端外伸梁QMDWLfunction XQM=QMDWL(x,L1,L2,MPQ)[n,m]=size(x);L=x(m);x1=[];for i=1:m-1x1=[x1,linspace(x(i),x(i+1),50)];endMM=zeros(size(x1));QQ=zeros(size(x1));[PN,t]=size(MPQ);[t,n]=size(x1);for i=1:PNswitch MPQ(i,1)case 1M=MPQ(i,2);a=MPQ(i,3);RA=-M/(L2-L1);RB=-RA;if a>0 & a<LMM=QMM(n,x1,a,M,MM);endif a==0MM=MM+M;endcase 2P=MPQ(i,2);b=MPQ(i,3);LL=L2-L1;bb=b-L1;RA=P*(LL-bb)/LL;RB=P*bb/LL;[QQ,MM]=QMP(n,x1,L1,-RA,QQ,MM);[QQ,MM]=QMP(n,x1,L2,-RB,QQ,MM);if b>0 & b<L[QQ,MM]=QMP(n,x1,b,P,QQ,MM);endif b==0QQ=QQ-P;MM=MM-P*x1;endcase 3q=MPQ(i,2);c=MPQ(i,3);d=MPQ(i,4);b=(c+d)*0.5;P=(d-c)*q;LL=L2-L1;bb=b-L1;RA=P*(LL-bb)/LL;RB=P*bb/LL;[QQ,MM]=QMP(n,x1,L1,-RA,QQ,MM);[QQ,MM]=QMP(n,x1,L2,-RB,QQ,MM);[QQ,MM]=QMQ(n,x1,c,d,q,QQ,MM);endend[QDX,MDX,XQM]=MAX_MIN(x1,QQ,MM);TU_QM(x1,QQ,MM);disp('梁的有限元分析结果')disp('位置-----------剪力----------弯矩')untitled.mfunction varargout = untitled(varargin)% UNTITLED M-file for untitled.fig% UNTITLED, by itself, creates a new UNTITLED or raises the existing% singleton*.%% H = UNTITLED returns the handle to a new UNTITLED or the handle to% the existing singleton*.%% UNTITLED('CALLBACK',hObject,eventData,handles,...) calls the local% function named CALLBACK in UNTITLED.M with the given input arguments. %% UNTITLED('Property','Value',...) creates a new UNTITLED or raises the% existing singleton*. Starting from the left, property value pairs are% applied to the GUI before untitled_OpeningFunction gets called. An% unrecognized property name or invalid value makes property application% stop. All inputs are passed to untitled_OpeningFcn via varargin.%% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one% instance to run (singleton)".%% See also: GUIDE, GUIDA TA, GUIHANDLES% Edit the above text to modify the response to help untitled% Last Modified by GUIDE v2.5 03-Jun-2008 23:12:06% Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct('gui_Name', mfilename, ...'gui_Singleton', gui_Singleton, ...'gui_OpeningFcn', @untitled_OpeningFcn, ...'gui_OutputFcn', @untitled_OutputFcn, ...'gui_LayoutFcn', [] , ...'gui_Callback', []);if nargin && ischar(varargin{1})gui_State.gui_Callback = str2func(varargin{1});endif nargout[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); elsegui_mainfcn(gui_State, varargin{:});end% End initialization code - DO NOT EDIT% --- Executes just before untitled is made visible.function untitled_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn.% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDA TA) % varargin command line arguments to untitled (see V ARARGIN)% Choose default command line output for untitledhandles.output = hObject;% Update handles structureguidata(hObject, handles);% UIWAIT makes untitled wait for user response (see UIRESUME) % uiwait(handles.figure1);% --- Outputs from this function are returned to the command line. function varargout = untitled_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see V ARARGOUT); % hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDA TA)% Get default command line output from handles structure varargout{1} = handles.output;function edit2_Callback(hObject, eventdata, handles)% hObject handle to edit2 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDA TA)% Hints: get(hObject,'String') returns contents of edit2 as text% str2double(get(hObject,'String')) returns contents of edit2 as a double% --- Executes during object creation, after setting all properties.function edit2_CreateFcn(hObject, eventdata, handles)% hObject handle to edit2 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');endfunction edit3_Callback(hObject, eventdata, handles)% hObject handle to edit3 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDA TA)% Hints: get(hObject,'String') returns contents of edit3 as text% str2double(get(hObject,'String')) returns contents of edit3 as a double% --- Executes during object creation, after setting all properties.function edit3_CreateFcn(hObject, eventdata, handles)% hObject handle to edit3 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');endfunction edit4_Callback(hObject, eventdata, handles)% hObject handle to edit4 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDA TA)% Hints: get(hObject,'String') returns contents of edit4 as text% str2double(get(hObject,'String')) returns contents of edit4 as a double% --- Executes during object creation, after setting all properties.function edit4_CreateFcn(hObject, eventdata, handles)% hObject handle to edit4 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');end% --- Executes on selection change in popupmenu1.function popupmenu1_Callback(hObject, eventdata, handles)% hObject handle to popupmenu1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hints: contents = get(hObject,'String') returns popupmenu1 contents as cell array% contents{get(hObject,'Value')} returns selected item from popupmenu1% --- Executes during object creation, after setting all properties.function popupmenu1_CreateFcn(hObject, eventdata, handles)% hObject handle to popupmenu1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called% Hint: popupmenu controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');end% --- Executes on button press in pushbutton3.function pushbutton3_Callback(hObject, eventdata, handles)% hObject handle to pushbutton3 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDA TA)x=str2num(get(handles.edit2,'string'));MPQ=str2num(get(handles.edit3,'string'));L=str2num(get(handles.edit4,'string'));L1=L(1);L2=L(2);val=get(handles.popupmenu1,'Value');str=get(handles.popupmenu1,'String');switch str{val}case '简支梁'QMDJ(x,MPQ)case '左端固定悬臂梁'QMDXZ(x,MPQ)case '右端固定悬臂梁'QMDXY(x,MPQ)case '左端外伸梁'QMDWZ(x,L1,MPQ)case '右端外伸梁'QMDWY(x,L1,MPQ)case '两端外伸梁'QMDWL(x,L1,L2,MPQ)end% --- Executes on button press in pushbutton4.function pushbutton4_Callback(hObject, eventdata, handles)% hObject handle to pushbutton4 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) close all% --- Executes on key press over popupmenu1 with no controls selected. function popupmenu1_KeyPressFcn(hObject, eventdata, handles)% hObject handle to popupmenu1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDA TA)。
材料力学上机大作业题目名称:绘制梁的剪力图、弯矩图姓名:王二小完成时间:2011.11.22运行环境:winXP(及以上)题目4绘制梁的剪力图、弯矩图输入1.梁的总长度l2.支撑条件及梁的各区段长度输入(左、右固定端悬臂梁;简支梁;左、右、双外伸梁)3. 各载荷大小、作用位置及方向(q i、a i、b i; p j、c j; m k、d k)输出:1. 结构构形图(图示)2. 剪力、弯矩(图示)3. 输出剪力、弯矩的最大值及截面位置软件运行结果:软件运行过程如下所示:软件代码:Private Sub Form_Click()Dim l As Doublel = Val(Text1.Text)Dim x, y, Hua, fd1(10), fd2(10), fd3(10), pos1(10), pos2(10), pos3(10), pos4(10) As DoubleDim xiang1(10), xiang2(10), xiang3(10) As DoubleDim y1(10), y2(10), y3(10), M1(10), M2(10), M3(10) As DoubleDim i, j As Integer For i = 1 To 10fd1(i) = Val(InputBox("请输入集中力的大小:(/kN,推荐值5KN)"))If fd1(i) = 0 ThenExit ForEnd Ifpos1(i) = Val(InputBox("请输入集中力的位置:(m)"))xiang1(i) = Val(InputBox("请输入集中力的方向:(向上为-1,向下为1)"))Next iFor i = 1 To 10 Step 1fd2(i) = Val(InputBox("请输入分布力的大小:(kN/m)"))If fd2(i) = 0 ThenExit ForEnd Ifpos2(i) = Val(InputBox("请输入分布力的pos2位置1:(m)"))pos3(i) = Val(InputBox("请输入分布力的pos3位置2:(m)"))xiang2(i) = Val(InputBox("请输入分布力的方向:(向上为-1,向下为1)"))Next iFor i = 1 To 10fd3(i) = Val(InputBox("请输入集中力偶的大小:(kN*m)"))If fd3(i) = 0 ThenExit ForEnd Ifpos4(i) = Val(InputBox("请输入集中力偶的位置:(m)"))xiang3(i) = Val(InputBox("请输入集中力偶的方向:(顺时针为-1,逆时针为1)"))Next iPicture1.ClsPicture1.Scale (-0.2 * l, 20)-(1.2 * l, -20) Picture1.Line (0, 0)-(l, 0)For i = 0 To 10If fd1(i) <> 0 And xiang1(i) > 0 Then Picture1.Line (pos1(i), 5)-(pos1(i), 0) Picture1.Line (pos1(i), 0)-(pos1(i) - 1, 1) Picture1.Line (pos1(i), 0)-(pos1(i) + 1, 1) ElseIf fd1(i) <> 0 And xiang1(i) < 0 Then Picture1.Line (pos1(i), -5)-(pos1(i), 0) Picture1.Line (pos1(i), 0)-(pos1(i) - 1, -1) Picture1.Line (pos1(i), 0)-(pos1(i) + 1, -1) End IfNext iFor i = 0 To 10If fd2(i) <> 0 ThenPicture1.Line (pos2(i), 3)-(pos3(i), 3) Picture1.Line (pos2(i), 3)-(pos2(i), 0) Picture1.Line (pos2(i), 0)-(pos2(i) - 0.5, 1) Picture1.Line (pos2(i), 0)-(pos2(i) + 0.5, 1) Picture1.Line (pos3(i), 3)-(pos3(i), 0) Picture1.Line (pos3(i), 0)-(pos3(i) - 0.5, 1) Picture1.Line (pos3(i), 0)-(pos3(i) + 0.5, 1)For x = pos2(i) + 0.8 To pos3(i) Step 0.8 Picture1.Line (x, 3)-(x, 0)Picture1.Line (x, 0)-(x - 0.5, 1)Picture1.Line (x, 0)-(x + 0.5, 1)Next xEnd IfNext iFor i = 0 To 10If fd3(i) <> 0 And xiang3(i) > 0 Then Picture1.Line (pos4(i), 3)-(pos4(i), -3) Picture1.Line (pos4(i), 3)-(pos4(i) - 1, 3) Picture1.Line (pos4(i), -3)-(pos4(i) + 1, -3) ElseIf fd3(i) <> 0 And xiang3(i) < 0 ThenPicture1.Line (pos4(i), 3)-(pos4(i), -3) Picture1.Line (pos4(i), 3)-(pos4(i) + 1, 3) Picture1.Line (pos4(i), -3)-(pos4(i) - 1, -3) End IfNext iPicture2.Scale (-0.2 * l, 20)-(1.2 * l, -20) Picture2.Line (0, 0)-(l, 0)If Combo1 = "简支梁" ThenPicture1.Line (0, -3)-(0, 0)Picture1.Line (l, -3)-(l, 0)For x = 0.01 To l Step 0.001For i = 1 To 10If x > 0 And x < pos1(i) Theny1(i) = fd1(i) * (l - pos1(i)) / l * xiang1(i) ElseIf x > pos1(i) And x < l Theny1(i) = -fd1(i) * pos1(i) / l * xiang1(i)End IfIf x > 0 And x < pos2(i) Theny2(i) = fd2(i) * (pos3(i) - pos2(i)) * (2 * l - pos2(i) - pos3(i)) * xiang2(i) / (2 * l)ElseIf x > pos2(i) And x < pos3(i) Theny2(i) = fd2(i) * (pos3(i) - pos2(i)) * (2 * l - pos2(i) - pos3(i)) * xiang2(i) / (2 * l) - fd2(i) * xiang2(i) * (x - pos2(i))Elsey2(i) = -fd2(i) * (pos3(i) - pos2(i)) * (pos2(i) + pos3(i)) * xiang2(i) / (2 * l)End IfIf x > 0 And x < pos4(i) Theny3(i) = fd3(i) / lElseIf x > pos4(i) And x < l Then y3(i) = -fd3(i) / lEnd IfNext iy = 0For j = 1 To 10y = y + y1(j) + y2(j) + y3(j)Next jPicture2.PSet (x, y)Next xFor x = 0 To l Step 1For i = 1 To 10If x > 0 And x < pos1(i) Theny1(i) = fd1(i) * (l - pos1(i)) / l * xiang1(i) ElseIf x > pos1(i) And x < l Theny1(i) = -fd1(i) * pos1(i) / l * xiang1(i)End IfIf x > 0 And x < pos2(i) Theny2(i) = fd2(i) * (pos3(i) - pos2(i)) * (2 * l - pos2(i) - pos3(i)) * xiang2(i) / (2 * l)ElseIf x > pos2(i) And x < pos3(i) Theny2(i) = fd2(i) * (pos3(i) - pos2(i)) * (2 * l - pos2(i) - pos3(i)) * xiang2(i) / (2 * l) - fd2(i) * xiang2(i) * (x - pos2(i))Elsey2(i) = -fd2(i) * (pos3(i) - pos2(i)) * (pos2(i) + pos3(i)) * xiang2(i) / (2 * l)End IfIf x > 0 And x < pos4(i) Theny3(i) = fd3(i) / lElseIf x > pos4(i) And x < l Theny3(i) = -fd3(i) / lEnd IfNext iy = 0For j = 1 To 10y = y + y1(j) + y2(j) + y3(j)Next jIf y > 0 ThenFor Hua = 0 To y Step 0.01Picture2.PSet (x, Hua)Next HuaElseIf y < 0 ThenFor Hua = y To 0 Step 0.01Picture2.PSet (x, Hua)Next HuaEnd IfNext xPicture3.ClsPicture3.Scale (-0.2 * l, 20)-(1.2 * l, -30) Picture3.Line (0, 0)-(l, 0)For x = 0.01 To l Step 0.01For i = 1 To 10If x > 0 And x < pos1(i) Then M1(i) = -fd1(i) * (l - pos1(i)) * x / l * xiang1(i)ElseIf x > pos1(i) And x < l ThenM1(i) = -fd1(i) * pos1(i) * (l - x) / l * xiang1(i)End IfIf x > 0 And x < pos2(i) ThenM2(i) = -fd2(i) * (pos3(i) - pos2(i)) * (2 * l - pos2(i) - pos3(i)) * xiang2(i) / (2 * l) * xElseIf x > pos2(i) And x < pos3(i) ThenM2(i) = -(fd2(i) * (pos3(i) - pos2(i)) * (2 * l - pos2(i) - pos3(i)) * xiang2(i) / (2 * l) * x - fd2(i) * (x - pos2(i)) * (x - pos2(i)) / 2)ElseM2(i) = -(fd2(i) * (pos3(i) - pos2(i)) * (pos2(i) + pos3(i)) * xiang2(i) / (2 * l) * (l - x))End IfIf x > 0 And x < pos4(i) ThenM3(i) = -fd3(i) * x / l * xiang3(i)ElseIf x > pos4(i) And x < l ThenM3(i) = -(fd3(i) * x / l - fd3(i)) * xiang3(i) End IfNext iy = 0For j = 1 To 10y = y + M1(j) + M2(j) + M3(j)Next jPicture3.PSet (x, y)Next xFor x = 0.01 To l Step 0.6For i = 1 To 10If x > 0 And x < pos1(i) ThenM1(i) = -fd1(i) * (l - pos1(i)) * x / l * xiang1(i)ElseIf x > pos1(i) And x < l ThenM1(i) = -fd1(i) * pos1(i) * (l - x) / l * xiang1(i)End IfIf x > 0 And x < pos2(i) ThenM2(i) = -fd2(i) * (pos3(i) - pos2(i)) * (2 * l - pos2(i) - pos3(i)) * xiang2(i) / (2 * l) * xElseIf x > pos2(i) And x < pos3(i) ThenM2(i) = -(fd2(i) * (pos3(i) - pos2(i)) * (2 * l - pos2(i) - pos3(i)) * xiang2(i) / (2 * l) * x - fd2(i) * (x - pos2(i)) * (x - pos2(i)) / 2)ElseM2(i) = -(fd2(i) * (pos3(i) - pos2(i)) * (pos2(i) + pos3(i)) * xiang2(i) / (2 * l) * (l - x))End IfIf x > 0 And x < pos4(i) ThenM3(i) = -fd3(i) * x / l * xiang3(i)ElseIf x > pos4(i) And x < l Then M3(i) = -(fd3(i) * x / l - fd3(i)) * xiang3(i) End IfNext iy = 0For j = 1 To 10y = y + M1(j) + M2(j) + M3(j)Next jIf y > 0 And x < l ThenFor Hua = 0 To y Step 0.01Picture3.PSet (x, Hua)Next HuaElseIf y < 0 And x < l ThenFor Hua = y To 0 Step 0.01Picture3.PSet (x, Hua)Next HuaEnd IfNext xElseIf Combo1 = "左端悬臂梁" Then Picture1.Line (0, -5)-(0, 5)For x = 0.01 To l Step 0.001For i = 1 To 10If x > 0 And x < pos1(i) Theny1(i) = fd1(i) * xiang1(i)ElseIf x > pos1(i) And x < l Theny1(i) = 0End IfIf x > 0 And x < pos2(i) Theny2(i) = fd2(i) * (pos3(i) - pos2(i)) * xiang2(i)ElseIf x > pos2(i) And x < pos3(i) Theny2(i) = fd2(i) * (pos3(i) - x) * xiang2(i) Elsey2(i) = 0End IfIf x > 0 And x < pos4(i) Theny3(i) = 0ElseIf x > pos4(i) And x < l Theny3(i) = 0End IfNext iy = 0For j = 1 To 10y = y + y1(j) + y2(j) + y3(j)Next jPicture2.PSet (x, y)Next xFor x = 0.01 To l Step 1For i = 1 To 10If x > 0 And x < pos1(i) Theny1(i) = fd1(i) * xiang1(i)ElseIf x > pos1(i) And x < l Theny1(i) = 0End IfIf x > 0 And x < pos2(i) Theny2(i) = fd2(i) * (pos3(i) - pos2(i)) * xiang2(i) ElseIf x > pos2(i) And x < pos3(i) Then y2(i) = fd2(i) * (pos3(i) - x) * xiang2(i) Elsey2(i) = 0End IfIf x > 0 And x < pos4(i) Theny3(i) = 0ElseIf x > pos4(i) And x < l Theny3(i) = 0End IfNext iy = 0For j = 1 To 10y = y + y1(j) + y2(j) + y3(j)Next jIf y > 0 ThenFor Hua = 0 To y Step 0.01Picture2.PSet (x, Hua)Next HuaElseIf y < 0 ThenFor Hua = y To 0 Step 0.01Picture2.PSet (x, Hua)Next HuaEnd IfNext xPicture3.ClsPicture3.Scale (-0.2 * l, 10)-(1.2 * l, -30) Picture3.Line (0, 0)-(l, 0)For x = 0.01 To l Step 0.001For i = 1 To 10If x > 0 And x < pos1(i) ThenM1(i) = -(fd1(i) * x - pos1(i) * fd1(i))ElseIf x > pos1(i) And x < l ThenM1(i) = 0End IfIf x > 0 And x < pos2(i) ThenM2(i) = -(fd2(i) * (pos3(i) - pos2(i)) * x - fd2(i) * (pos3(i) - pos2(i)) * (pos2(i) + pos3(i)) * xiang2(i) / 2)ElseIf x > pos2(i) And x < pos3(i) ThenM2(i) = fd2(i) * (pos3(i) - x) * (pos3(i) - x) / 2ElseM2(i) = 0End IfIf x > 0 And x < pos4(i) ThenM3(i) = -fd3(i)ElseIf x > pos4(i) And x < l ThenM3(i) = 0End IfNext iy = 0For j = 1 To 10y = y + M1(j) + M2(j) + M3(j)Next jPicture3.PSet (x, y)Next x For x = 0.01 To l Step 0.6For i = 1 To 10If x > 0 And x < pos1(i) ThenM1(i) = -(fd1(i) * x - pos1(i) * fd1(i))ElseIf x > pos1(i) And x < l ThenM1(i) = 0End IfIf x > 0 And x < pos2(i) ThenM2(i) = -(fd2(i) * (pos3(i) - pos2(i)) * x - fd2(i) * (pos3(i) - pos2(i)) * (pos2(i) + pos3(i)) * xiang2(i) / 2)ElseIf x > pos2(i) And x < pos3(i) ThenM2(i) = fd2(i) * (pos3(i) - x) * (pos3(i) - x) / 2ElseM2(i) = 0End IfIf x > 0 And x < pos4(i) ThenM3(i) = -fd3(i)ElseIf x > pos4(i) And x < l ThenM3(i) = 0End IfNext iy = 0For j = 1 To 10y = y + M1(j) + M2(j) + M3(j)Next jIf y > 0 And x < l ThenFor Hua = 0 To y Step 0.01Picture3.PSet (x, Hua)Next HuaElseIf y < 0 And x < l ThenFor Hua = y To 0 Step 0.01Picture3.PSet (x, Hua)Next HuaEnd IfNext xElseIf Combo1 = "左右端外伸梁" ThenDim Zhi1, Zhi2 As DoubleZhi1 = Val(InputBox("请输入左支承的位置:(m)"))Zhi2 = Val(InputBox("请输入右支承的位置:(m)"))Picture1.Line (Zhi1, -3)-(Zhi1, 0)Picture1.Line (Zhi2, -3)-(Zhi2, 0)For x = 0.01 To l Step 0.001For i = 1 To 10 Step 1If pos1(i) < Zhi1 ThenIf x > 0 And x < pos1(i) Theny1(i) = 0ElseIf x > pos1(i) And x < Zhi1 Theny1(i) = -fd1(i) * xiang1(i)ElseIf x > Zhi1 And x < Zhi2 Theny1(i) = fd1(i) * xiang1(i) * (Zhi1 - pos1(i)) / (Zhi2 - Zhi1)ElseIf x > Zhi2 And x < l Then y1(i) = 0End IfElseIf pos1(i) > Zhi1 And pos1(i) < Zhi2 Then If x > 0 And x < Zhi1 Theny1(i) = 0ElseIf x > Zhi1 And x < pos1(i) Theny1(i) = fd1(i) * (Zhi2 - pos1(i)) / (Zhi2 - Zhi1) * xiang1(i)ElseIf x > pos1(i) And x < Zhi2 Theny1(i) = -fd1(i) * (pos1(i) - Zhi1) / (Zhi2 - Zhi1) * xiang1(i)ElseIf x > Zhi2 And x < l Theny1(i) = 0End IfElseIf pos1(i) > Zhi2 And pos1(i) < l ThenIf x > 0 And x < Zhi1 Theny1(i) = 0ElseIf x > Zhi1 And x < Zhi1 Theny1(i) = -fd1(i) * xiang1(i) * (pos1(i) - Zhi2) / (Zhi2 - Zhi1)ElseIf x > Zhi2 And x < pos1(i) Theny1(i) = fd1(i) * xiang1(i)ElseIf x > Zhi2 And x < l Theny1(i) = 0End IfEnd IfIf pos2(i) > 0 And pos3(i) < Zhi1 ThenIf x > 0 And x < pos2(i) Theny2(i) = 0ElseIf x > pos2(i) And x < pos3(i) Theny2(i) = -fd2(i) * xiang2(i) * (x - pos2(i)) ElseIf x > pos3(i) And x < Zhi1 Theny2(i) = -fd2(i) * (pos3(i) - pos2(i)) * xiang2(i) ElseIf x > Zhi1 And x < Zhi2 Theny2(i) = fd2(i) * (pos3(i) - pos2(i)) * xiang2(i) * (Zhi1 - (pos2(i) + pos3(i)) / 2) / (Zhi2 - Zhi1)Elsey2(i) = 0End IfElseIf pos2(i) > Zhi1 And pos3(i) < Zhi2 Then If x > 0 And x < Zhi1 Theny2(i) = 0ElseIf x > Zhi1 And x < pos2(i) Theny2(i) = fd2(i) * (pos3(i) - pos2(i)) * (Zhi2 - (pos2(i) + pos3(i)) / 2) / (Zhi2 - Zhi1) * xiang2(i)ElseIf x > pos2(i) And x < pos3(i) Theny2(i) = fd2(i) * xiang2(i) * (pos3(i) - pos2(i)) * (Zhi2 - (pos2(i) + pos3(i)) / 2) / (Zhi2 - Zhi1) - fd2(i) * (x - pos2(i))ElseIf x > pos3(i) And x < Zhi2 Theny2(i) = -fd2(i) * (pos3(i) - pos2(i)) * ((pos2(i) + pos3(i)) / 2 - Zhi1) / (Zhi2 - Zhi1)Elsey2(i) = 0End IfElseIf pos2(i) > Zhi2 And pos3(i) < l ThenIf x > 0 And x < Zhi1 Theny2(i) = 0ElseIf x > Zhi1 And x < Zhi2 Theny2(i) = -fd2(i) * (pos3(i) - pos2(i)) * ((pos3(i) + pos2(i)) / 2 - Zhi2) * xiang2(i) / (Zhi2 - Zhi1) ElseIf x > Zhi2 And x < pos2(i) Theny2(i) = fd2(i) * (pos3(i) - pos2(i)) * xiang2(i) ElseIf x > pos2(i) And x < pos3(i) Theny2(i) = fd2(i) * (pos3(i) - pos2(i)) * xiang2(i) - fd2(i) * (x - pos2(i)) * xiang2(i)ElseIf x > pos3(i) And x < l Theny2(i) = 0End IfEnd IfIf pos4(i) > 0 And pos4(i) < Zhi1 ThenIf x > 0 And x < pos4(i) Theny3(i) = 0ElseIf x > pos4(i) And x < Zhi1 Theny3(i) = 0ElseIf x > Zhi1 And x < Zhi2 Theny3(i) = fd3(i) * xiang3(i) / (Zhi2 - Zhi1) ElseIf x > Zhi2 And x < l Theny3(i) = 0End IfElseIf pos4(i) > Zhi1 And pos4(i) < Zhi2 Then If x > 0 And x < Zhi1 Theny3(i) = 0ElseIf x > Zhi1 And x < pos4(i) Theny3(i) = fd3(i) * xiang3(i) / (Zhi2 - Zhi1) ElseIf x > pos4(i) And x < Zhi2 Theny3(i) = 0ElseIf x > Zhi2 And x < l Theny3(i) = 0End IfElseIf pos4(i) > Zhi2 And pos4(i) < l ThenIf x > 0 And x < Zhi1 Theny3(i) = 0ElseIf x > Zhi1 And x < Zhi2 Theny3(i) = fd3(i) * xiang3(i) / (Zhi2 - Zhi1) ElseIf x > Zhi2 And x < pos4(i) Theny3(i) = 0ElseIf x > pos4(i) And x < l Theny3(i) = 0End IfEnd IfNext iy = 0For j = 1 To 10y = y + y1(j) + y2(j) + y3(j)Next jPicture2.PSet (x, y)Next xFor x = 0.01 To l Step 0.6For i = 1 To 10 Step 1If pos1(i) < Zhi1 ThenIf x > 0 And x < pos1(i) Theny1(i) = 0ElseIf x > pos1(i) And x < Zhi1 Theny1(i) = -fd1(i) * xiang1(i)ElseIf x > Zhi1 And x < Zhi2 Theny1(i) = fd1(i) * xiang1(i) * (Zhi1 - pos1(i)) / (Zhi2 - Zhi1)ElseIf x > Zhi2 And x < l Theny1(i) = 0End IfElseIf pos1(i) > Zhi1 And pos1(i) < Zhi2 Then If x > 0 And x < Zhi1 Theny1(i) = 0ElseIf x > Zhi1 And x < pos1(i) Theny1(i) = fd1(i) * (Zhi2 - pos1(i)) / (Zhi2 - Zhi1) * xiang1(i) ElseIf x > pos1(i) And x < Zhi2 Theny1(i) = -fd1(i) * (pos1(i) - Zhi1) / (Zhi2 - Zhi1) * xiang1(i)ElseIf x > Zhi2 And x < l Theny1(i) = 0End IfElseIf pos1(i) > Zhi2 And pos1(i) < l ThenIf x > 0 And x < Zhi1 Theny1(i) = 0ElseIf x > Zhi1 And x < Zhi1 Theny1(i) = -fd1(i) * xiang1(i) * (pos1(i) - Zhi2) / (Zhi2 - Zhi1)ElseIf x > Zhi2 And x < pos1(i) Theny1(i) = fd1(i) * xiang1(i)ElseIf x > Zhi2 And x < l Theny1(i) = 0End IfEnd IfIf pos2(i) > 0 And pos3(i) < Zhi1 ThenIf x > 0 And x < pos2(i) Theny2(i) = 0ElseIf x > pos2(i) And x < pos3(i) Theny2(i) = -fd2(i) * xiang2(i) * (x - pos2(i)) ElseIf x > pos3(i) And x < Zhi1 Theny2(i) = -fd2(i) * (pos3(i) - pos2(i)) * xiang2(i) ElseIf x > Zhi1 And x < Zhi2 Theny2(i) = fd2(i) * (pos3(i) - pos2(i)) * xiang2(i) * (Zhi1 - (pos2(i) + pos3(i)) / 2) / (Zhi2 - Zhi1)Elsey2(i) = 0End IfElseIf pos2(i) > Zhi1 And pos3(i) < Zhi2 Then If x > 0 And x < Zhi1 Theny2(i) = 0ElseIf x > Zhi1 And x < pos2(i) Theny2(i) = fd2(i) * (pos3(i) - pos2(i)) * (Zhi2 - (pos2(i) + pos3(i)) / 2) / (Zhi2 - Zhi1) * xiang2(i)ElseIf x > pos2(i) And x < pos3(i) Theny2(i) = fd2(i) * xiang2(i) * (pos3(i) - pos2(i)) * (Zhi2 - (pos2(i) + pos3(i)) / 2) / (Zhi2 - Zhi1) - fd2(i) * (x - pos2(i))ElseIf x > pos3(i) And x < Zhi2 Theny2(i) = -fd2(i) * (pos3(i) - pos2(i)) * ((pos2(i) + pos3(i)) / 2 - Zhi1) / (Zhi2 - Zhi1)Elsey2(i) = 0End IfElseIf pos2(i) > Zhi2 And pos3(i) < l ThenIf x > 0 And x < Zhi1 Theny2(i) = 0ElseIf x > Zhi1 And x < Zhi2 Theny2(i) = -fd2(i) * (pos3(i) - pos2(i)) * ((pos3(i) + pos2(i)) / 2 - Zhi2) * xiang2(i) / (Zhi2 - Zhi1)ElseIf x > Zhi2 And x < pos2(i) Theny2(i) = fd2(i) * (pos3(i) - pos2(i)) * xiang2(i) ElseIf x > pos2(i) And x < pos3(i) Theny2(i) = fd2(i) * (pos3(i) - pos2(i)) * xiang2(i) - fd2(i) * (x - pos2(i)) * xiang2(i)ElseIf x > pos3(i) And x < l Theny2(i) = 0End IfEnd IfIf pos4(i) > 0 And pos4(i) < Zhi1 ThenIf x > 0 And x < pos4(i) Theny3(i) = 0ElseIf x > pos4(i) And x < Zhi1 Theny3(i) = 0ElseIf x > Zhi1 And x < Zhi2 Theny3(i) = fd3(i) * xiang3(i) / (Zhi2 - Zhi1) ElseIf x > Zhi2 And x < l Theny3(i) = 0 End IfElseIf pos4(i) > Zhi1 And pos4(i) < Zhi2 Then If x > 0 And x < Zhi1 Theny3(i) = 0ElseIf x > Zhi1 And x < pos4(i) Theny3(i) = fd3(i) * xiang3(i) / (Zhi2 - Zhi1) ElseIf x > pos4(i) And x < Zhi2 Theny3(i) = 0ElseIf x > Zhi2 And x < l Theny3(i) = 0End IfElseIf pos4(i) > Zhi2 And pos4(i) < l ThenIf x > 0 And x < Zhi1 Theny3(i) = 0ElseIf x > Zhi1 And x < Zhi2 Theny3(i) = fd3(i) * xiang3(i) / (Zhi2 - Zhi1) ElseIf x > Zhi2 And x < pos4(i) Theny3(i) = 0ElseIf x > pos4(i) And x < l Theny3(i) = 0End IfEnd IfNext iy = 0For j = 1 To 10y = y + y1(j) + y2(j) + y3(j)Next jIf y > 0 ThenFor Hua = 0 To y Step 0.01Picture2.PSet (x, Hua)Next HuaElseIf y < 0 ThenFor Hua = y To 0 Step 0.01Picture2.PSet (x, Hua)Next HuaEnd IfNext xPicture3.ClsPicture3.Scale (-0.2 * l, 20)-(1.2 * l, -30) Picture3.Line (0, 0)-(l, 0)For x = 0.01 To l Step 0.001For i = 1 To 10If pos1(i) < Zhi1 ThenIf x > 0 And x < pos1(i) ThenM1(i) = 0 ElseIf x > pos1(i) And x < Zhi1 ThenM1(i) = fd1(i) * xiang1(i) * (x - pos1(i))ElseIf x > Zhi1 And x < Zhi2 ThenM1(i) = fd1(i) * xiang1(i) * (pos2(i) - pos1(i)) - fd1(i) * xiang1(i) * (x - Zhi1)ElseIf x > Zhi2 And x < l ThenM1(i) = 0End IfElseIf pos1(i) > Zhi1 And pos1(i) < Zhi2 Then If x > 0 And x < Zhi1 ThenM1(i) = 0ElseIf x > Zhi1 And x < pos1(i) ThenM1(i) = -fd1(i) * (Zhi2 - pos1(i)) / (Zhi2 - Zhi1) * (x - Zhi1)ElseIf x > pos1(i) And x < Zhi2 ThenM1(i) = -fd1(i) * (Zhi2 - pos1(i)) / (Zhi2 - Zhi1) * (pos1(i) - Zhi1) + fd1(i) * xiang1(i) * (pos1(i) - Zhi1) / (Zhi2 - Zhi1) * (x - pos1(i)) ElseIf x > Zhi2 And x < l ThenM1(i) = 0End IfElseIf pos1(i) > Zhi2 And pos1(i) < l ThenIf x > 0 And x < Zhi1 ThenM1(i) = 0ElseIf x > Zhi1 And x < Zhi1 ThenM1(i) = fd1(i) * (pos1(i) - Zhi2) * xiang1(i) / (Zhi2 - Zhi1) * (x - Zhi1)ElseIf x > Zhi2 And x < pos1(i) ThenM1(i) = fd1(i) * (pos1(i) - Zhi2) * xiang1(i) - fd1(i) * xiang1(i) * (x - Zhi2)ElseIf x > Zhi2 And x < l ThenM1(i) = 0End IfEnd IfIf pos2(i) > 0 And pos3(i) < Zhi1 ThenIf x > 0 And x < pos2(i) ThenM2(i) = 0ElseIf x > pos2(i) And x < pos3(i) ThenM2(i) = fd2(i) * xiang2(i) * (x - pos2(i)) * (x - pos2(i)) / 2ElseIf x > pos3(i) And x < Zhi1 ThenM2(i) = fd2(i) * xiang2(i) * (pos3(i) - pos2(i)) * (pos3(i) - pos2(i)) / 2 + fd2(i) * xiang2(i) * (pos3(i) - pos2(i)) * (x - pos3(i))ElseIf x > Zhi1 And x < Zhi2 ThenM2(i) = fd2(i) * xiang2(i) * (Zhi2 - x)ElseM2(i) = 0End IfElseIf pos2(i) > Zhi1 And pos3(i) < Zhi2 ThenIf x > 0 And x < Zhi1 ThenM2(i) = 0ElseIf x > Zhi1 And x < pos2(i) ThenM2(i) = -(fd2(i) * (pos3(i) - pos3(i)) * (Zhi2 - (pos2(i) + pos3(i)) / 2) / (Zhi2 - Zhi1)) * (x - Zhi1)ElseIf x > pos2(i) And x < pos3(i) ThenM2(i) = -(fd2(i) * (pos3(i) - pos3(i)) * (Zhi2 - (pos2(i) + pos3(i)) / 2) / (Zhi2 - Zhi1)) * (pos2(i) - Zhi1) - (fd2(i) * (pos3(i) - pos3(i)) * (Zhi2 - (pos2(i) + pos3(i)) / 2) / (Zhi2 - Zhi1) + fd2(i) * xiang2(i) * (pos3(i) - pos2(i)) * (Zhi2 - (pos2(i) + pos3(i)) / 2) / (Zhi2 - Zhi1) - fd2(i) * (x - pos2(i))) * (x - pos2(i)) ElseIf x > pos3(i) And x < Zhi2 ThenM2(i) = -fd2(i) * (pos3(i) - pos2(i)) * ((pos2(i) + pos3(i)) / 2 - Zhi1) / (Zhi2 - Zhi1) * (Zhi2 - x)ElseM2(i) = 0End IfElseIf pos2(i) > Zhi2 And pos3(i) < l ThenIf x > 0 And x < Zhi1 ThenM2(i) = 0ElseIf x > Zhi1 And x < Zhi2 ThenM2(i) = fd2(i) * (pos3(i) - pos2(i)) * ((pos3(i) + pos2(i)) / 2 - Zhi2) * xiang2(i) / (Zhi2 - Zhi1) * (x - Zhi1)ElseIf x > Zhi2 And x < pos2(i) ThenM2(i) = fd2(i) * xiang2(i) * (pos3(i) - pos2(i)) * ((pos2(i) + pos3(i)) / 2 - x)ElseIf x > pos2(i) And x < pos3(i) ThenM2(i) = fd2(i) * xiang2(i) * (pos3(i) - x) * (pos3(i) - x) / 2ElseIf x > pos3(i) And x < l ThenM2(i) = 0End IfEnd IfIf pos4(i) > 0 And pos4(i) < Zhi1 ThenIf x > 0 And x < pos4(i) ThenM3(i) = 0ElseIf x > pos4(i) And x < Zhi1 ThenM3(i) = fd3(i) * xiang3(i)ElseIf x > Zhi1 And x < Zhi2 ThenM3(i) = fd3(i) * xiang3(i) * (x - Zhi1) - fd3(i) * xiang3(i)ElseIf x > Zhi2 And x < l ThenM3(i) = 0End IfElseIf pos4(i) > Zhi1 And pos4(i) < Zhi2 Then If x > 0 And x < Zhi1 ThenM3(i) = 0ElseIf x > Zhi1 And x < pos4(i) ThenM3(i) = -fd3(i) * (x - Zhi1) / (Zhi2 - Zhi1) * xiang3(i)ElseIf x > pos4(i) And x < Zhi2 ThenM3(i) = fd3(i) * (Zhi2 - x) / (Zhi2 - Zhi1) * xiang3(i)ElseIf x > Zhi2 And x < l ThenM3(i) = 0End IfElseIf pos4(i) > Zhi2 And pos4(i) < l ThenIf x > 0 And x < Zhi1 ThenM3(i) = 0ElseIf x > Zhi1 And x < Zhi2 ThenM3(i) = -fd3(i) * (x - Zhi1) / (Zhi2 - Zhi1) * xiang3(i)ElseIf x > Zhi2 And x < pos4(i) ThenM3(i) = -fd3(i) * xiang3(i)ElseIf x > pos4(i) And x < l ThenEnd IfEnd IfNext iy = 0For j = 1 To 10y = y + M1(j) + M2(j) + M3(j)Next jPicture3.PSet (x, y)Next x For x = 0.01 To l Step 0.6For i = 1 To 10If pos1(i) < Zhi1 ThenIf x > 0 And x < pos1(i) ThenM1(i) = 0ElseIf x > pos1(i) And x < Zhi1 ThenM1(i) = fd1(i) * xiang1(i) * (x - pos1(i))ElseIf x > Zhi1 And x < Zhi2 ThenM1(i) = fd1(i) * xiang1(i) * (pos2(i) - pos1(i)) - fd1(i) * xiang1(i) * (x - Zhi1)ElseIf x > Zhi2 And x < l ThenM1(i) = 0End IfElseIf pos1(i) > Zhi1 And pos1(i) < Zhi2 Then If x > 0 And x < Zhi1 ThenM1(i) = 0ElseIf x > Zhi1 And x < pos1(i) ThenM1(i) = -fd1(i) * (Zhi2 - pos1(i)) / (Zhi2 - Zhi1) * (x - Zhi1)ElseIf x > pos1(i) And x < Zhi2 ThenM1(i) = -fd1(i) * (Zhi2 - pos1(i)) / (Zhi2 - Zhi1) * (pos1(i) - Zhi1) + fd1(i) * xiang1(i) * (pos1(i) - Zhi1) / (Zhi2 - Zhi1) * (x - pos1(i)) ElseIf x > Zhi2 And x < l ThenM1(i) = 0End IfElseIf pos1(i) > Zhi2 And pos1(i) < l ThenIf x > 0 And x < Zhi1 ThenM1(i) = 0ElseIf x > Zhi1 And x < Zhi1 ThenM1(i) = fd1(i) * (pos1(i) - Zhi2) * xiang1(i) / (Zhi2 - Zhi1) * (x - Zhi1)ElseIf x > Zhi2 And x < pos1(i) ThenM1(i) = fd1(i) * (pos1(i) - Zhi2) * xiang1(i) - fd1(i) * xiang1(i) * (x - Zhi2)ElseIf x > Zhi2 And x < l ThenM1(i) = 0End IfEnd IfIf pos2(i) > 0 And pos3(i) < Zhi1 ThenIf x > 0 And x < pos2(i) ThenM2(i) = 0ElseIf x > pos2(i) And x < pos3(i) ThenM2(i) = fd2(i) * xiang2(i) * (x - pos2(i)) * (x - pos2(i)) / 2ElseIf x > pos3(i) And x < Zhi1 ThenM2(i) = fd2(i) * xiang2(i) * (pos3(i) - pos2(i)) * (pos3(i) - pos2(i)) / 2 + fd2(i) * xiang2(i) * (pos3(i) - pos2(i)) * (x - pos3(i))ElseIf x > Zhi1 And x < Zhi2 ThenM2(i) = fd2(i) * xiang2(i) * (Zhi2 - x)ElseM2(i) = 0End IfElseIf pos2(i) > Zhi1 And pos3(i) < Zhi2 ThenIf x > 0 And x < Zhi1 ThenM2(i) = 0ElseIf x > Zhi1 And x < pos2(i) ThenM2(i) = -(fd2(i) * (pos3(i) - pos3(i)) * (Zhi2 - (pos2(i) + pos3(i)) / 2) / (Zhi2 - Zhi1)) * (x - Zhi1) ElseIf x > pos2(i) And x < pos3(i) ThenM2(i) = -(fd2(i) * (pos3(i) - pos3(i)) * (Zhi2 - (pos2(i) + pos3(i)) / 2) / (Zhi2 - Zhi1)) * (pos2(i) - Zhi1) - (fd2(i) * (pos3(i) - pos3(i)) * (Zhi2 - (pos2(i) + pos3(i)) / 2) / (Zhi2 - Zhi1) + fd2(i) * xiang2(i) * (pos3(i) - pos2(i)) * (Zhi2 - (pos2(i) + pos3(i)) / 2) / (Zhi2 - Zhi1) - fd2(i) * (x - pos2(i))) * (x - pos2(i))ElseIf x > pos3(i) And x < Zhi2 ThenM2(i) = -fd2(i) * (pos3(i) - pos2(i)) * ((pos2(i) + pos3(i)) / 2 - Zhi1) / (Zhi2 - Zhi1) * (Zhi2 - x)ElseM2(i) = 0End IfElseIf pos2(i) > Zhi2 And pos3(i) < l ThenIf x > 0 And x < Zhi1 ThenM2(i) = 0ElseIf x > Zhi1 And x < Zhi2 ThenM2(i) = fd2(i) * (pos3(i) - pos2(i)) * ((pos3(i) + pos2(i)) / 2 - Zhi2) * xiang2(i) / (Zhi2 - Zhi1) * (x - Zhi1)ElseIf x > Zhi2 And x < pos2(i) ThenM2(i) = fd2(i) * xiang2(i) * (pos3(i) - pos2(i)) * ((pos2(i) + pos3(i)) / 2 - x)ElseIf x > pos2(i) And x < pos3(i) ThenM2(i) = fd2(i) * xiang2(i) * (pos3(i) - x) * (pos3(i) - x) / 2ElseIf x > pos3(i) And x < l ThenM2(i) = 0End IfEnd IfIf pos4(i) > 0 And pos4(i) < Zhi1 ThenIf x > 0 And x < pos4(i) ThenM3(i) = 0ElseIf x > pos4(i) And x < Zhi1 ThenM3(i) = fd3(i) * xiang3(i)ElseIf x > Zhi1 And x < Zhi2 ThenM3(i) = fd3(i) * xiang3(i) * (x - Zhi1) - fd3(i) * xiang3(i)ElseIf x > Zhi2 And x < l ThenM3(i) = 0End IfElseIf pos4(i) > Zhi1 And pos4(i) < Zhi2 Then If x > 0 And x < Zhi1 ThenM3(i) = 0ElseIf x > Zhi1 And x < pos4(i) ThenM3(i) = -fd3(i) * (x - Zhi1) / (Zhi2 - Zhi1) * xiang3(i)ElseIf x > pos4(i) And x < Zhi2 ThenM3(i) = fd3(i) * (Zhi2 - x) / (Zhi2 - Zhi1) * xiang3(i)ElseIf x > Zhi2 And x < l ThenM3(i) = 0End IfElseIf pos4(i) > Zhi2 And pos4(i) < l ThenIf x > 0 And x < Zhi1 ThenM3(i) = 0ElseIf x > Zhi1 And x < Zhi2 ThenM3(i) = -fd3(i) * (x - Zhi1) / (Zhi2 - Zhi1) * xiang3(i)ElseIf x > Zhi2 And x < pos4(i) ThenM3(i) = -fd3(i) * xiang3(i)ElseIf x > pos4(i) And x < l ThenEnd IfEnd IfNext iy = 0 For j = 1 To 10y = y + M1(j) + M2(j) + M3(j) Next jIf y > 0 And x < l ThenFor Hua = 0 To y Step 0.01 Picture3.PSet (x, Hua)Next HuaElseIf y < 0 And x < l ThenFor Hua = y To 0 Step 0.01 Picture3.PSet (x, Hua)Next HuaEnd IfNext xEnd IfEnd SubPrivate Sub Form_Load()Combo1.AddItem "简支梁" Combo1.AddItem "左端悬臂梁"Combo1.AddItem "左右端外伸梁" End Sub。
材料力学上机大作业院系:机电工程学院班级: 1208107 作者:吕肃学号: 1120810728 指导教师:张桂莲设计时间: 2014.6.12一、问题的提出:计算出6种梁的剪力,弯矩,挠度及角度,给出剪力图、弯矩图,挠曲线,角度曲线。
二、数学模型及算法算法实现:剪力,弯矩运用叠加法,挠度,角度运用积分法计算。
三、程序说明鉴于GUI界面复杂,回调函数众多,故只给出主回调函数,及对应的三个子函数。
需要输入分段矩阵x及载荷矩阵ZH。
输入分段矩阵为行矩阵,每个矩阵中的值对应载荷及支点位置或固定端,按从小到大顺序输入,从0开始。
载荷矩阵为多行矩阵,每行形式如:a b c d。
a对应载荷类型,1为力偶,2为集中力,3位分布力。
b对应载荷大小,单位为k。
c对应载荷起点位置,d对于载荷终点位置。
还可以选择不同截面类型,得到不同的E。
四、主回调程序global x ZH E I %定义所有的全局变量L1=get(handles.edit17,'string');L1=str2num(L1); %将文本格式转换到数值L2=get(handles.edit16,'string');L2=str2num(L2); %将文本格式转换到数值A=get(handles.edit18,'string');A=str2num(A); %将文本格式转换到数值B=get(handles.edit19,'string');B=str2num(B); %将文本格式转换到数值valu=get(handles.popupmenu2,'Value');value=get(handles.popupmenu3,'Value');switch valuecase 1I=pi*A^4/64;case 2I=pi*(A^4-B^4)/64;case 3I=A^3*B/12;case 4I=2450000;case 5I=23700000;case 6I=25000000;endE=get(handles.edit4,'string');E=str2num(E); %将文本格式转换到数值E=E*10^9;I=I/10^12;z=E*I;x=get(handles.edit1,'string');x=str2num(x); %将文本格式转换到数值ZH=get(handles.edit2,'string');ZH=str2num(ZH);switch valucase 1 %简支梁[n,m]=size(x);[a,b]=size(ZH);L=x(m);x1=[];for i=1:m-1x1=[x1,linspace(x(i),x(i+1),30*(x(i+1)-x(i)))]; endLO=zeros(size(x1));JL=zeros(size(x1));[PN,t]=size(ZH);[t,n]=size(x1);for i=1:PNswitch ZH(i,1) %不同类型的作用对梁的贡献case 1 %作用为弯矩M=ZH(i,2)*10^3;a=ZH(i,3);d=-M/L;JL=JL+d;LO=LO+d*x1;if a==0LO=LO+M;endif a>0&a<LLO=QLO(n,x1,a,M,LO);endcase 2 %作用为剪力P=ZH(i,2)*10^3;b=ZH(i,3);RA=(L-b)*P/L;if b>0&b<LJL(1:n)=JL+RA;LO=LO+RA*x1;[JL,LO]=QMP(n,x1,b,P,JL,LO);endcase 3 %作用为均布载荷q=ZH(i,2)*10^3;c=ZH(i,3);d=ZH(i,4);RA=(L-0.5*(c+d))*q*(d-c)/L;JL=JL+RA;LO=LO+RA*x1;[JL,LO]=QMQ(n,x1,c,d,q,JL,LO);endenddx=1/10;h=cumtrapz(LO)*dx/z;y=cumtrapz(h)*dx;D=-y(1);C=(-D-y(n))/L;h=cumtrapz(LO)*dx/z;h=h+C;y=cumtrapz(h)*dx;y=y+D;case 2 %左端固定悬臂梁[n,m]=size(x);L=x(m);x1=[];for i=1:m-1x1=[x1,linspace(x(i),x(i+1),30*(x(i+1)-x(i)))]; endLO=zeros(size(x1));JL=zeros(size(x1));[PN,t]=size(ZH);[t,n]=size(x1);for i=1:PNswitch ZH(i,1) %不同类型的作用对梁的贡献case 1 %作用为弯矩M=ZH(i,2)*10^3;a=ZH(i,3);if a>0&a<LLO=LO-M;LO=QLO(n,x1,a,M,LO);endif a==LLO=LO-M;endcase 2 %作用为剪力P=ZH(i,2)*10^3;b=ZH(i,3);RA=P;MA=-P*b;JL=JL+RA;LO=LO+RA*x1+MA;if b>0&b<L[JL,LO]=QMP(n,x1,b,P,JL,LO);endcase 3 %作用为均布载荷q=ZH(i,2)*10^3;c=ZH(i,3);d=ZH(i,4);RA=Q*(d-c);MA=-0.5*Q*(d-c)*(d+c);JL=JL+RA;LO=LO+RA*x1+MA;[JL,LO]=QMQ(n,x1,c,d,q,JL,LO);endendh=cumtrapz(LO)/z;y=cumtrapz(h);case 3 %右端固定悬臂梁[n,m]=size(x);L=x(m);x1=[];for i=1:m-1x1=[x1,linspace(x(i),x(i+1),30*(x(i+1)-x(i)))]; endLO=zeros(size(x1));JL=zeros(size(x1));[PN,t]=size(ZH);[t,n]=size(x1);for i=1:PNswitch ZH(i,1) %不同类型的作用对梁的贡献case 1 %作用为弯矩M=ZH(i,2)*10^3;a=ZH(i,3);if a==0LO=LO+M;endif a>0&a<LLO=QLO(n,x1,a,M,LO);endcase 2 %作用为剪力P=ZH(i,2)*10^3;b=ZH(i,3);if b==0JL=JL-P;LO=LO-P*x1;endif b>0&b<L[JL,LO]=QMP(n,x1,b,P,JL,LO);endcase 3 %作用为均布载荷q=ZH(i,2)*10^3;c=ZH(i,3);d=ZH(i,4);[JL,LO]=QMQ(n,x1,c,d,q,JL,LO);endenddx=1/10;h=cumtrapz(LO)*dx/z;y=cumtrapz(h)*dx;C=-h(n);D=-y(n)-C*L;h=cumtrapz(LO)*dx/z;h=h+C;y=cumtrapz(h)*dx;y=y+D;case 4 %左端外伸梁[n,m]=size(x);L=x(m);x1=[];for i=1:m-1x1=[x1,linspace(x(i),x(i+1),30*(x(i+1)-x(i)))]; endLO=zeros(size(x1));JL=zeros(size(x1));[PN,t]=size(ZH);[t,n]=size(x1);for i=1:PNswitch ZH(i,1) %不同类型的作用对梁的贡献case 1 %作用为弯矩M=ZH(i,2)*10^3;a=ZH(i,3);RA=-M/(L-L1);[JL,LO]=QMP(n,x1,L1,-RA,JL,LO);if a>0&a<LLO=QLO(n,x1,a,M,LO);endif a==0LO=LO+M;endcase 2 %作用为剪力P=ZH(i,2)*10^3;b=ZH(i,3);RA=P*(L-b)/(L-L1);[JL,LO]=QMP(n,x1,L1,-RA,JL,LO);if b>0&b<L[JL,LO]=QMP(n,x1,b,P,JL,LO);endif b==0JL=JL-P;LO=LO-P*x1;endcase 3 %作用为均布载荷q=ZH(i,2)*10^3;c=ZH(i,3);d=ZH(i,4);b=(c+d)*0.5;P=(d-c)*q;RA=P*(L-b)/(L-L1);[JL,LO]=QMP(n,x1,L1,-RA,JL,LO); [JL,LO]=QMQ(n,x1,c,d,q,JL,LO);endendfor i=1:nif x1(i)==L1t=i;endenddx=1/10;h=cumtrapz(LO)*dx/z;y=cumtrapz(h)*dx;C=(y(n)-y(t))/(t*dx-L);D=-y(n)-L*C;h=cumtrapz(LO)*dx/z;h=h+C;y=cumtrapz(h)*dx;y=y+D;case 5 %右端外伸梁[n,m]=size(x);L=x(m);x1=[];for i=1:m-1x1=[x1,linspace(x(i),x(i+1),30*(x(i+1)-x(i)))]; endLO=zeros(size(x1));JL=zeros(size(x1));[PN,t]=size(ZH);[t,n]=size(x1);for i=1:PNswitch ZH(i,1) %不同类型的作用对梁的贡献case 1 %作用为弯矩M=ZH(i,2)*10^3;a=ZH(i,3);RA=-M/L1;RB=-RA;JL=JL+RA;LO=LO+x1*RA;[JL,LO]=QMP(n,x1,L1,-RB,JL,LO);if a>0&a<LLO=QLO(n,x1,a,M,LO);endif a==0LO=LO+M;endcase 2 %作用为剪力P=ZH(i,2)*10^3;b=ZH(i,3);RA=P*(L1-b)/L1;RB=P*b/L1;JL=JL+RA;LO=LO+RA*x1;[JL,LO]=QMP(n,x1,L1,-RB,JL,LO);if b>0&b<L[JL,LO]=QMP(n,x1,b,P,JL,LO);endif b==0JL=JL-P;LO=LO-P*x1;endcase 3 %作用为均布载荷q=ZH(i,2)*10^3;c=ZH(i,3);d=ZH(i,4);b=(c+d)*0.5;P=(d-c)*q;RA=P*(L1-b)/L1;RB=P*b/L1;JL=JL+RA;LO=LO+RA*x1;[JL,LO]=QMP(n,x1,L1,-RB,JL,LO);[JL,LO]=QMQ(n,x1,c,d,q,JL,LO);endendfor i=1:nif x1(i)==L1t=i;endenddx=1/10;h=cumtrapz(LO)*dx/z;y=cumtrapz(h)*dx;D=-y(1);C=(-D-y(t))/(t*dx);h=cumtrapz(LO)*dx/z;h=h+C;y=cumtrapz(h)*dx;y=y+D;case 6 %两端外伸梁[n,m]=size(x);L=x(m);x1=[];for i=1:m-1x1=[x1,linspace(x(i),x(i+1),30*(x(i+1)-x(i)))]; endLO=zeros(size(x1));JL=zeros(size(x1));[PN,t]=size(ZH);[t,n]=size(x1);for i=1:PNswitch ZH(i,1) %不同类型的作用对梁的贡献case 1 %作用为弯矩M=ZH(i,2)*10^3;a=ZH(i,3);RA=-M/(L2-L1);RB=-RA;[JL,LO]=QMP(n,x1,L1,-RA,JL,LO);[JL,LO]=QMP(n,x1,L2,-RB,JL,LO);if a>0&a<LLO=QLO(n,x1,a,M,LO);endif a==0LO=LO+M;endcase 2 %作用为剪力P=ZH(i,2)*10^3;b=ZH(i,3);LL=L2-L1;bb=b-L1;RA=P*(LL-bb)/LL;RB=P*b/LL;[JL,LO]=QMP(n,x1,L1,-RA,JL,LO); [JL,LO]=QMP(n,x1,L2,-RB,JL,LO);if b>0&b<L[JL,LO]=QMP(n,x1,b,P,JL,LO);endif b==0JL=JL-P;LO=LO-P*x1;endcase 3 %作用为均布载荷q=ZH(i,2)*10^3;c=ZH(i,3);d=ZH(i,4);b=(c+d)*0.5;P=(d-c)*q;LL=L2-L1;bb=b-L1;RA=P*(LL-bb)/LL;RB=P*bb/LL;[JL,LO]=QMP(n,x1,L1,-RA,JL,LO); [JL,LO]=QMP(n,x1,L2,-RB,JL,LO); [JL,LO]=QMQ(n,x1,c,d,q,JL,LO);endendfor i=1:nif x1(i)==L1t=i;endendfor i=1:nif x1(i)==L2r=i;endenddx=1/10;h=cumtrapz(LO)*dx/z;y=cumtrapz(h)*dx;C=(y(r)-y(t))/(t*dx-r*dx);D=-y(t)-C*t*dx;h=cumtrapz(LO)*dx/z;h=h+C;y=cumtrapz(h)*dx;y=y+D;end[Qmax,i]=max(JL); %寻找最大剪力[Qmin,j]=min(JL); %寻找最小剪力if abs(max(JL))>=abs(min(JL))set(handles.text7,'string',Qmax); set(handles.text8,'string',x1(i)); elseset(handles.text7,'string',Qmin); set(handles.text8,'string',x1(j)); end[LOax,i]=max(LO); %寻找最大弯矩[LOin,j]=min(LO); %寻找最小弯矩if abs(max(LO))>=abs(min(LO))set(handles.text9,'string',LOax); set(handles.text10,'string',x1(i)); elseset(handles.text9,'string',LOin); set(handles.text10,'string',x1(j)); end[hmax,i]=max(h); %寻找最大弯矩[hmin,j]=min(h); %寻找最小弯矩if abs(max(h))>=abs(min(h))set(handles.text24,'string',hmax); set(handles.text25,'string',x1(i)); elseset(handles.text24,'string',hmin); set(handles.text25,'string',x1(j)); end[ymax,i]=max(y); %寻找最大弯矩[ymin,j]=min(y); %寻找最小弯矩if abs(max(y))>=abs(min(y))set(handles.text26,'string',ymax);set(handles.text27,'string',x1(i));elseset(handles.text26,'string',ymin);set(handles.text27,'string',x1(j));endaxes(handles.axes1); %绘制剪力图并显示在axe.1中stem(x1,JL);grid;title('剪力图')axes(handles.axes2); %绘制弯矩图并显示在axe.2中stem(x1,LO);grid;title('弯矩图');axes(handles.axes3);stem(x1,h);grid;title('转角图');axes(handles.axes4);stem(x1,y,'b');grid;title('挠度图');3个子函数%集中力偶对弯矩贡献的子程序:function LO=QLO(n,x1,a,M,LO)for j=1:nif x1(j)==an1=j;endendLO(n1:n)=LO(n1:n)+M;%集中力对剪力和弯矩贡献的子程序:function [JL,LO]=QMP(n,x1,b,P,JL,LO)for j=1:nif x1(j)==b;n1=j;endendJL(n1:n)=JL(n1:n)-P;LO(n1:n)=LO(n1:n)-P*(x1(n1:n)-b);%分布力对剪力和弯矩贡献的子程序:function [JL,LO]=QMQ(n,x1,c,d,q,JL,LO)for j=1:nif x1(j)>cJL(j)=JL(j)-q*(x1(j)-c);LO(j)=LO(j)-0.5*q*(x1(j)-c)^2;endif x1(j)>dJL(j)=JL(j)+q*(x1(j)-d);LO(j)=LO(j)+0.5*q*(x1(j)-d)^2;endend五、应用举例:O简支梁,长1.6m,在0.7m及1.3m处分别有力偶30KN m及集中力46KN,截面为圆形,直径200mm,弹性模量210Gp运行得出结果如下:可得出最大剪力-46000N在0m处,最大弯矩-89800N m在0m处。
H a r b i n I n s t i t u t e o f T e c h n o l o g y材料力学上机作业课程名称:材料力学设计题目:绘制梁的剪力弯矩图院系:能源科学与工程学院班级:0902101分析者:¥¥¥学号:指导教师:张桂莲设计时间:哈尔滨工业大学材料力学上机课设计说明书一,设计题目题目4 绘制梁的剪力弯矩图输入:1.梁的总长度l2.支撑条件及量的各区段长度输入(左、右固定端悬臂梁;简支梁;左、右、双外伸梁)3.各载荷大小、作用位置及方向(q i、a i、b i;p j、c j、m k、d k)输出:1.结构构型图(图示)2.剪力、弯矩(图示)3.输出剪力、弯矩的最大值及截面位置。
二,方向规定本程序规定集中作用力及均布载荷以向下为正,右固定端悬臂梁与左外伸梁集中力偶以顺时针方向为正,其他情况集中力偶以逆时针方向为正。
当取出梁的一段为研究对象时,梁左端面力以向下为正,力偶以顺时针方向为正,梁右端面力以向上为正,力偶以逆时针方向为正。
三,程序设计过程1,制作程序框架,显示提示内容,提示操作者需要输入的作用条件及各作用位置;2,编写程序使计算机读入操作者输入的作用条件;3,草稿拟写各种情况下为达到题目要求所需使用的计算公式设量的长度为l,集中力大小为p,作用位置为c,集中力大小为q,作用起始位置a,终止位置为b,集中力偶大小为m,作用位置d。
(1)左固定端悬臂梁:在任意位置x处,取x以右部分为研究对象a,终止位置为b,集中力作用位置为c,大小为P,集中力偶作用位置为d,大小为m。
①若c<x,a<b<x,d>x,则Fs y=0,M(x)=m;②若c>x,a<b<x,d<x,则Fs y=-P,M(x)=Px-Pc;③若c<x,a<x<b,d<x,则Fs y=-q(b-x),M(x)=-2q(b-x)²;④若c<x, x<a<b,d>x,则Fs y=-q(b-a),M(x)=-q(b-a)(2ba+-x);⑤若c>x,a<b<x,d>x,则Fs y=-P,M(x)= Px-Pc+m;(第①、②两种情况合成)⑥若c<x,a<x<b,d>x,则Fs y=-q(b-x),M(x)=m-2q(b-x)²;(第①、③两种情况合成)⑦若c<x,x<a<b,d>x,则Fs y=-q(b-a),M(x)=m-q(b-a)(2ba+-x);(第①、④两种情况合成)⑧若c>x,a<x<b,d<x,则Fs y=-P-q(b-x),M(x)=Px-Pc-2q(b-x)²;(第②、③两种情况合成)⑨若c>x,x<a<b,d<x,则Fs y=-P-q(b-a),M(x)=Px-Pc-q(b-a)*(2ba+-x);(第②、④两种情况合成)⑩若c>x,x<a<b,d>x,则Fs y=-P-q(b-a), M(x)=m+Px-Pc-q(b-a)*(2ba+-x);(第①、②、④两种情况合成)⑪c>x,a<x<b,d>x, 则Fs y=-P-q(b-x), M(x)m+Px-Pc-q(b-a)*(2ba+-x); (第①、②、③两种情况合成)将上述公式编入程序即可计算出在固定端悬臂梁情况下任意位置处的剪力和弯矩,采用散点法作出梁的剪力弯矩图。
利用max函数筛选出最大值及该最大值所对应的x,即可输出最大值和最大值位置。
(2)右固定端悬臂梁:在任意位置x处,取x以左部分为研究对象分析方法与(1)相同,但注意此时规定的集中力偶正方向与(1)相反(程序中已注明),仍采用散点法和max函数即可求得剪力弯矩图以及剪力弯矩的最大值与其出现位置。
(设梁的总长度为l,均布载荷起始位置为a,终止位置为b,集中力作用位置为c,大小为P,集中力偶作用位置为d,大小为m。
首先对于图示情况求支反力:∑M A=0,q(b-a)*(a+2a-b)+P*c-m+F B*l=0 ∑M B=0,q(b-a)*(i-a-2a-b)+P*(l-c)+m-FA*l=0解得:F A=[q(b-a)(l-2a-b)+ P*(l-c)+m]/l FB=2l22?-²(mPcabq-+由于F B的表达是相对于F A较简单一些,所以以A点为原点建立坐标系,并取出任意位置x以右部分为研究对象,分类如下:①若c<x,a<b<x,d>x,则Fs y= F B,M(x)=m+ F B(l-x);②若c>x,a<b<x,d<x,则Fs y= F B-P,M(x)= F B(l-x)+Px-Pc;③若c<x,a<x<b,d<x,则Fs y= F B -q(b-x),M(x)= F B(l-x)-2q(b-x)²;④若c<x,x<a<b,d>x,则Fs y=F B-q(b-a),M(x)=F B(l-x)-q(b-a)*(2ba+- x);⑤若c>x,a<b<x,d>x,则Fs y= F B -P,M(x)= F B(l-x)+Px-Pc+m;⑥若c<x,a<x<b,d>x,则Fs y= F B-q(b-x),M(x)= F B(l-x)+m-2q(b-x)²;⑦若c<x,x<a<b,d>x,则Fs y=F B-q(b-a),M(x)=F B(l-x)+m-q(b-a)*(2ba+-x);⑧若c>x,a<x<b,d<x,则Fs y=F B-P-q(b-x),M(x)=F B(l-x)+Px-Pc-2q(b-x)²;⑨若c>x,x<a<b,d<x,则Fs y=F B-P-q(b-a),M(x)=F B(l-x)+Px-Pc-q(b-a) *(2ba+-x);⑩若c>x,x<a<b,d>x,则Fs y=-F B+P-q(b-a), M(x)=F B(l-x)+m+Px-Pc-q(b-a) *(2ba+-x);⑪c>x,a<x<b,d>x, 则Fs y=F B-P-q(b-x), M(x)=F B(l-x)+m+Px-Pc-q(b-a) *(2b a +-x); 将上述公式编入程序即可计算出在简支梁情况下任意位置处的剪力和弯矩,采用散点法作出梁的剪力弯矩图。
利用max 函数筛选出最大值及该最大值所对应的x ,即可输出最大值和最大值位置。
(4)右外伸梁程序编写:设梁的总长度为l,可动铰支座位置在s2处,均布载荷起始位置为a ,终止位置为b ,集中力作用位置为c ,大小为P ,集中力偶作用位置为d ,大小为m 。
以梁最左端为原点、向右为正方向作x 轴,设右边可动铰支座距远点距离为s,则可求得支反力:∑M A =0, F B *s+m-q*(b-a)*(a+2a -b )-Pc=0 ∴F B =2s 2m -a?-²(Pc 2b q + F A =s m a b s a b q c s 22)2)(()(P 2+---+- 1)对集中力P 作用情况进行分类讨论当只有集中力作用时,∑M A =0,F B*s-Pc=0, ∴F B =s Pc F A =sc)-P(s ①c>s ,对任意位置x 处有若0≤x<s ,则Fs y '=-F A ,M(x)'=F A *x ;若s ≤x ≤c ,则Fs y '=-P ,M(x)'=P x-P c ;若c ≤x ≤l ,则Fs y '=0,M(x)'=0;②c ≤s ,对任意位置x 处有若0≤x<s ,则Fs y '=-F A ,M(x)'=F A *x ;若c ≤x ≤s ,则Fs y '=P-F A ,M(x)'=F A *x-P(x-c);若s<x ≤l ,则Fs y '=0,M(x)'=0;2)对集中力偶m 作用情况进行分类讨论求支反力:F A +F B =0, ∑M A =0,F B*s+m=0, ∴F B =-s m F A =s m ①d>s ,对任意位置x 处有若0≤x ≤s ,则Fs y ''=-s m , M(x)''=sm x ; 若s <x ≤d ,则Fs y ''=0, M(x)''=s m x-s m (x-s)=m ; 若d<x ≤l ,则Fs y ''=0, M(x)''=0;②d ≤s ,对任意位置x 处有若0≤x ≤d ,则Fs y ''=-s m , M(x)''=sm x ; 若d <x ≤s ,则Fs y ''=-s m , M(x)''=s m x-m ; 若s<x ≤l ,则Fs y ''=0, M(x)''=0;3)对均布载荷q 作用情况进行分类讨论当只有均布载荷作用时,求支反力:F A +F B =q(b-a), ∑M A =0,F B*s-q(b-a)(a+2a -b )=0, ∴F B =-2s ))(a (q a b b -+ F A =2sb)-a)(a -q(b ① 当0≤a <b ≤s 时,对任意位置x 处有若0≤x ≤a ,则Fs y '''=-F A , M(x)'''=F A*x ;若a <x <b ,则Fs y '''=-F A +q(x-a), M(x)'''=F A*x-21q (x-a)²; 若b ≤x ≤s ,则Fs y '''=-F A +q(b-a), M(x)'''=F A*x-q(b-a)(x-2b a +); 若s <x ≤l ,则Fs y '''=0, M(x)'''=0;② 当0≤a <s ≤b 时,对任意位置x 处有若0≤x ≤a ,则Fs y '''=-F A , M(x)'''=F A*x ;若a <x <s ,则Fs y '''=-F A +q(x-a), M(x)'''=F A*x-21q (x-a)²; 若s ≤x ≤b ,则Fs y '''=-q(b-x), M(x)'''=21q(b-x)²;若b <x ≤l ,则Fs y '''=0, M(x)'''=0;③ 当0≤s ≤a<b 时,对任意位置x 处有若0≤x ≤s ,则Fs y '''=-F A , M(x)'''=F A*x ;若s <x <a ,则Fs y '''=-q(b-a), M(x)'''=q(b-a)(x-2b a ); 若a ≤x ≤b ,则Fs y '''=-q(b-x), M(x)'''=-21q(b-x)²;若b <x ≤l ,则Fs y '''=0, M(x)'''=0;最后采用叠加法Fs y =Fs y '+Fs y ''+Fs y ''',M(x)=M(x)'M(x)''+M(x)'''(5)左外伸梁程序编写:分析方法与(4)相同,但注意此时规定的集中力偶正方向与(4)相反(程序中已注明),仍采用散点法和max 函数即可求得剪力弯矩图以及剪力弯矩的最大值与其出现位置。