哈工大材料力学计算机计算大作业_范例
材料力学上机大作业(哈工大)
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材料力学上机报告课程名称:材料力学设计题目:二向应力状态分析院系:XXXXXX班级:XXXXXX设计者:XXXXXX学号:XXXXXX设计时间:2013.06.18哈尔滨工业大学二向应力状态分析一:课题要求1.输入:任意一点的应力状态:(σx、σy、τxy);某截面方位角α2.输出:输入点的主应力(σ1、σ2、σ3),方位角α斜截面上的应力σα、τα。
及主方向角α3.画出应力圆示意图。
4.程序运行时为界面显示形式。
二:程序框图三:所编程序x=str2double(get(handles.edit1,'string'));y=str2double(get(handles.edit2,'string'));xy=str2double(get(handles.edit3,'string'));M=str2double(get(handles.edit4,'string')); %将窗口输入值分别赋给x,y,xy,M b=sqrt((x/2-y/2)^2+xy^2);x1=(x+y)/2+b;x3=(x+y)/2-b;x2=0;if x1<0x2=x1;x1=0;endt=(x1-x3)/2;M=M*pi/180;b1=(x+y)/2+(x-y)*cos(2*M)/2-xy*sin(2*M);b2=(x-y)*sin(2*M)/2+xy*cos(2*M);b3=90*atan((-2*xy)/(x+y))/pi;%计算输出的主切应力大小、方向和截面上的应力并赋值set(handles.edit5,'string',x1);set(handles.edit6,'string',x2);set(handles.edit7,'string',x3);set(handles.edit9,'string',t);set(handles.edit10,'string',b3);set(handles.edit11,'string',b1);set(handles.edit12,'string',b2);%在输出窗口显示主切应力大小、方向和截面上应力b4=sqrt(b.^2+t.^2);v1=(x+y)/2-b4:0.001:(x+y)/2+b4;b11=sqrt(b4.^2-(v1-(x+y)/2).^2);b12=-sqrt(b4.^2-(v1-(x+y)/2).^2);%绘制应力圆上的点axes(handles.axes1); %选择应力圆的输出地址plot(v1,b11,v1,b12);grid on%绘制应力圆以上程序为在matlab中使用GUI编程时的主代码,界面代码请见m文件。
哈工大 材料力学 MATLAB 梁 上机 大作业
本程序只支持静定结构的梁(左端悬臂梁、简支梁)函数输入格式: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,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图都经过笔算检验完全正确。
哈工大材料力学大作业--matlab编程
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材料力学上机作业课程名称:材料力学设计题目:应力状态分析院系:机电学院班级:分析者:学号:指导教师:***设计时间:2013年6月18日哈尔滨工业大学材料力学上机课设计说明书一, 设计题目题目7 应力状态分析 输入:1. 平面应力状态输入:x y xy σστ(,,);某截面方位角α2. 空间应力状态输入:,x y z xy yz zx σσστττ(,,,,)输出: 1. 输出主应力123σσσ(,,)2. 最大切应力(13max 132σσττ-==)3.如为平面应力状态则需要输出方位角α斜截面上的应力ααστ、及主方向角*σα4. 画出应力圆示意图二, 程序计算设计过程1. 平面应力状态分析对于任意平面应力状态,有max min σσ=2x y σσ+±主应力为:1max 23min ,0,σσσσσ===并且由 2tan 2xyx yστασσ=-可求得主应力方向角13σσαα、。
对于任意一个方位角α,有:=cos 2sin 222sin 2cos 22x yx yxy x yxy αασσσσσατασστατα++++-=-+从而,输入任意角α,即可求得该截面的应力状态ααστ、并且ααστ、都是关于α的函数,上式即为应力圆的参数方程,参数为α。
将α从0到pi 取一系列的值,则可以求出一系列的ααστ、,在坐标系中找到对应点,连接即可作出应力圆。
2. 三向应力状态分析解特征方程 321230I I I σσσ-+-=即可求出主应力123σσσ、、 其中:123||||||||x y z xyx y zy z xz xy y yz z zx x x yx zx xyy zy xzyz z I I I σσσστστσττστστσστττστττσ=-+⎛⎫⎛⎫⎛⎫=++⎪ ⎪ ⎪⎝⎭⎝⎭⎝⎭⎛⎫⎪= ⎪ ⎪⎝⎭再由 13max 132σσττ-== 可求得最大切应力。
材料力学上机大作业(matlab编)
一、可实现课题在如图所示的悬臂梁中,杆件为圆杆。
杆长为L,直径为D,材料弹性模量为E。
输入集中力F大小,作用点a,弯矩M,作用点b,即可求得悬臂梁的挠度曲线图。
二、程序代码clear alldisp('请给定材料信息'); %输入材料信息L=input('圆杆长度L(/M)=');D=input('圆杆直径D(/M)=');E=input('弹性模量E(/GPa)=');I=double(D^4*3.14/32);disp('请给定受力情况'); %输入受力情况F=input('切向集中力大小F(/N)=');a=input('切向集中力作用位置(/M)=');M=input('弯矩大小M(/N*M)=');b=input('弯矩作用位置(/M)=');x1=0:0.01:a; %F引入的挠度vx1=(-F*x1.^2*3*a+F*x1.^3)*(1/(6*E*10^9*I));x2=a:0.01:L;vx2=(-F*a.^2*3*x2+F*a.^3)*(1/(6*E*10^9*I));v11=[vx1,vx2];x11=[x1,x2];x3=0:0.01:b; %M引入的挠度vx3=(-M*x3.^2)*(1/(2*E*10^9*I));x4=b:0.01:L;vx4=(-M*b*x4+M*0.5*b.^2)*(1/(E*10^9*I));x22=[x3,x4];v22=[vx3,vx4];v33=v22+v11; %叠加plot(x11,v33),xlabel('x /M'),ylabel('v(x) /M')title('挠曲线图')grid on;三、使用方法运行代码输入圆杆长度(单位:m)输入圆杆直径(单位:m)输入弹性模量(单位:GPa)输入集中力大小(单位:N)(向下为正,若无请输入0)输入集中力作用位置(单位:m)(若无请输入0)输入弯矩大小(单位:N*m)(逆时针为正,若无请输入0)输入弯矩作用位置(单位:m)(若无请输入0)输出挠曲线图四、运行实例【实例1】圆杆同时受集中力与弯矩作用,输入、输出见下图。
哈工大材力上机大作业解析
材料力学上机报告课程名称:材料力学设计题目:简支梁在任意载荷下剪力图弯矩图挠度曲线的绘制院系:材料学院班级:设计者:学号:编程语言: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("您还有数据未输入。
材力上机
Harbin Institute of Technology材料力学上机作业班号:1308109学号:1130810904姓名:李乾指导教师:牟宗花完成时间:2015/6/17一、题目:n个力,h个力偶,m段分布力共同作用下的最大弯矩,最大挠度。
二、程序:(包括运行结果截图)#include<stdio.h>double fFs0(double l,double a,double F,double E,double I,double x){double b,fs;b=l-a;if(x>=0&&x<=a){fs=-a*F/l;}else if(x>a&&x<=l){fs=b*F/l;}return fs;}double fM0(double l,double a,double F,double E,double I,double x){double b,M;b=l-a;if(x>=0&&x<=a){M=-a*F*x/l;}else if(x>a&&x<=l){M=(l-x)*b*F/l;}return M;}double fv0(double l,double a,double F,double E,double I,double x){double b,v;b=l-a;if(x>=0&&x<=a){v=-F*b*x*(l*l-x*x-b*b)/(6*E*I*l);}else if(x>a&&x<=l){v=-F*b*(l*(x-a)*(x-a)*(x-a)/b+(l*l-b*b)*x-x*x*x)/(6*E*I*l);}return v;}double fFs1(double l,double a,double Me,double E,double I,double x) {double b,Fs;b=l-a;if(x>=0&&x<=a){Fs=Me/l;}else if(x>a&&x<=l){Fs=-Me/l;}return Fs;}double fM1(double l,double a,double Me,double E,double I,double x) {double b,M;b=l-a;if(x>=0&&x<=a){M=-Me*x/l;}else if(x>a&&x<=l){M=Me*x/l;}return M;}double fv1(double l,double a,double Me,double E,double I,double x) {double b,v;b=l-a;if(x>=0&&x<=a){v=Me*x/(6*E*I*l)*(l*l-3*b*b-x*x);}else if(x>a&&x<=l){v=Me/(6*E*I*l)*(-x*x*x+3*l*(x-a)*(x-a)+(l*l-3*b*b)*x);}return v;}double fFs2(double l,double a,double b,double q,double E,double I,double x){double c,FA,FB,c1,d1,Fs;c=l-a-b;FA=q*c*(b+c/2)/l;FB=q*c*(a+c/2)/l;c1=(8*q*c*(b+0.5*c)*(l*l-0.5*(b+0.5*c)*(b+0.5*c))+3*q*c*c*c*c+5*q*a*c*c*c+5*q*c*c* c)/(48*l);d1=1*q*c*c*c*c/16+5*q*a*c*c*c/48;if (x>=0&&x<=a){Fs=-FB;}else if(x>a&&x<=a+c){Fs=(x-a)*q-FA;}else if(x>a+c&&x<=l){Fs=FB;}return Fs;}double fM2(double l,double a,double b,double q,double E,double I,double x){double c,FA,FB,c1,d1,M;c=l-a-b;FA=q*c*(b+c/2)/l;FB=q*c*(a+c/2)/l;c1=(8*q*c*(b+0.5*c)*(l*l-0.5*(b+0.5*c)*(b+0.5*c))+3*q*c*c*c*c+5*q*a*c*c*c+5*q*c*c* c)/(48*l);d1=1*q*c*c*c*c/16+5*q*a*c*c*c/48;if (x>=0&&x<=a){M=FA*x;}else if(x>a&&x<=a+c){M=FA*x-(x-a)*(x-a)/2*q;}else if(x>a+c&&x<=l){M=FB*(l-x);}return M;}double fv2(double l,double a,double b,double q,double E,double I,double x){double c,FA,FB,c1,d1,v;c=l-a-b;FA=q*c*(b+c/2)/l;FB=q*c*(a+c/2)/l;c1=(8*q*c*(b+0.5*c)*(l*l-0.5*(b+0.5*c)*(b+0.5*c))+3*q*c*c*c*c+5*q*a*c*c*c+5*q*c*c* c)/(48*l*E*I);d1=q*c*c*c*c/(16*E*I)+5*q*a*c*c*c/(48*E*I);if (x>=0&&x<=a){v=q*c*(b+c/2)/(6*l*E*I)*x*x*x+c1*x;}else if(x>a&&x<=a+c){v=q*c*(b+1*c/2)/(6*l*E*I)*x*x*x-q*(x-a)*(x-a)*(x-a)*(x-a)/(24*E*I)+c1*x;}else if(x>a+c&&x<=l){v=q*c*(b+0.5*c)/(6*l*E*I)*x*x*x-(q*c*(x-a-0.5*c)*(x-a-0.5*c)*(x-a-0.5*c))/(12*E*I)+(c1-5/(48*E*I)*q*c*c*c)*x+d1;}return v;}main(){int n,h,m,i;double M=0,Fs=0,v=0,E=0,I=0,l=0,x=0,Fsm=0,Mm=0,vm=0,x1=0,x2=0,x3=0;printf("输入l/m,E/GPa,I/cm^4:\n");scanf("%lf,%lf,%lf",&l,&E,&I);E=E*1000000000;I=I*0.00000001;printf("输入力的个数n=");scanf("%d",&n);printf("输入力偶的个数h=");scanf("%d",&h);printf("输入分布力的个数m=");scanf("%d",&m);double ai[50],Fi[50],ak[50],mk[50],aj[50],bj[50],qj[50];printf("输入ai/m的%d个值\n",n);for(i=0;i<n;i++){scanf("%lf",&ai[i]);}printf("输入Fi/kN的%d个值\n",n);for(i=0;i<n;i++){scanf("%lf",&Fi[i]);Fi[i]=1000*Fi[i];}printf("输入ak/m的%d个值\n",h);for(i=0;i<h;i++){scanf("%lf",&ak[i]);}printf("输入mk/kmN的%d个值\n",h); for(i=0;i<h;i++){scanf("%lf",&mk[i]);mk[i]=1000*mk[i];}printf("输入aj的%d个值\n",m);for(i=0;i<m;i++){scanf("%lf",&aj[i]);}printf("输入bj的%d个值\n",m);for(i=0;i<m;i++){scanf("%lf",&bj[i]);}printf("输入qj/kN/m的%d个值\n",m); for(i=0;i<m;i++){scanf("%lf",&qj[i]);qj[i]=1000*qj[i];}for(x=0;x<=l;x+=l/500){Fs=0;M=0;v=0;for(i=0;i<n;i++){Fs=Fs+fFs0(l,ai[i],Fi[i],E,I,x);M=M+fM0(l,ai[i],Fi[i],E,I,x);v=v+fv0(l,ai[i],Fi[i],E,I,x);}for(i=0;i<h;i++){Fs=Fs+fFs1(l,ak[i],mk[i],E,I,x);M=M+fM1(l,ak[i],mk[i],E,I,x);v=v+fv1(l,ak[i],mk[i],E,I,x);}for(i=0;i<m;i++){Fs=Fs+fFs2(l,aj[i],bj[i],qj[i],E,I,x);M=M+fM2(l,aj[i],bj[i],qj[i],E,I,x);v=v+fv2(l,aj[i],bj[i],qj[i],E,I,x);}if(Fs*Fs>Fsm*Fsm)Fsm=Fs;if(M*M>Mm*Mm)Mm=M;if(v*v > vm*vm)vm=v;}Fsm=Fsm/1000;Mm=Mm/1000;图 1 运行结果vm=vm*1000;printf("最大剪力为%lf/kN\n最大弯矩为%lf/kNm\n最大挠度为%lf/mm\n",Fsm,Mm,vm); }运行结果如上图所示三、收获、感想:通过本次上机实验,我认识到了利用计算机编程求解问题的方法,掌握了基本的利用计算机解决力学问题的办法。
哈工大材料力学计算机计算大作业_范例
B
ql 3 48 EI z
500 23 1.5215mrad 3 0.034 0.054 3 9 0.04 0.06 48 200 10 12 12 500 2 4 1.1411mm 3 0.034 0.0543 9 0.04 0.06 128 200 10 12 12
max
1000 32 1 5.77 mm , x 3 1732.1mm 9 3 100000 3
电算解:
故:与理论解一致。
第 十四 页 共 二十一 页
材料力学大作业
(8)理论解:
增补条件: 代入约定条件算得: A M 3000 N m , a 1 .6 m , 电算解:
3
电算解:
故:与理论解一致。
第 十七 页 共 二十一 页
材料力学大作业
(11)理论解:
代入约定数据解之得: A B 11 .25mrad ; C
5 1000 34 10.55mm 384 100000
电算解:
故:与理论解一致。
第 十八 页 共 二十一 页
然后,我们需要输入抗弯刚度。题目没有给怎么办?不怕,我们有“抗弯刚度计算器”!点击对 应区段抗弯刚度边上的按钮即可开始计算!
第 三 页 共 二十一 页
材料力学大作业
在计算完毕之后,点击“置入并返回” ,则我们又来到了基本信息输入界面。由于这一根简单 梁是等截面、等抗弯刚度的,所以我们不用去管“区段二”和“区段三”的相关文本框(实际上在 你选定对应的区段之前,这些文本框都是无法激活的) 。我们需要点击“更新基本信息”按键,以 核查、写入数据。核查无误,我们点击“受力情况输入”按钮。
2016新编哈工大材料力学上机大作业四——绘制梁的剪力弯矩图
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); (第①、②、③两种情况合成)将上述公式编入程序即可计算出在固定端悬臂梁情况下任意位置处的剪力和弯矩,采用散点法作出梁的剪力弯矩图。
哈尔滨工业大学材料力学编程题c语言程序
材料力学上机课程作业:C语言编写1一个力作用下的任意截面的弯矩,挠度。
程序:#include <stdio.h>#include<math.h>double Mz,l,a,x,v,E,I,b,F;main(){printf("请输入长度l\n");scanf("%lf",&l);printf("请输入长度a\n");scanf("%lf",&a);printf("请输入弹性模量E\n");scanf("%lf",&E);printf("请输入极惯性矩I\n");scanf("%lf",&I);printf("请输入力F\n");scanf("%lf",&F);printf("请输入x\n");scanf("%lf",&x);b=l-a;if(x>0&&x<a){Mz=F*(l-a)*x/l;v=-F*b*x*(l*l-x*x-b*b)/(6*E*I*l);printf("Mz=%f\n",Mz);printf("v=%f\n",v);}else if(x>a&&x<l){Mz=F*a*(l-x)/l;v=-F*b*(l/b*pow(x-a,3)+(l*l-b*b)*x-x*x*x)/(6*E*I*l);printf("Mz=%f\n",Mz);printf("v=%f\n",v);}else{printf("數值溢出\n");}}运算结果:选取材料的L=1m,E=4.5GPa。
哈工大材料力学上机编程报告
材料力学上机大作业题目名称:二向应力状态分析通用程序作者班号作者学号:作者姓名:指导教师:完成时间:2013年运行环境:microsoft visual basic语言环境结果数据:主应力的大小和方向、主切应力的大小和方向、任意截面上的应力大小。
同时可以输出单元体和应力圆。
1.双击打开材料力学二向应力状态分析通用程序,弹出下示对话框2.按提示要求输入数据正应力和切应力,以及所要求应力状态的截面角度,单击确定,在计算结果栏显示出所求得的数据结果。
3.单击“输出单元体和应力圆”按钮,弹出新的对话框如下图5.单击“重新输入”返回上级窗体,可以按步骤重新输入数据进行下一组数据的计算附:源程序代码 form1语句:Private Sub Command1_Click()Dim j As DoubleDim k As DoubleDim i As DoubleDim q As Double '输入的应力状态Dim m As DoubleDim n As DoubleDim p As Double '输出的主应力Dim X As DoubleDim Y As DoubleDim z As Double '输出的切应力Dim a As DoubleDim b As DoubleDim c As Double '输出的任意应力状态j = Val(Text1.Text)k = Val(Text2.Text)i = Val(Text3.Text)q = Val(Text4.Text)/180*3.14159m = (j + k) / 2 + Sqr(((j - k) / 2) ^ 2 + i ^ 2) '最大主应力n = (j + k) / 2 - Sqr(((j - k) / 2) ^ 2 + i ^ 2) '最小主应力If j = k Thenp = 45Elsep = ((Atn((i * 2) / (j - k))) / 2) / 3.1415926 * 180 '角度End IfX = Sqr(((j - k) / 2) ^ 2 + i ^ 2) '最大切应力Y = -Sqr(((j - k) / 2) ^ 2 + i ^ 2) '最小切应力If i = 0 Thenz = 45Elsez = ((Atn(-(j - k) / (2 * i))) / 2) / 3.1415926 * 180 '主切平面方位角End Ifa = (j + k) / 2 + (j - k) * Cos(2 * q) / 2 + i * Sin(2 * q) '任意面应力b = -(j - k) * Sin(2 * q) / 2 + i * Cos(2 * q)Text7.Text = Format(m, "0.00")Text8.Text = Format(n, "0.00")Text9.Text = Format(p, "0.00")Text10.Text = Format(X, "0.00")Text11.Text = Format(Y, "0.00")Text12.Text = Format(z, "0.00")σ=xText5.Text = Format(a, "0.00")Text6.Text = Format(b, "0.00")End SubPrivate Sub Command2_Click()Form1.Visible = FalseForm2.Visible = TrueEnd Subform2语句:Private Sub Command2_Click()Form1.Visible = TrueForm2.Visible = FalseEnd SubPrivate Sub picture2_GotFocus()Dim j As DoubleDim k As DoubleDim i As DoubleDim q As Double '输入的应力状态Dim m As DoubleDim n As DoubleDim p As Double '输出的主应力Dim X As DoubleDim Y As DoubleDim z As Double '输出的切应力Dim a As DoubleDim b As Double '输出的任意应力状态Dim c As Doublej = Val(Form1.Text1.Text)k = Val(Form1.Text2.Text)i = Val(Form1.Text3.Text)q = Val(Form1.Text4.Text) /180*3.14159m = (j + k) / 2 + Sqr(((j - k) / 2) ^ 2 + i ^ 2) '最大主应力n = (j + k) / 2 - Sqr(((j - k) / 2) ^ 2 + i ^ 2) '最小主应力If j = k Thenp = 45Elsep = ((Atn((i * 2) / (j - k))) / 2) / 3.1415926 * 180 '角度End Ifc = (j + k) / 2 + (j - k) / 2 * Cos(2 * p) + c * Sin(2 * p)If c <> m Thenp = p + 90End IfX = Sqr(((j - k) / 2) ^ 2 + i ^ 2) '最大切应力Y = -Sqr(((j - k) / 2) ^ 2 + i ^ 2) '最小切应力If i = 0 Thenz = 45Elsez = ((Atn(-(j - k) / (2 * i))) / 2) / 3.1415926 * 180 '主切平面方位角End Ifa = (j + k) / 2 + (j - k) * Cos(2 * q) / 2 + i * Sin(2 * q)b = -(j - k) * Sin(2 * q) / 2 + i * Cos(2 * q)Picture2.Cls '清除图中线条Picture2.DrawWidth = 3Picture2.Scale (-2, 2)-(2, -2)Picture2.Line (-1, 1)-(-1, -1)Picture2.Line (-1, -1)-(1, -1)Picture2.Line (1, -1)-(1, 1)Picture2.Line (1, 1)-(-1, 1) '输出正方形Picture2.DrawWidth = 1If p <> 0 ThenIf Abs(Tan(p)) < 1 ThenPicture2.Line (0, 0)-(Tan(p), -1), vbGreenPicture2.Line (0, 0)-(-Tan(p), 1), vbGreenPicture2.Line (0, 0)-(1.6 * Cos(p), 1.6 * Sin(p)), vbGreenElseIf Abs(Tan(p)) > 1 ThenPicture2.Line (0, 0)-(1, -1 / Tan(p)), vbGreenPicture2.Line (0, 0)-(-1, 1 / Tan(p)), vbGreenPicture2.Line (0, 0)-(1.6 * Cos(p), 1.6 * Sin(p)), vbGreen '按角度不同作出主应力的平面End IfEnd IfEnd IfPicture2.DrawWidth = 3If i > 0 ThenPicture2.Line (1.2, -0.8)-(1.2, 0.8), vbRedPicture2.Line (1.2, 0.8)-(1.3, 0.7), vbRedPicture2.Line (1.2, 0.8)-(1.1, 0.7), vbRed '切应力Picture2.Line (-1.2, -0.8)-(-1.2, 0.8), vbRedPicture2.Line (-1.2, -0.8)-(-1.3, -0.7), vbRedPicture2.Line (-1.2, -0.8)-(-1.1, -0.7), vbRed '切应力Picture2.Line (0.8, 1.2)-(-0.8, 1.2), vbRedPicture2.Line (0.8, 1.2)-(0.7, 1.3), vbRedPicture2.Line (0.8, 1.2)-(0.7, 1.1), vbRed '切应力Picture2.Line (0.8, -1.2)-(-0.8, -1.2), vbRedPicture2.Line (-0.8, -1.2)-(-0.7, -1.3), vbRedPicture2.Line (-0.8, -1.2)-(-0.7, -1.1), vbRed '切应力ElseIf i < 0 ThenPicture2.Line (1.2, -0.8)-(1.2, 0.8), vbRedPicture2.Line (1.2, -0.8)-(1.3, -0.7), vbRedPicture2.Line (1.2, -0.8)-(1.1, -0.7), vbRed '切应力Picture2.Line (-1.2, -0.8)-(-1.2, 0.8), vbRedPicture2.Line (-1.2, 0.8)-(-1.3, 0.7), vbRedPicture2.Line (-1.2, 0.8)-(-1.1, 0.7), vbRed '切应力Picture2.Line (0.8, 1.2)-(-0.8, 1.2), vbRedPicture2.Line (-0.8, 1.2)-(-0.7, 1.3), vbRedPicture2.Line (-0.8, 1.2)-(-0.7, 1.1), vbRed '切应力Picture2.Line (0.8, -1.2)-(-0.8, -1.2), vbRedPicture2.Line (0.8, -1.2)-(0.7, -1.3), vbRedPicture2.Line (0.8, -1.2)-(0.7, -1.1), vbRed '切应力End IfEnd IfIf j > 0 ThenPicture2.Line (1, 0)-(1.8, 0), vbRedPicture2.Line (1.8, 0)-(1.7, 0.1), vbRedPicture2.Line (1.8, 0)-(1.7, -0.1), vbRed '主应力Picture2.Line (-1, 0)-(-1.8, 0), vbRedPicture2.Line (-1.8, 0)-(-1.7, 0.1), vbRedPicture2.Line (-1.8, 0)-(-1.7, -0.1), vbRed '主应力ElseIf j < 0 ThenPicture2.Line (1, 0)-(1.8, 0), vbRedPicture2.Line (1, 0)-(1.1, 0.1), vbRedPicture2.Line (1, 0)-(1.1, -0.1), vbRed '主应力Picture2.Line (-1, 0)-(-1.8, 0), vbRedPicture2.Line (-1, 0)-(-1.1, 0.1), vbRedPicture2.Line (-1, 0)-(-1.1, -0.1), vbRed '主应力End IfEnd IfIf k > 0 ThenPicture2.Line (0, 1)-(0, 1.8), vbRedPicture2.Line (0, 1.8)-(0.1, 1.7), vbRedPicture2.Line (0, 1.8)-(-0.1, 1.7), vbRedPicture2.Line (0, -1)-(0, -1.8), vbRedPicture2.Line (0, -1.8)-(0.1, -1.7), vbRedPicture2.Line (0, -1.8)-(-0.1, -1.7), vbRed ElseIf k < 0 ThenPicture2.Line (0, 1)-(0, 1.8), vbRedPicture2.Line (0, 1)-(0.1, 1.1), vbRedPicture2.Line (0, 1)-(-0.1, 1.1), vbRedPicture2.Line (0, -1)-(0, -1.8), vbRedPicture2.Line (0, -1)-(0.1, -1.1), vbRedPicture2.Line (0, -1)-(-0.1, -1.1), vbRedEnd IfEnd IfEnd SubPrivate Sub Picture3_GotFocus()Dim j As DoubleDim k As DoubleDim i As DoubleDim q As Double '输入的应力状态Dim m As DoubleDim n As DoubleDim p As Double '输出的主应力Dim X As DoubleDim Y As DoubleDim z As Double '输出的切应力Dim a As DoubleDim b As DoubleDim c As Double '输出的任意应力状态j = Val(Form1.Text1.Text)k = Val(Form1.Text2.Text)i = Val(Form1.Text3.Text)q = Val(Form1.Text4.Text) /180*3.14159m = (j + k) / 2 + Sqr(((j - k) / 2) ^ 2 + i ^ 2) '最大主应力n = (j + k) / 2 - Sqr(((j - k) / 2) ^ 2 + i ^ 2) '最小主应力If j = k Thenp = 45Elsep = ((Atn((i * 2) / (j - k))) / 2) / 3.1415926 * 180 '角度End IfX = Sqr(((j - k) / 2) ^ 2 + i ^ 2) '最大切应力Y = -Sqr(((j - k) / 2) ^ 2 + i ^ 2) '最小切应力If i = 0 Thenz = 45Elsez = ((Atn(-(j - k) / (2 * i))) / 2) / 3.1415926 * 180 '主切平面方位角End Ifa = (j + k) / 2 + (j - k) * Cos(2 * q) / 2 + i * Sin(2 * q)b = -(j - k) * Sin(2 * q) / 2 + i * Cos(2 * q)Picture3.Cls '清除图中线条s = (j + k) / 2r = ((j + k) / 2 - n)Picture3.DrawWidth = 3 '确定线宽Picture3.ScaleMode = 3If s <> 0 ThenPicture3.Scale (-(1.6 * r + Abs(s)), (1.6 * r + Abs(s)))-((1.6 * r + Abs(s)), -(1.6 * r + Abs(s))) '定义坐标Picture3.Line ((1.5 * r + Abs(s)), 0)-(-(1.5 * r + Abs(s)), 0)Picture3.Line (0, -(1.5 * r + Abs(s)))-(0, (1.5 * r + Abs(s)))Picture3.Line ((1.5 * r + Abs(s)), 0)-((1.4 * r + Abs(s)), 0.1 * r)Picture3.Line ((1.5 * r + Abs(s)), 0)-((1.4 * r + Abs(s)), -0.1 * r)ElsePicture3.Scale (-2, 2)-(2, -2) '定义坐标Picture3.Line (-1.9, 0)-(1.9, 0)Picture3.Line (0, -1.9)-(0, 1.9)Picture3.Line (1.9, 0)-(1.7, 0.1)Picture3.Line (1.9, 0)-(1.7, -0.1)End IfPicture3.Circle (s, 0), Abs(r), vbRed '做圆,圆心,半径,红线End SubPrivate Sub Command1_Click()Dim j As DoubleDim k As DoubleDim i As DoubleDim q As Double '输入的应力状态Dim m As DoubleDim n As DoubleDim p As Double '输出的主应力Dim X As DoubleDim Y As DoubleDim z As Double '输出的切应力Dim a As DoubleDim b As DoubleDim c As Double '输出的任意应力状态j = Val(Form1.Text1.Text)k = Val(Form1.Text2.Text)i = Val(Form1.Text3.Text)q = Val(Form1.Text4.Text) /180*3.14159m = (j + k) / 2 + Sqr(((j - k) / 2) ^ 2 + i ^ 2) '最大主应力n = (j + k) / 2 - Sqr(((j - k) / 2) ^ 2 + i ^ 2) '最小主应力If j = k Thenp = 45Elsep = ((Atn((i * 2) / (j - k))) / 2) / 3.1415926 * 180 '角度End Ifc = (j + k) / 2 + (j - k) / 2 * Cos(2 * p) + c * Sin(2 * p)If c <> m Thenp = p + 90End If'判定X = Sqr(((j - k) / 2) ^ 2 + i ^ 2) '最大切应力Y = -Sqr(((j - k) / 2) ^ 2 + i ^ 2) '最小切应力If i = 0 Thenz = 45Elsez = ((Atn(-(j - k) / (2 * i))) / 2) / 3.1415926 * 180 '主切平面方位角End Ifa = (j + k) / 2 + (j - k) * Cos(2 * q) / 2 + i * Sin(2 * q)b = -(j - k) * Sin(2 * q) / 2 + i * Cos(2 * q)Picture2.Cls '清除图中线条Picture2.DrawWidth = 3Picture2.Scale (-2, 2)-(2, -2)Picture2.Line (-1, 1)-(-1, -1)Picture2.Line (-1, -1)-(1, -1)Picture2.Line (1, -1)-(1, 1)Picture2.Line (1, 1)-(-1, 1) '正方形Picture2.DrawWidth = 1If p <> 0 ThenIf Abs(Tan(p)) < 1 ThenPicture2.Line (0, 0)-(Tan(p), -1), vbGreenPicture2.Line (0, 0)-(-Tan(p), 1), vbGreenPicture2.Line (0, 0)-(1.6 * Cos(p), 1.6 * Sin(p)), vbGreenElseIf Abs(Tan(p)) > 1 ThenPicture2.Line (0, 0)-(1, -1 / Tan(p)), vbGreenPicture2.Line (0, 0)-(-1, 1 / Tan(p)), vbGreenPicture2.Line (0, 0)-(1.6 * Cos(p), 1.6 * Sin(p)), vbGreen '按角度不同作出主应力的平面End IfEnd IfEnd IfPicture2.DrawWidth = 3If i > 0 ThenPicture2.Line (1.2, 0.8)-(1.3, 0.7), vbRedPicture2.Line (1.2, 0.8)-(1.1, 0.7), vbRed '切应力Picture2.Line (-1.2, -0.8)-(-1.2, 0.8), vbRedPicture2.Line (-1.2, -0.8)-(-1.3, -0.7), vbRedPicture2.Line (-1.2, -0.8)-(-1.1, -0.7), vbRed '切应力Picture2.Line (0.8, 1.2)-(-0.8, 1.2), vbRedPicture2.Line (0.8, 1.2)-(0.7, 1.3), vbRedPicture2.Line (0.8, 1.2)-(0.7, 1.1), vbRed '切应力Picture2.Line (0.8, -1.2)-(-0.8, -1.2), vbRedPicture2.Line (-0.8, -1.2)-(-0.7, -1.3), vbRedPicture2.Line (-0.8, -1.2)-(-0.7, -1.1), vbRed '切应力ElseIf i < 0 ThenPicture2.Line (1.2, -0.8)-(1.2, 0.8), vbRedPicture2.Line (1.2, -0.8)-(1.3, -0.7), vbRedPicture2.Line (1.2, -0.8)-(1.1, -0.7), vbRed '切应力Picture2.Line (-1.2, -0.8)-(-1.2, 0.8), vbRedPicture2.Line (-1.2, 0.8)-(-1.3, 0.7), vbRedPicture2.Line (-1.2, 0.8)-(-1.1, 0.7), vbRed '切应力Picture2.Line (0.8, 1.2)-(-0.8, 1.2), vbRedPicture2.Line (-0.8, 1.2)-(-0.7, 1.3), vbRedPicture2.Line (-0.8, 1.2)-(-0.7, 1.1), vbRed '切应力Picture2.Line (0.8, -1.2)-(-0.8, -1.2), vbRedPicture2.Line (0.8, -1.2)-(0.7, -1.3), vbRedPicture2.Line (0.8, -1.2)-(0.7, -1.1), vbRed '切应力End IfEnd IfIf j > 0 ThenPicture2.Line (1, 0)-(1.8, 0), vbRedPicture2.Line (1.8, 0)-(1.7, 0.1), vbRedPicture2.Line (1.8, 0)-(1.7, -0.1), vbRed '主应力Picture2.Line (-1, 0)-(-1.8, 0), vbRedPicture2.Line (-1.8, 0)-(-1.7, -0.1), vbRed '主应力ElseIf j < 0 ThenPicture2.Line (1, 0)-(1.8, 0), vbRedPicture2.Line (1, 0)-(1.1, 0.1), vbRedPicture2.Line (1, 0)-(1.1, -0.1), vbRed '主应力Picture2.Line (-1, 0)-(-1.8, 0), vbRedPicture2.Line (-1, 0)-(-1.1, 0.1), vbRedPicture2.Line (-1, 0)-(-1.1, -0.1), vbRed '主应力End IfEnd IfIf k > 0 ThenPicture2.Line (0, 1)-(0, 1.8), vbRedPicture2.Line (0, 1.8)-(0.1, 1.7), vbRedPicture2.Line (0, 1.8)-(-0.1, 1.7), vbRedPicture2.Line (0, -1)-(0, -1.8), vbRedPicture2.Line (0, -1.8)-(0.1, -1.7), vbRedPicture2.Line (0, -1.8)-(-0.1, -1.7), vbRedElseIf k < 0 ThenPicture2.Line (0, 1)-(0, 1.8), vbRedPicture2.Line (0, 1)-(0.1, 1.1), vbRedPicture2.Line (0, 1)-(-0.1, 1.1), vbRedPicture2.Line (0, -1)-(0, -1.8), vbRedPicture2.Line (0, -1)-(0.1, -1.1), vbRedPicture2.Line (0, -1)-(-0.1, -1.1), vbRedEnd IfEnd IfPicture3.Cls '清除图中线条s = (j + k) / 2r = ((j + k) / 2 - n)Picture3.DrawWidth = 3 '确定线宽Picture3.ScaleMode = 3If s <> 0 ThenPicture3.Scale (-(1.6 * r + Abs(s)), (1.6 * r + Abs(s)))-((1.6 * r + Abs(s)), -(1.6 * r + Abs(s))) '定义坐标Picture3.Line ((1.5 * r + Abs(s)), 0)-(-(1.5 * r + Abs(s)), 0)Picture3.Line (0, -(1.5 * r + Abs(s)))-(0, (1.5 * r + Abs(s)))Picture3.Line ((1.5 * r + Abs(s)), 0)-((1.4 * r + Abs(s)), 0.1 * r)Picture3.Line ((1.5 * r + Abs(s)), 0)-((1.4 * r + Abs(s)), -0.1 * r)ElsePicture3.Scale (-2, 2)-(2, -2) '定义坐标Picture3.Line (-1.9, 0)-(1.9, 0)Picture3.Line (0, -1.9)-(0, 1.9)Picture3.Line (1.9, 0)-(1.7, 0.1)Picture3.Line (1.9, 0)-(1.7, -0.1)End IfPicture3.Circle (s, 0), Abs(r), vbRed '做圆,圆心,半径,红线End Sub。
哈工大材料力学上机实验课作业
哈工大材料力学上机实验课作业Harbin Institute of Technology材料力学电算大作业题目名称:各种条件下的任意截面的弯矩,挠度作者班号:1108108作者学号:1110810812作者姓名:刘涛指导教师:王春香完成时间:2013/5/23一、问题的提出该程序可以解决的问题:一个力作用下(1)圆柱面杆(2)矩形截面杆(3)工字梁截面杆(4)空心圆柱截面杆的弯矩和挠度二、程序流程图输入杆长(mm),力F(kN),力作用点到左端面A的距离a(mm)输入梁的弹性模量(Gpa)输入所求端面到左端面的距离X 输入梁的形状计算惯性矩计算并输出弯矩根据梁的形状不同输入不同的数值计算并输出挠度三、不同力作用下的弯矩,挠度1.一个力作用下的任意截面的弯矩,挠度程序:#include <stdio.h>#include <stdlib.h>#include <math.h>#define PI 3.1415926int get_I(int kind);int main(){float f=100, l=100, a=50, b, x=60;float M, v;float E = 200, I;int kind=1;printf("请输入杆长l(mm),力F(kN),力作用点到左端面A的距离a(mm)\n");scanf("%f%f%f",&l,&f,&a);l /= 1000;f *= 1000;a /= 1000;printf("请输入梁的弹性模量(GPa)\n");scanf("%f",&E);E *= 1.e9;printf("请输入所求端面到左端面A的距离X\n");scanf("%f",&x);x /= 1000;printf("请输入梁的截面形状(圆柱面=1,矩形梁=2,工字梁=3,空心圆柱梁=4)\n");scanf("%d",&kind);I = get_I(kind);//计算惯性矩b = l - a;M = f * x;//计算弯矩if (0 <= x && x <= a){v = (-1) * f * b * x *(l*l - x*x - b*b) / (6 * E * I * l);}else if (a < x && x <= l){v = (-1) * f * b * x *(l/b * pow((x-a), 3) + (l*l - b*b)*x -pow(x, 3)) / (6 * E * I * l);}else{v = 0;printf("error!");exit (0);}printf("转矩M = %gN•m\n", M);printf("挠度V = %gm\n", v);system("pause");return 0;}int get_I(int kind)//计算截面的I惯性矩{float d,b, h;//矩形梁,工字梁,圆柱梁float d2, alpha;//空心圆柱梁float I;//圆柱面=1,矩形梁=2,工字梁=3,空心圆柱梁=4if (1 == kind)//圆柱面=1{printf ("请输入圆柱梁的直径d\n");scanf("%f", &d);I = PI * pow(d, 4) / 64;}else if (2 == kind)//矩形梁=2{printf ("请输入矩形截面的b和h\n");scanf ("%f%f",&b, &h);I = b * pow(h, 3) / 12;}///*else if (3 == kind)//工字梁=3{printf("|——————-—————|\n");printf("|————| |——————|t\n");printf(" |d|\n");printf(" | |\n");printf("|————| |——————|\n");printf("|—————b——————|\n");/*printf ("请输入工字梁的翼缘厚度t,腹板厚度d,翼缘宽度b,梁高度h\n");scanf ("%f%f%f%f",&t,&d,&b,&h);*/printf ("请查附表B输入工字梁的惯性矩I\n");scanf ("%f",&I);}//*/else if (4 == kind)//空心圆柱梁=4{printf ("请输入圆柱梁的直径d和内外径比例alpha\n"); scanf ("%f%f",&d2, &alpha);I = PI * pow(d2, 4) *(1 - pow(alpha, 4)) / 64; }else{I = 0;}return I;}2.一个力偶作用下的任意截面的弯矩,挠度#include <stdio.h>#include <stdlib.h>#include <math.h>#define PI 3.1415926#define TORAD (PI/180)float get_I(int kind);float get_V_M0(float E, float Length,float I,float x, float M0, float a_L );float get_M_M0(float Length, float M0,float a_L, float x);int main(){int kind;//截面形状float Length, a_L, x;float E, I, M0;float v, M;//所求截面的挠度,弯矩printf(" Input Length(mm): ");scanf ("%f", &Length);Length /= 1000;/*单位转化*/printf("Input shape (circle=1,scquare=2,gongZL=3,blank circle=4): ");scanf("%d",&kind);printf("Input E(GPa): ");scanf("%f",&E);E *= 1.e9;/*单位转化*/printf("Input M0(N*m): ");scanf ("%f", &M0);printf("Input a_L( mm) ");scanf ("%f", &a_L);a_L /= 1000;/*单位转化*/while(a_L < 0 || a_L > Length){printf("力偶没有作用在杆上,请重新输入作用点位置: \n"); printf("请输入力偶作用点距离左端面的距离a_L( mm) "); scanf ("%f", &a_L);a_L /= 1000;/*单位转化*/}printf("Input x ( mm): ");scanf ("%f", &x);x /= 1000;/*单位转化*/I = get_I(kind );v = get_V_M0(E, Length, I, x, M0, a_L );M = get_M_M0(Length, M0, a_L, x);printf("Toatal M = %g N•m\n", M);printf("Toatal v = %g mm\n", v);return 0;system("pause");}float get_I(int kind)//计算截面的I惯性矩{float d,b, h;//矩形梁,工字梁,圆柱梁float d2, alpha;//空心圆柱梁float I;//float t;if (1 == kind)//圆柱面=1{printf ("Input d\n");scanf("%f", &d);I = PI * pow(d, 4) / 64;}else if (2 == kind)//矩形梁=2{printf ("Input b和h\n");scanf ("%f%f",&b, &h);I = b * pow(h, 3) / 12;}///*else if (3 == kind)//工字梁=3{printf("|——————-—————|\n");printf("|————| |——————|t\n");printf(" |d|\n");printf(" | |\n");printf("|————| |——————|\n");printf("|—————b——————|\n");printf ("Input I\n");scanf ("%f",&I);}else if (4 == kind)//空心圆柱梁=4{printf ("Input d and alpha\n");scanf ("%f%f",&d2, &alpha);I = PI * pow(d2, 4) *(1 - pow(alpha, 4)) / 64;}else{I = 0;}return I;}float get_V_M0(float E, float Length, float I, float x, float M0, float a_L ){float v;float m, b;b = Length - a_L;m = M0;if (E < 1.e7){E *= 1.e9;}if(x >= 0 && x <= a_L){v = m * x * (3*Length*Length - 3*b*b - x*x)/(6*E*I*Length );}else if (x > a_L && x <= Length){v = m * (-pow(x, 3) + 3*Length*pow(x-a_L, 2) + (pow(Length, 2) -3*b*b)*x) / (6*E*I*Length );}else{printf ("ERROR!!!\n");v = 0;exit(0);}return v;}float get_M_M0(float Length, float M0, float a_L, float x) {float F_L, F_R;//左右两处的支反力float m, b;float M;//所求任意截面的弯矩b = Length - a_L;m = M0;F_L = - M0 / Length;F_R = - F_L;if(x >= 0 && x <= a_L){M = F_L * x;}else if (x > a_L && x <= Length){M = F_R * (x - a_L);}else{printf ("ERROR!!!\n");M = 0;exit(0);}return M;}3. 一段分布力作用下的任意截面的弯矩,挠度#include<stdio.h>#include<math.h>#include<stdlib.h># define PI 3.1415926float get_I(int kind);//计算截面的I惯性矩float get_M_q(float E, float I, float Length, float x, floatq, float a_q_L, float a_q_R);float get_V_q(float E, float I, float Length, float x, floatq, float a_q_L, float a_q_R);int main(){float Length, a_q_L, a_q_R, q;float E, I;float M, V, x;int kind;printf("请输入梁的长度Length(单位:mm) ");scanf("%f",&Length);Length *= 1.e-3;printf("请输入分布力最左端距离梁左端距离a_q_L(单位:mm) ");scanf("%f",&a_q_L);a_q_L *= 1.e-3;printf("请输入分布力最左端距离梁右端距离a_q_R(单位:mm) ");scanf("%f",&a_q_R);a_q_R *= 1.e-3;printf("请输入分布力q:(单位:kN) ");scanf("%f",&q);q *= 1.e3;printf("请输入梁的弹性模量E(单位:GPa) ");scanf("%f",&E);E *= 1.e9;printf("请输入截面形状(圆柱面=1,矩形梁=2,工字梁=3,空心圆柱梁=4): ");scanf("%d",&kind);I = get_I(kind);printf("请输所求截面距离左端面距离x(单位:mm) ");scanf("%f",&x);x *= 1.e-3;M = get_M_q(E, I, Length, x, q, a_q_L, a_q_R);V = get_V_q(E, I, Length, x, q, a_q_L, a_q_R);printf("所求截面的弯矩是:%g N•m\n",M);printf("所求截面的挠度是:%g m\n",V);system ("pause");return 0;}float get_I(int kind)//计算截面的I惯性矩{float d,b, h;//矩形梁,工字梁,圆柱梁float d2, alpha;//空心圆柱梁float I;if (1 == kind)//圆柱面=1{printf ("请输入圆柱梁的直径d(单位:mm) ");scanf("%f", &d);d *= 1.e-3;I = PI * pow(d, 4) / 64;}else if (2 == kind)//矩形梁=2{printf ("请输入矩形截面的b和h(单位:mm) ");scanf ("%f%f",&b, &h);b *= 1.e-3;h *= 1.e-3;I = b * pow(h, 3) / 12;}else if (3 == kind)//工字梁=3{printf("|——————-—————|\n");printf("|————| |——————|t\n");printf(" |d|\n");printf(" | |\n");printf("|————| |——————|\n");printf("|—————b——————|\n");printf ("请查附表B输入工字梁的惯性矩I ");scanf ("%f",&I);}else if (4 == kind)//空心圆柱梁=4{printf ("请输入圆柱梁的直径d和内外径比例alpha "); scanf ("%f%f",&d2, &alpha);d2 *= 1.e-3;I = PI * pow(d2, 4) *(1 - pow(alpha, 4)) / 64;}else{I = 0;}return I;}float get_M_q(float E, float I, float Length, float x,float q, float a_q_L, float a_q_R){float c_q, fa, fb;float M;c_q = Length - a_q_L - a_q_R;fa = (a_q_R + c_q/2) * c_q * q / Length;fb = (a_q_L + c_q/2) * c_q * q / Length;if ((x >= 0) && (x <= a_q_L)){M = fa * x / (E * I);}else if ((x > a_q_L) && (x <= (Length-a_q_R))){M = ( fa * x - (x - a_q_L) * (x - a_q_L) * q/2 ) / (E*I);}else if ((x > (Length-a_q_R)) && (x <= Length)){M = ( fb * (Length - x)) / (E*I);}else{M = 0;printf("ERROR!!!!! \n");exit(0);}return M;}float get_V_q(float E, float I, float Length, float x, float q, float a_q_L, float a_q_R){float c_q, fa, fb;float V;c_q = Length - a_q_L - a_q_R;fa = (a_q_R + c_q/2) * c_q * q / Length;fb = (a_q_L + c_q/2) * c_q * q / Length;if ((x >= 0) && (x <= a_q_L)){V = fa * pow(x, 3) / (6*E*I);}else if ((x > a_q_L) && (x <= (Length-a_q_R))){V = ( fa*pow(x, 3) / 6 - pow((x-a_q_L), 4) * q / 24 )/ (E*I);}else if ((x > (Length-a_q_R)) && (x <= Length)){V = ( fb*Length*pow(x, 2)/2 - fb*pow(x, 3)/6 - fb*pow(Length, 2)*x/3 ) / (E*I);}else{V = 0;printf("ERROR!!!!!\n");exit(0);}return V;}。
哈工大材料力学上机大作业
材料力学上机实验作业组合截面几何性质计算指导教师:王秋生班级:学号:姓名:题目3:组合截面几何性质计算输入:1.各几何图形形状(圆形、矩形)及个数2.截面参数输入(形状、尺寸及位置)即圆截面-d,圆心位置;圆环截面-D,d,圆心位置;矩形截面h,b,形心位置输出:1.截面构形图2.形心位置坐标(图示)3.在形心坐标系下画出主轴,计算主惯性矩程序说明:本程序用于计算材料截面几何量,是使用VB编程语言汇编而成。
进入程序后,可选择三种模式:1.常用模式(此模式用于计算常用正多边形的几何量)2.直线模式,此模式下可利用线段绘制多边形(包括镂空多边形及多个不相交的多边形)3.曲线模式,此模式下可用鼠标任意绘制平面图形(同样包括镂空图形及多个不相交图形)一.绘图模式1.常用模式可鼠标绘制正多边形,或利用键盘精确输入正多边形。
2.直线模式可用鼠标绘制任意多边形,或利用键盘精确输入点坐标。
输入完成倒数第二个点后,单击淡绿色圆圈(起点),在弹出的对话框选择是,完成第一个图形。
可继续绘制下一图形或开始计算。
3.曲线模式可用鼠标绘制任意曲线以构成图形。
最后一点,单击淡绿色圆圈(起点),在弹出的对话框选择是,完成第一个图形。
可继续绘制下一图形或开始计算。
二.计算当绘制完某一图形后,点击“开始计算”按钮,即可计算出面积、静矩、形心坐标、惯性矩、惯性半径、惯性积、主惯性轴角度、主惯性矩、形心主惯性轴角度、形心主惯性矩等16个几何量。
欲重新开始,可点击“重置”按钮。
点击任意按钮后屏幕下方都会有相应的提示。
三.外部图形首先将所需图形大小修改为500×470,格式为jpg,命名为“截面”,并将其保存在程序根目录下,可载入外部图形以精确计算其各个量。
源程序:注:以下为form1的代码Private X As Single, Y As Single, Xp As Single, Yp As SinglePrivate N As Integer, Num As Integer, M As Integer, missN(10000) As Integer, j As Integer, k As IntegerPrivate stepX As Single, stepY As Single, Step As SinglePrivate P(1 To 30000, 1 To 2) As Single, Q1 As Single, Q2 As Single Private minX As Single, maxX As Single, minY As Single, maxY As Single Private runX As Single, runY As SinglePrivate X1 As Single, Y1 As Single, X2 As Single, Y2 As SinglePrivate Lx As Single, Ly As SinglePrivate Lpoint(200) As Single, Lpointmemory As SinglePrivate Nn As Integer, Rr As SinglePrivate Xx As Single, Yy As Single, T As Integer, Ang As SinglePrivate Sx As Single, Sy As Single, Ax As Single, Ay As Single Private ShapeCenterX As Single, ShapeCenterY As SinglePrivate Ix As Single, Iy As Single, IxC As Single, IyC As Single, IxyC As SinglePrivate Rx As Single, Ry As SinglePrivate Ixy As Single, Iyx As Single, LIxy As Single, LIyx As Single Private Angle As SinglePrivate Imin As Single, Imax As SinglePrivate AngleC As SinglePrivate Icmin As Single, Icmax As SinglePrivate Can As IntegerPrivate Msg As IntegerPrivate MoveN As Long, MoveM As Long, Decider As Integer, Shape As IntegerPrivate A As Single, B As Single, C As Single, E As Single, F As Single Private Usual As IntegerPrivate Sub PaintNnRr()M = 0: N = 1For i = 0 To Nn - 1Text1.Text = Xx + Rr * Cos(Ang * 3.1415926535898 / 180 + 2 * 3.1415926535898 / Nn * i)Text2.Text = Yy + Rr * Sin(Ang * 3.1415926535898 / 180 + 2 * 3.1415926535898 / Nn * i)Command1_ClickNextEnd SubPrivate Sub Shorten(A As Single, B As Single, C As Single)i = 0Do While A >= 10A = A / 10i = i + 1LoopB = Format(A, "0.00")C = iEnd SubPrivate Sub Calculate()ShapeCenterY = CLng(Sx / Ax)ShapeCenterX = CLng(Sy / Ay)If Ix = Iy And Ixy > 0 ThenAngle = -3.1415926535898 / 4ElseIf Ix = Iy And Ixy < 0 ThenAngle = 3.1415926535898 / 4ElseIf Ix = Iy And Ixy = 0 ThenAngle = 0ElseAngle = 0.5 * Atn(-2 * Ixy / (Ix - Iy))End IfRx = Sqr(Ix / Ax)Ry = Sqr(Iy / Ay)Imin = (Ix + Iy) / 2 - Sqr((Ix - Iy) ^ 2 / 4 + Ixy ^ 2)Imax = (Ix + Iy) / 2 + Sqr((Ix - Iy) ^ 2 / 4 + Ixy ^ 2)IxC = Ix - ShapeCenterY ^ 2 * AxIyC = Iy - ShapeCenterX ^ 2 * AyIxyC = Ixy - ShapeCenterX * ShapeCenterY * AxIcmin = (IxC + IyC) / 2 - Sqr((IxC - IyC) ^ 2 / 4 + IxyC ^ 2)Icmax = (IxC + IyC) / 2 + Sqr((IxC - IyC) ^ 2 / 4 + IxyC ^ 2)If IxC = IyC And IxyC > 0 ThenAngleC = -3.1415926535898 / 4ElseIf IxC = IyC And IxyC < 0 ThenAngleC = 3.1415926535898 / 4ElseIf IxC = IyC And IxyC = 0 Thenanflec = 0ElseAngleC = 0.5 * Atn(-2 * IxyC / (IxC - IyC))End IfEnd SubPrivate Sub Output()Picture1.Line (Sy / Ay + 1000, 6000 - Sx / Ax)-(Sy / Ay + 1000, 6000), RGB(255, 121, 121)Picture1.Line (Sy / Ay + 1000, 6000 - Sx / Ax)-(1000, 6000 - Sx / Ax), RGB(255, 121, 121)Label6.Left = Sy / Ay + 100 + 1000: Label6.Top = 5775 + 20Label6.Caption = "X =" & ShapeCenterXLabel6.Visible = TrueLabel7.Left = 1080: Label7.Top = 6000 - (Sx / Ax - 20)Label7.Caption = "Y =" & ShapeCenterYLabel7.Visible = TrueText3.Text = ShapeCenterX: Text4.Text = ShapeCenterYCall Shorten(Ax, E, F)Text5.Text = E & "×" & 10 & "^" & FCall Shorten(Sx, E, F)Text6.Text = E & "×" & 10 & "^" & FCall Shorten(Sy, E, F)Text7.Text = E & "×" & 10 & "^" & FCall Shorten(Ix, E, F)Text8.Text = E & "×" & 10 & "^" & FCall Shorten(Iy, E, F)Text9.Text = E & "×" & 10 & "^" & FText10.Text = CLng(Rx * 10) / 10: Text11.Text = CLng(Ry * 10) / 10Call Shorten(Ixy, E, F)Text12.Text = E & "×" & 10 & "^" & FText13.Text = Format(Angle * 180 / 3.1415926535898, "0.0")Call Shorten(Imin, E, F)Text14.Text = E & "×" & 10 & "^" & FCall Shorten(Imax, E, F)Text15.Text = E & "×" & 10 & "^" & FText16.Text = Format(AngleC * 180 / 3.1415926535898, "0.0")Call Shorten(Icmin, E, F)Text17.Text = E & "×" & 10 & "^" & FText18.Text = IcmaxCall Shorten(Icmax, E, F)Text18.Text = E & "×" & 10 & "^" & FEnd SubPrivate Sub Sort()For i = 1 To j - 2For k = i + 1 To j - 1If Lpoint(k) < Lpoint(i) ThenLpointmemory = Lpoint(i)Lpoint(i) = Lpoint(k)Lpoint(k) = LpointmemoryEnd IfNextNextEnd SubPrivate Sub CloseLine()Picture1.Circle (Q1 + 1000, 6000 - Q2), 90, RGB(255, 255, 255)Label1.Caption = "输入第" & N + 1 & "点坐标:"P(N, 1) = Q1: P(N, 2) = Q2Picture1.Line (P(N - 1, 1) + 1000, 6000 - P(N - 1, 2))-(Q1 + 1000, 6000 - Q2), RGB(0, 0, 255)missN(Num) = NM = 0N = N + 1Num = Num + 1Decider = 0Label21.Caption = "点击计算“截面的几何量”按钮开始计算,或单击下一点以绘制下一图形的起点"End SubPrivate Sub GetstepXstepY()minY = P(1, 2)For i = 2 To N - 1If P(i, 2) < minY ThenminY = P(i, 2)ElseEnd IfNextmaxY = P(1, 2)For i = 2 To N - 1If P(i, 2) > maxY ThenmaxY = P(i, 2)ElseEnd IfNextstepY = (maxY - minY) / StepminX = P(1, 1)For i = 2 To N - 1If P(i, 1) < minX ThenminX = P(i, 1)ElseEnd IfNextmaxX = P(1, 1)For i = 2 To N - 1If P(i, 1) > maxX ThenmaxX = P(i, 1)ElseEnd IfNextstepX = (maxX - minX) / StepEnd SubPrivate Sub GetLxLIxy()j = 1: Lx = 0: LIxy = 0For i = 1 To N - 1Can = 0For k = 1 To Num - 1If i = missN(k) ThenCan = 1ElseEnd IfNextIf Can = 0 ThenIf (P(i, 2) - runY) * (P(i + 1, 2) - runY) = 0 ThenrunY = runY + stepY / 1000ElseEnd IfIf (P(i, 2) - runY) * (P(i + 1, 2) - runY) < 0 ThenX1 = P(i, 1): Y1 = P(i, 2): X2 = P(i + 1, 1): Y2 = P(i + 1, 2)Lpoint(j) = X1 + (X2 - X1) * (runY - Y1) / (Y2 - Y1)j = j + 1ElseEnd IfElseEnd IfNextCan = 0Call SortFor i = 1 To j - 1 Step 2Lx = Lx + Lpoint(i + 1) - Lpoint(i)LIxy = LIxy + 0.5 * (Lpoint(i + 1) ^ 2 - Lpoint(i) ^ 2)NextEnd SubPrivate Sub PaintX()For i = 1 To j - 2 Step 2Picture1.Line (Lpoint(i) + 1000, 6000 - runY)-(Lpoint(i + 1) + 1000, 6000 - (runY + stepY)), RGB(255, 113, 116), BFNextEnd SubPrivate Sub GetAxSxIx()Ax = Ax + Lx * stepYSx = Sx + (runY + 0.5 * stepY) * (Lx * stepY)Ix = Ix + (runY + 0.5 * stepY) ^ 2 * (Lx * stepY)Ixy = Ixy + (runY + 0.5 * stepY) * (LIxy * stepY)End SubPrivate Sub GetLyLIyx()j = 1: Ly = 0: LIyx = 0For i = 1 To N - 1Can = 0For k = 1 To Num - 1If i = missN(k) ThenCan = 1ElseEnd IfNextIf Can = 0 ThenIf (P(i, 1) - runX) * (P(i + 1, 1) - runX) = 0 ThenrunX = runX + stepX / 1000ElseEnd IfIf (P(i, 1) - runX) * (P(i + 1, 1) - runX) < 0 ThenX1 = P(i, 1): Y1 = P(i, 2): X2 = P(i + 1, 1): Y2 = P(i + 1, 2)Lpoint(j) = Y1 + (Y2 - Y1) * (runX - X1) / (X2 - X1)j = j + 1ElseEnd IfElseEnd IfNextCall SortFor i = 1 To j - 1 Step 2Ly = Ly + Lpoint(i + 1) - Lpoint(i)LIyx = LIyx + 0.5 * (Lpoint(i + 1) ^ 2 - Lpoint(i) ^ 2)NextEnd SubPrivate Sub PaintY()For i = 1 To j - 2 Step 2Picture1.Line (runX + 1000, 6000 - Lpoint(i))-(runX + stepX + 1000, 6000 - Lpoint(i + 1)), RGB(118, 89, 255), BFNextEnd SubPrivate Sub GetAySyIy()Ay = Ay + Ly * stepXSy = Sy + (runX + 0.5 * stepX) * (Ly * stepX)Iy = Iy + (runX + 0.5 * stepX) ^ 2 * (Ly * stepX)Iyx = Iyx + (runX + 0.5 * stepX) * (LIyx * stepX)End SubPrivate Sub Command1_Click() '画线Label1.Caption = "输入第" & N + 1 & "点坐标:"Text1.Text = CLng(Text1.Text * 10) / 10: Text2.Text = CLng(Text2.Text * 10) / 10Xp = Text1.Text: Yp = Text2.TextX = Xp: Y = YpP(N, 1) = X: P(N, 2) = YIf M = 0 ThenQ1 = X: Q2 = YPicture1.PSet (Q1 + 1000, 6000 - Q2), RGB(0, 0, 255)Picture1.Circle (Q1 + 1000, 6000 - Q2), 90, RGB(180, 255, 180)If Shape = 0 ThenDecider = 0ElseDecider = 1End IfElseIf M <> 0 ThenPicture1.Line (P(N - 1, 1) + 1000, 6000 - P(N - 1, 2))-(P(N, 1) + 1000, 6000 - P(N, 2)), RGB(0, 0, 255)ElseEnd IfM = 1N = N + 1Command2.Enabled = FalseCommand4.Enabled = FalseCommand5.Enabled = FalseCommand9.Enabled = FalseLabel21.Caption = "点击以输入下一个点的坐标 .或点击当前图形起点(淡绿色圆圈内)以封闭图形"End SubPrivate Sub Command10_Click()Nn = Text19.TextRr = Text20.TextXx = Text22.TextYy = Text23.TextAng = Text21.TextCall PaintNnRrCall CloseLineCommand2_ClickCommand10.Enabled = FalseEnd SubPrivate Sub Command2_Click()N = N - 1Call GetstepXstepYrunX = minX: runY = minYAx = 0: Sx = 0: Ix = 0Do While runY < maxYCall GetLxLIxy 'Lx为与x轴平行的LCall PaintXCall GetAxSxIxrunY = runY + stepYLoopAy = 0: Sy = 0: Iy = 0Do While runX < maxXCall GetLyLIyxCall PaintYCall GetAySyIyrunX = runX + stepXLoopCall CalculateCall OutputCommand1.Enabled = FalseCommand2.Enabled = FalseN = N + 1Label21.Caption = "单击“重置程序”按钮以初始化程序"Form1.Width = 9750End SubPrivate Sub Command3_Click()Form_ActivateEnd SubPrivate Sub Command4_Click()Decider = 0Shape = 0Label21.Caption = "进入直线模式"If T = 1 ThenFrame6.Visible = FalseT = 0ElseEnd IfCommand1.Enabled = TrueCommand4.Enabled = FalseCommand5.Enabled = FalseCommand9.Enabled = FalseEnd SubPrivate Sub Command5_Click()Decider = 0Shape = 1Label21.Caption = "进入曲线模式"If T = 1 ThenFrame6.Visible = FalseT = 0ElseEnd IfCommand4.Enabled = FalseCommand5.Enabled = FalseCommand9.Enabled = FalseEnd SubPrivate Sub Command6_Click()Unload Form1Unload Form2End SubPrivate Sub Command7_Click()Shell "C:\windows\system32\notepad.exe" + " " + App.Path + "\帮助.txt", 3End SubPrivate Sub Command8_Click()Command3_ClickPicture1.Picture = LoadPicture(App.Path + "\截面.jpg")Label21.Caption = "请将截面图形大小修改为500×470,再将名字改为“截面”,并保存在程序根目录下"End SubPrivate Sub Command9_Click()If T = 1 ThenCommand4.Enabled = TrueCommand5.Enabled = TrueElseCommand4.Enabled = FalseCommand5.Enabled = FalseEnd IfIf T = 1 ThenFrame6.Visible = FalseT = 0Usual = 0ElseFrame6.Visible = TrueT = 1Usual = 3End IfIf T = 1 ThenLabel21.Caption = "选择一种正多边形"ElseEnd IfEnd SubPrivate Sub Form_Activate()Form1.Width = 7680Picture1.ClsPicture1.Picture = LoadPicture(App.Path + "\1.jpg")Command1.Enabled = TrueCommand4.Enabled = TrueCommand5.Enabled = TrueCommand9.Enabled = TrueCommand10.Enabled = TrueLabel21.Caption = "选择一种模式(默认为直线模式)并鼠标点击输入或键入第一点坐标"Command2.Enabled = FalseN = 1: Num = 1: M = 0: Can = 0: MoveN = 0: MoveM = 0Step = 10000: Decider = 0: Shape = 0: Usual = 0Label1.Caption = "输入第1点坐标:": Label6.Visible = False: Label7.Visible = FalseText3.Text = 0: Text4.Text = 0Text20.Text = 1500Text21.Text = 0Text22.Text = 3000Text23.Text = 3000Frame6.Visible = FalseT = 0Command1.Enabled = False End SubPrivate Sub Option1_Click() Form_ActivateCommand4.Enabled = False Command5.Enabled = False Command9_ClickText19.Text = 100Usual = 1Step = 10000End SubPrivate Sub Option2_Click() Form_ActivateCommand4.Enabled = False Command5.Enabled = False Command9_ClickText19.Text = 3Usual = 1Step = 10000End SubPrivate Sub Option3_Click() Form_ActivateCommand4.Enabled = False Command5.Enabled = False Command9_ClickText19.Text = 4Usual = 1Step = 10000End SubPrivate Sub Option4_Click() Form_ActivateCommand4.Enabled = False Command5.Enabled = False Command9_ClickText19.Text = 5Usual = 1Step = 10000End SubPrivate Sub Option5_Click()Form_ActivateCommand4.Enabled = FalseCommand5.Enabled = FalseCommand9_ClickText19.Text = 6Usual = 1Step = 10000End SubPrivate Sub Option6_Click()Form_ActivateCommand4.Enabled = FalseCommand5.Enabled = FalseCommand9_ClickText19.Text = 7Text19.SetFocusText19.SelLength = Len(Text1.Text)Label21.Caption = "输入N边形边数"Usual = 1Step = 10000End SubPrivate Sub Picture1_Click()If Usual = 0 ThenIf Sqr((Text1.Text - Q1) ^ 2 + (Text2.Text - Q2) ^ 2) <= 90 And N > 3 ThenLabel21.Caption = "单击“是”将封闭当前图形,单击“否”则可继续绘制下一点"Msg = MsgBox("是否封口?", 4, "")If Msg = 6 ThenCall CloseLineCommand2.Enabled = TrueElseCommand1_ClickEnd IfElseCommand1_ClickEnd IfElseIf Usual = 1 ThenText22.Text = Text1.Text: Text23.Text = Text2.TextPSet (Text1.Text + 1000, 6000 - Text2.Text), RGB(0, 0, 255)Usual = 2ElseIf Usual = 2 ThenUsual = 3ElseEnd IfEnd SubPrivate Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)Text1.Text = CLng((X - 1000) * 10) / 10: Text2.Text = CLng((6000 - Y) * 10) / 10If Usual = 0 ThenIf Decider = 1 ThenMoveN = MoveN + 1MoveM = MoveN Mod 2If MoveM = 0 ThenCommand1_ClickElseEnd IfElseEnd IfElseIf Usual = 2 ThenPicture1.ClsText20.Text = Sqr((Text1.Text - Xx) ^ 2 + (Text2.Text - Yy) ^ 2) Text20.Text = CLng(Text20.Text * 10) / 10Nn = Text19.TextRr = Text20.TextXx = Text22.TextYy = Text23.TextAng = Text21.TextCall PaintNnRrCall CloseLineNum = Num - 1ElseIf Usual = 3 ThenElseEnd IfEnd SubPrivate Sub Text19_LostFocus()Text19.Text = CLng(Text19.Text)End SubPrivate Sub Text21_LostFocus()Text21.Text = CLng(Text21.Text * 10) / 10End Sub注:以下为form2的代码Private N As IntegerPrivate Sub Form_Activate()N = 0End SubPrivate Sub Timer1_Timer()N = N + 30If N < 165 ThenLabel1.ForeColor = RGB(165 - N, 165, 165 - N) Label2.ForeColor = RGB(165 - N, 165, 165 - N) Label3.ForeColor = RGB(165 - N, 165, 165 - N) ElseIf N > 260 ThenForm2.HideForm1.ShowTimer1.Enabled = FalseEnd IfEnd Sub应用举例:1.圆形截面2.矩形截面3.组合截面。
哈工大材料力学上机大作业(VB编)
应力状态分析一、问题的提出该程序可以解决的问题:①平面应力状态,已知σx,σy,τxy和角度的情况下计算不同任意截面的应力分量,还可以计算平面应力状态主应力的大小和方向并能画出应力圆;②空间应力状态,已知σx,σy,σz,τxy等的情况下计算主应力和最大切应力。
二、数学模型1、平面应力状态任一斜截面上既有正应力又有切应力,公式为:2、平面应力状态主应力大小及方向1、公式主应力计算公式主平面方位计算公式3、最大切应力:最大切应力发生在与主平面夹45度角的平面方位。
其公式4、应力圆应力圆原理:圆心:半径:5、三向应力状态三向应力计算公式:特征方程:222222x y x y xy αασσσσσττ+-⎛⎫⎛⎫-+=+ ⎪ ⎪⎝⎭⎝⎭2x y a σσ+=222x y xy R σστ-⎛⎫=+ ⎪⎝⎭三个不变量三、程序流程图㈠ 平面应力计算 打开界面选择平面应力计算 出现数据输入对话框 输入σx ,σy ,τxy 和角度 点击计算 可计算出任意截面的应力分量以及三个主应力和最大切应力 记录数据点击清除可进行重复计算㈡ 空间应力状态计算打开界面选择空间应力状态计算 出现数据输入对话框输入σx ,σy ,σz ,τxy ,τyz ,τxz 点击计算 得出结果可计算出三个主应力及最大切应力 记录数据点击清除可以重复计算四、程序说明本程序分为平面应力状态与空间应力状态,点击相应主菜单进行相应的计算。
平面应力状态:本程序能进行多次重复输入与计算根据提示输入数据进行计算输入X ,Y ,XY 方向上的应力值及X'转动的角度值,点击"计算"按扭,进行数值计算。
1x y z I σσσ=++2x yx y zy z xz xy y yz z zx x I στστσττστστσ=++3x yx zx xy y zy xz yz zI στττστττσ=可画出与数据相对应的应力圆空间应力状态:本程序能进行多次重复输入与计算根据提示输入数据进行计算输入X,Y,Z,XY,YZ,ZY方向上的应力值,点击"计算"按扭,可以计算出三个主应力及最大切应力。
哈工大材料力学上机编程报告
材料力学电算实验压杆的临界力计算一.概述:本程序使用Microsoft Visual Basic编写,可以对不同材料、不同约束类型、不同截面类型的压杆进行临界力的计算。
杆件的参数可以输入,得出结果之后也可以清零。
二、问题分析及相关公式:1、压杆稳定当短粗杆受压时(图1),在压力F由小逐渐增大的过程中,杆件始终保持原有的直线平衡形式,直到压力F达到屈服强度载荷F s(或抗压强度载荷F b),杆件发生强度破坏时为止。
但是,如果用相同的材料,做一根与图1a所示的同样粗细而比较长的杆件(图1b),当压力F比较小时,这一较长的杆件尚能保持直线的平衡形式,而当压力F逐渐增大至某—数值F1时,杆件将突然变弯,不再保持原有的直线平衡形式,因而丧失了承载能力。
我们把受压直杆突然变弯的现象,称为丧失稳定或失稳。
此时,F1可能远小于F s (或F b)。
可见,细长杆在尚未产生强度破坏时,就因失稳而破坏。
图1在研究压杆稳定时,我们用一微小横向干扰力使处于直线平衡状态的压杆偏离原有的位置,如图1所示。
当轴向压力F由小变大的过程中,可以观察到:1)当压力值F1较小时,给其一横向干扰力,杆件偏离原来的平衡位置。
若去掉横向干扰力后,压杆将在直线平衡位置左右摆动,最终将恢复到原来的直线平衡位置。
2)当压力值F2超过其一限度F cr时,平衡状态的性质发生了质变。
这时,只要有一轻微的横向干扰,压杆就会继续弯曲,不再恢复原状,。
3)界于前二者之间,存在着一种临界状态。
当压力值正好等于F cr时,一旦去掉横向干扰力,压杆将在微弯状态下达到新的平衡,既不恢复原状,也不再继续弯曲,。
临界状态是杆件从稳定平衡向不稳定平衡转化的极限状态。
压杆处于临界状态时的轴向压力称为临界力或临界载荷,用F cr表示。
2、两端铰支细长压杆的临界力图2为一两端为球形铰支的细长压杆,其临界力公式为:图222lEIF cr π=(1)式(1)又称为欧拉公式。
3、不同杆端约束细长压杆的临界力(1)一端固定另一端自由细长压杆的临界力图3为—端固定另一端自由的压杆。
(哈工大)材料力学上机程序
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材料力学上机作业课程名称:材料力学设计题目:应力状态分析院系:XXXXXXXXX 班级:XXXXX姓名:XXXXX学号:XXXXXXXXX指导教师:XXXXX哈尔滨工业大学1.算法:枚举法、迭代法。
2.本程序用Matlab编程,程序如下:clear all;g=input('如果求二向应力,输入2,如果求三向应力,输入3 '); while g==3;clear allsx=input('sx(Mpa)=');sy=input('sy(Mpa)=');sz=input('sz(Mpa)=');txy=input('txy(Mpa)=');tyz=input('tyz(Mpa)=');txz=input('txz(Mpa)=');i1=sx+sy+sz;i2=sx*sy-txy*txy+sy*sz-tyz*tyz+sx*sz-txz*txz;i31=[sx,txy,txz;txy,sy,tyz;txz,tyz,sz];i3=det(i31);a=[1,-i1,i2,-i3];s=roots(a);s1=max(s);s3=min(s);for k=1:1:3if((s(k)~=s1)&&(s(k)~=s3))s2=s(k);endendg=1;tmax=(s1-s3)/2;r13=(s1-s3)/2;r12=(s1-s2)/2;r23=(s2-s3)/2;alpha1=0:pi/100:2*pi;%角度[0,2*pi]R=r13;%半径x1=R*cos(alpha1)+s3+r13;y1=R*sin(alpha1);plot(x1,y1,'*'),grid, hold onaxis equalv=axis;line([v(1),v(2)],[0,0]);line([0,0],[v(3),v(4)]) ;alpha2=0:pi/100:2*pi;%角度[0,2*pi]R=r12;%半径x2=R*cos(alpha2)+s2+r12;y2=R*sin(alpha2);plot(x2,y2,'*'),grid, hold onalpha3=0:pi/100:2*pi;%角度[0,2*pi]R=r23;%半径x3=R*cos(alpha3)+s3+r23;y3=R*sin(alpha3);plot(x3,y3,'k-'),grid, hold onfprintf('主应力1=%8.5fMpa\n',s1);fprintf('主应力2=%8.5fMpa\n',s2);fprintf('主应力3=%8.5fMpa\n',s3);fprintf('最大剪应力=%8.5fMpa\n',tmax);hold offendwhile g==2;sx=input('sx(Mpa)=');sy=input('sy(Mpa)=');txy=input('txy(Mpa)=');a=linspace(0,pi,37);sa=(sx+sy)/2;sd=(sx-sy)/2;sigma=sa+sd*cos(2*a)-txy*sin(2*a);tau=sd*sin(2*a)+txy*cos(2*a);plot(sigma,tau,sx,txy,'b-');axis equal;v=axis;line([v(1),v(2)],[0,0]);line([0,0],[v(3),v(4)])hold,plot(sa,0,'x')smax=max(sigma),smin=min(sigma),tmax=max(tau);asigma=((atan((2*txy)/(sx-sy)))/2)/pi*180;fprintf('主应力最大值=%8.5fMpa\n',smax);fprintf('主应力最小值=%8.5fMpa\n',smin);fprintf('切应力最大值=%8.5fMpa\n',tmax);fprintf('主方向角=%8.5f度和%8.5f度\n',asigma,asigma+90);h=input('如果不求应力,输入0,如果要再求应力,输入1 ');while h==1;a=input('给出斜截面方向角a=(弧度)')sigma=sa+sd*cos(2*a)-txy*sin(2*a)tau=sd*sin(2*a)+txy*cos(2*a)plot(sigma,tau,'or')h=input('如果不继续求应力,输入0,如果还要求应力,输入1 ');end,hold offg=0;end3.程序在Matlab中运行时的界面:(以三向应力为例)应力圆示意图:。
哈工大材料力学性能大作业-铁碳马氏体的强化机制解读
铁碳马氏体的强化机制摘要:钢中铁碳马氏体的最主要特性是高强度、高硬度,其硬度随碳含量的增加而升高。
马氏体的强化机制是多种强化机制共同作用的结果。
主要的强化机制包括:相变强化、固溶强化、时效强化、形变强化和综合强化等。
本文介绍了铁碳马氏体及其金相组织和力学特性,着重深入分析马氏体的强化机制。
关键词:铁碳马氏体强化机制1.马氏体的概念,组织及力学特性1.1马氏体的概念马氏体,也有称为麻田散铁,是纯金属或合金从某一固相转变成另一固相时的产物;在转变过程中,原子不扩散,化学成分不改变,但晶格发生变化,同时新旧相间维持一定的位向关系并且具有切变共格的特征。
马氏体最先在淬火钢中发现,是由奥氏体转变成的,是碳在α铁中的过饱和固溶体。
以德国冶金学家阿道夫·马登斯(A.Martens)的名字命名;现在马氏体型相变的产物统称为“马氏体”。
马氏体的开始和终止温度,分别称为M始点和M终点;钢中的马氏体在显微镜下常呈针状,并伴有未经转变的奥氏体(残留奥氏体);钢中的马氏体的硬度随碳量增加而增高;高碳钢的马氏体的硬度高而脆,而低碳钢的马氏体具有较高的韧性。
1.3马氏体的力学特性铁碳马氏体最主要的性质就是高硬度、高强度,其硬度随碳含量的增加而增加。
但是当碳含量达到6%时,淬火钢的硬度达到最大值,这是因为碳含量进一步提高,虽然马氏体的硬度会提高但是由于残余奥氏体量的增加,使钢的硬度反而下降。
2.铁碳马氏体的晶体学特性和金相形貌钢经马氏体转变形成的产物。
绝大多数工业用钢中马氏体属于铁碳马氏体,是碳在体心立方结构铁中的过饱和固溶体。
铁碳合金的奥氏体具有很宽的碳含量范围,所形成的马氏体在晶体学特性、亚结构和金相形貌方面差别很大。
可以把铁碳马氏体按碳含量分为5个组别(见表)【1】。
表1 铁碳马氏体的晶体学特性和金相形貌低碳马氏体为体心立方结构,中、高碳为体心正方结构。
碳原子的固溶为间隙式,处于八面体间隙之中。
如图1A中×号所示,三坐标方向的面心位置是具有代表性的三种八面体间隙中心,构成了体心晶格中的三套亚点阵,分别以1/2[001]、1/2[010]、1/2[100]表示,每单位晶胞中有六个八面体间隙分属这三套亚点阵。
哈工大材料力学上机
材料力学上机大作业院系:机电工程学院班级: 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处。
哈工大材料力学上机大作业
材力作业题目:圆形组合截面几何性质计算姓名:叶怀木我的软件简介:该程序是用VB语言编写的。
由于水平有限,存在一些不足还请老师批评指正。
双击打开程序,在文本框输入已知数据,单击控制按钮进行操作与计算。
应用:输入2个圆形截面的直径和圆心位置坐标。
主界面如下所示。
计算主惯性矩I Z0,I Y0;生成截面构形图;标明形心位置点;形心坐标系下画出主轴。
注意事项:1、本程序仅限于2个圆的情况。
第二个圆的直径不能为0。
2、输入的圆形截面的直径和圆心位置坐标要求是整数。
3、由于本程序对坐标刻度比例尚未完全调试好,要求输入的两个直径之差不宜过大或两个圆心位置距离不宜过远,即两个圆要相对集中,否则可能不能显示完整图形。
计算过程:已知:第i个圆形截面的直径di,圆心坐标Xi,Yi,n=2计算:1、第i 圆面积24i i d A π=2、形心位置坐标101n i i i n i i X A X A===∑∑;101n i i i n ii Y A Y A ===∑∑3、在形心坐标系下画主轴421164nn i z i i i i d I X A π===+∑∑;421164n n i y i i i i d I Y A π===+∑∑;1n zy i i i i I X Y Z ==∑21()2zy z yI arctg I I α-=-主轴:00tan ()Y Y X X α-=⋅-;001()tan Y Y X X α-=-⋅-4、计算主惯性矩02z y z I I I +=+02z yy I I I +=-。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
然后,我们需要输入抗弯刚度。题目没有给怎么办?不怕,我们有“抗弯刚度计算器”!点击对 应区段抗弯刚度边上的按钮即可开始计算!
第 三 页 共 二十一 页
材料力学大作业
在计算完毕之后,点击“置入并返回” ,则我们又来到了基本信息输入界面。由于这一根简单 梁是等截面、等抗弯刚度的,所以我们不用去管“区段二”和“区段三”的相关文本框(实际上在 你选定对应的区段之前,这些文本框都是无法激活的) 。我们需要点击“更新基本信息”按键,以 核查、写入数据。核查无误,我们点击“受力情况输入”按钮。
max
1000 32 1 5.77 mm , x 3 1732.1mm 9 3 100000 3
电算解:
故:与理论解一致。
第 十四 页 共 二十一 页
材料力学大作业
(8)理论解:
增补条件: 代入约定条件算得: A M 3000 N m , a 1 .6 m , 电算解:
第 七 页 共 二十一 页
材料力学大作业
(1)理论解:
代入约定数据计算得: B 30mrad , B 45mm 电算解:
故:与理论解一致。
第 八 页 共 二十一 页
材料力学大作业
(2)理论解:
增补条件: a 2m ,代入约定数据计算得: B 20mrad , B 40mm 电算解:
材料力学大作业
(12)理论解:
代入约定数值解得: C 电算解:
2000 12 2000 1 C (2 1) 20mm (2 2 3 1) 23.3mrad , 3 100000 6 100000
故:与理论解一致。
第 十九 页 共 二十一 页
第 六 页 共 二十一 页
材料力学大作业
最后,感谢您的使用。
例 2.请验证张少实主编的《新编材料力学》 (第二版)144~146 页的表 7-3 所示内容。 解: 1°首先约定: 梁之长为 3000mm, 梁之抗弯刚度为 100000N· m2, 左端外伸梁的支座在 2000mm 处,凡集中力大小均为 2kN,凡集中力偶大小均为 1000N·m(不过(7)例外) ,凡均布力集度均 为 1kN/m。 2°分项计算: (由于数量众多,不一一计算了。直接出报单。 )
故:与理论解一致。
第 九 页 共 二十一 页
材料力学大作业
(3)理论解
代入约定数据计算得: B 90mrad , B 180mm 电算解:
故:与理论解一致。
第 十 页 共 二十一 页
材料力学大作业
(4)理论解:
增补条件: a 2m ,代入约定数据计算得: B 40mrad , B 93.3mm
电算解:
故:与理论解一致。
第 十一 页 共 二十一 页
材料力学大作业
(5)理论解:
代入约定数据计算得: B 45mrad , B 101.25mm
电算解:
故:与理论解一致。
第 十二 页 共 二十一 页
材料力学大作业
(6)理论解:
代入约定数据计算得: A 10mrad , B 5mrad
max
1 1000 32 5.77 mm , x 1 3 1267.9mm 3 9 3 100000
电算解:
故:与理论解一致。
第 十三 页 共 二十一 页
材料力学大作业
(7)理论解:
代入约定数据计算得: A 5mrad , B 10mrad
ቤተ መጻሕፍቲ ባይዱ
现在轮到我们输入此梁的受力情况了。 我们这道题目只有一个均布载荷作用, 所以我们选择均 布力的个数为 1,并按照题意写入数据。
第 四 页 共 二十一 页
材料力学大作业
按下“写入数据”键,则“生成形变报表”按键激活。按下它。
形变报表出现了!上面显示了此梁的弯矩图、转角函数曲线与挠曲线。可是我们发现这些图形 显得很不完整,很不清楚。为了方便我们进行分析,我们可以点击每一个图片框边上的按钮,对这 些图形进行修正。
B
ql 3 48 EI z
500 23 1.5215mrad 3 0.034 0.054 3 9 0.04 0.06 48 200 10 12 12 500 2 4 1.1411mm 3 0.034 0.0543 9 0.04 0.06 128 200 10 12 12
材料力学大作业
四、程序评价
本程序能够求解简单梁 ( “简支梁” 、 “左端固定悬臂梁” 、 “右端固定悬臂梁” 、 “左端外伸梁” 、 “右端外伸梁” 、 “双段外伸梁”之一,并且允许有三个区段拥有 不同但为常数的抗弯刚度) 的所有简单受力情况, 并且用户能够查询此梁上任意 一点的弯矩、转角和挠度。 本程序的核心部分是 1.将简单梁的所有可能的简单受力情况 (即受集中力、 集中力偶、 均布载荷) 归类为 9 种最一般的受力情况的叠加,并给出其弯矩方程。 2.利用步长为万分之一梁长的二重经典四阶 Runge-Kutta 方法求解材料力 学中的“挠曲线近似微分方程” 。此举乃“以不变应万变” ,充分利用了个人计算 机强大的计算功能, 不但使得挠曲线的求解过程得到了大大简化, 而且在此过程 中,我们直接得到了梁在每一点处的弯矩和转角,可谓是“一箭三雕” 。 3.由于 2 中的 Runge-Kutta 方法给定的初值条件皆为 0, 故在完成计算之后 还需要分情况另行解出两个积分常数。 在求解的过程中, 支座处的弯矩和转角利 用 Lagrange 插值方法给出。 (能够保证一定的精确度) 此外,本程序还提供一个简单的“抗弯刚度计算器” ,能够计算出给定杨氏 模量之材料的简单几何截面的抗弯刚度。 本程序在加强程序的健壮性方面付出了不懈努力。但是在这一方面,开发者 认为还有极大的进步空间。 本程序的误差一般在千分之三以内。当然,这个误差是相较于使用材料力学 方法计算出的理论值而言的。由于材料力学课程中对很多现象进行了近似和假 设, 故开发者不承诺本程序得出的答案和真实的精确值 (有一些可以用弹性力学 或者固体物理学的方法得出)的误差在此误差限以内。 开发者本学期刚刚学完《数值计算方法》课程,而此次材料力学电算学习对 巩固本学期刚学到的方法和思想起到了非常好的作用。 本程序总的来说,比较令人满意。但是在提高功能性,提高健壮性,以及提 高精确度(比如利用绝对精确的 Gauss 公式计算出支座处的弯矩)方面,都有很 大的进步空间。 希往后还要继续深入学习力学知识和数值计算方法的知识, 及时 勤勉,奋发向上。
3000 32 3 1.4 2 5.2mrad 6 100000 3
故:与理论解一致。
第 十五 页 共 二十一 页
材料力学大作业
(9)理论解:
代入约定条件算得: A B 11 .25mrad , C 11 .25mm 电算解:
故:与理论解一致。
第 十六 页 共 二十一 页
材料力学大作业
(10)理论解:
增补条件: a 2m ,代入约定条件解得: 2000 2 1 (3 1) A 8.89mrad ; 6 100000 3
max
2000 1 (32 12 ) 2 32 12 9.677 mm ,其位置为 x 1633.0mm 3 9 3 100000 3
二、程序源代码
本程序采用 Visual Studio 2008 进行编写。具体程序请参见附录。
三、算例
例 1.右端外伸梁受均布载荷如下所示,梁截面为厚度 3mm ,宽 b 40mm , 高 h 60mm 的空心矩形。弹性模量 E 200GPa 。载荷 q 500 N / m , l 2m 。求 自由端的挠度与转角。 (改编自张少实主编《新编材料力学》 (第二版)习题 7-20 (d) ) 解: 1°理论解: 本题可用积分法计算得到:
Harbin Institute of Technology
材料力学上机大作业
题 院 专 班 姓 学
目: 系: 级: 名: 号:
简单梁的变形分析 机电工程学院 1408104 程建华 1140810414 张桂莲 2016 年 6 月 13 日
业:机械设计制造及其自动化
指导教师: 完成时间:
一、 问题描述
本程序的名称是“简单梁的变形计算器” 。使用者需要输入的参数如下所示: 1.梁的类型。 (从“简支梁” 、 “左端固定悬臂梁” 、 “右端固定悬臂梁” 、 “左端 外伸梁” 、 “右端外伸梁” 、 “双段外伸梁”中选择之一) 2.梁的长度。 (单位:毫米) 3.在必要的时候(当梁的种类是“左端外伸梁” 、 “右端外伸梁” 、 “双段外伸 梁”之一时) ,需要输入支座的位置坐标。 4.支座的类型。 (以确保这是一根静定梁, 尽管此输入对实际计算没有任何作 用) 5.区段的数目,以及各区段的起止点。 (最多三段拥有不同截面、不同抗弯刚 度的区段) 6.各区段的抗弯刚度。 (必要时可以使用本程序自带的计算器加以计算) 7.受力基本情况。 (最多可计算 3 个集中力,3 个均布力,3 个集中力偶) 8.各个载荷的大小和作用位置。 (根据 7 中的选择进行填空) 在输入以上参数之后,按下“生成形变报表”键后,输出结果如下所列: 1.此简单梁的五千等分报表。 (某位置的弯矩、转角、挠度大小) 2.挠度图、转角函数图、弯矩图。 3.可以对任意特定位置的弯矩、转角、挠度进行查询。 4.最大弯矩及其坐标,最大转角及其坐标,最大挠度及其坐标。
第 五 页 共 二十一 页
材料力学大作业
经过“放大” 、 “上移”等操作,我们可以很方便地看到三个曲线的形状。同时,我们查询自由 端的信息,得到的结果是 B 1.5216 mrad , 1.1429 mm ,可见,计算结果是非常精确的。