材料力学上机大作业说明书

合集下载

哈工大材料力学大作业--matlab编程

哈工大材料力学大作业--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σσττ-== 可求得最大切应力。

材料力学上机大作业(哈工大)

材料力学上机大作业(哈工大)

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 梁 上机 大作业

哈工大 材料力学 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图都经过笔算检验完全正确。

《材料力学》课程设计说明书

《材料力学》课程设计说明书

材料力学课程设计说明书设计题目五种传动轴的静强度、变形及疲劳强度的计算汽车工程学院车辆工程专业班设计者学号卡号选课号148指导教师2006 年10 月1 日1.材料力学课程设计的目的本课程设计的目的是在于系统学完材料力学之后,能结合工程中的实际问题,运用材料力学的基本理论和计算方法,独立地计算工程中的典型零部件,以达到综合运用材料力学的知识解决工程实际问题之目的。

同时,可以使学生将材料力学的理论和现代计算方法及手段融为一体。

既从整体上掌握了基本理论和现代的计算方法,又提高了分析问题,解决问题的能力;既把以前所学的知识(高等数学、工程图学、理论力学、算法语言、计算机和材料力学等)综合运用,又为后继课程(机械设计、专业课等)打下基础,并初步掌握工程中的设计思想和设计方法,对实际工作能力有所提高。

具体的有以下六项:1.使学生的材料力学知识系统化、完整化;2.在系统全面复习的基础上,运用材料力学知识解决工程中的实际问题;3.由于选题力求结合专业实际,因而课程设计可以把材料力学知识和专业需要结合起来;4.综合运用了以前所学的个门课程的知识(高数、制图、理力、算法语言、计算机等等)使相关学科的知识有机地联系起来;5.初步了解和掌握工程实践中的设计思想和设计方法;6.为后继课程的教学打下基础。

2.材料力学课程设计的任务和要求要求参加设计者,要系统地复习材料力学的全部基本理论和方法,独立分析、判断、设计题目的已知条件和所求问题。

画出受力分析计算简图和内力图,列出理论依据和导出计算公式,独立编制计算程序,通过计算机给出计算结果,并完成设计计算说明书。

3.材料力学课程设计的题目传动轴的强度、变形及疲劳强度计算6-1 设计题目传动轴的材料为优质碳素结构钢(牌号45),许用应力[σ]=80MPa,经高频淬火处理,其σb=650MPa,σ-1=300MPa,τ-1=155MPa,磨削轴的表面,键槽均为端铣加工,阶梯轴过渡圆弧r均为2,疲劳安全系数n=2,要求:1)绘出传动轴的受力简图;2)作扭矩图及弯矩图;3)根据强度条件设计等直轴的直径;4)计算齿轮处轴的挠度;(按直径Φ1的等直杆计算)5)对阶梯传动轴进行疲劳强度计算;(若不满足,采取改进措施使其满足疲劳强度);6)对所取数据的理论根据作必要的说明。

材料力学大作业

材料力学大作业

梁的强度计算(材料力学大作业)
姓名:
班级:
学号:
题目:
2014年4月
梁的强度计算
一、说明
本作业的目的在于对梁的强度计算作一全面训练。

包括内力图、截面选择及主应力校核等,对弯曲应力及应力状态等基本概念也将作进一步的巩固。

二、已知条件
图号,数据号。

梁的许用应力[σ]=140Mpa。

三、要求
1.作剪力图和弯矩图;
2.根据正应力强度条件选定工字钢的型号;
3.画出危险截面处正应力及切应力的分布图;
4.画出指定截面m-n(内力分量较大的一侧)上1、2、3、4及5点处的应力状态,用应力圆求其主应力的大小及方向(主平面的方位在单元体上表示),并画出该截面上最大主应力的分布图;
5.用第三或第四强度理论对梁进行全面校核。

四、作业内容及要求
1.计算说明书一份;
2.图一份,包括:
(1)剪力图和弯矩图;
(2)危险截面处正应力及切应力的分布图;
(3)指定截面上1-5点处的应力状态,应力圆及最大主应力的分布图。

3.计算过程及相关图均要求A4幅面,封面用统一格式。

五、图及数据
图:
作业说明:
每个班分4个组,每组又分为三个小组。

每组做一个图号的题,而其中三个小组各采用三组数据中的其中一组。

即全班共有12种题。

要求统一封面,均用A4纸。

(为节约计,用纸可以班统一购买)。

作业于5月23日交系办公室闫老师(或马老师)代收。

《材料力学》教学大纲及说明

《材料力学》教学大纲及说明

《材料力学》教学大纲及说明《材料力学》课程大纲课程编码:3865课程名称:材料力学英文名称:Mechanics of Materials总学时:80 实验:12 上机:适用专业:土木工程专业一、课程内容及要求本课程的主要内容:主要讲授构件的强度、刚度、稳定性概念,及构件在满足该三项指标的前提下,如何选择合适的材料、合理截面、确定许可载荷提供理论依据。

学习重点:(一)基本概念部分主要以强度、刚度、稳定性、内应力、位移、应变等基本概念为重点,要求阐明截面法及有关各力学量间的关系,建立明确的概念。

(二)基本变形部分主要以各基本变形的概念,内力及内力图绘制、应力与变形计算及相应的强、刚度计算为重点,要求阐明各基本变形的受力与变形特点、应力、应变的分布规律及计算公式、强度及刚度条件,从力学角度满足工艺要求的有关措施。

(三)应力状态强度理论部分的重点为应力状态的概念,平面应力状态分析及强度理论的主要观点与相应的强度条件。

阐明平面应力状态分析的解析法与图解法结论。

古典强度理论的强度条件与适用范围,准确地用于杆件组合变形强度计算。

压杆稳定部分的重点是稳定性、临界力、;临界应力的概念及稳定校核计算。

阐明稳定及失稳的概念及实质;导出欧拉公式,进行临界应力计算;交变应力及动荷问题的重点是建立交变应力的概念及疲劳条件;动静法及能量法计算动荷问题的基本原理。

学习难点:(一)基本概念部分主要以强度、刚度、稳定性、内应力、位移、应变等基本概念为难点,要求阐明截面法及有关各力学量间的关系,建立明确的概念。

(二)基本变形部分主要以内力及内力图绘制、应力计算及相应的强、刚度计算为难点。

(三)应力状态强度理论部分的难点为应力状态的概念,平面应力状态分析的解析法与图解法。

压杆稳定部分的难点是临界应力计算。

第一章总论§1.1材料力学及其基本任务、材料力学的主要研究对象§1.2基本概念变形固体及其基本假设、外力、内力、应力、变形、变位、应变§1.3 杆件的基本变形要求:通过本章的教学,使学生了解材料力学的任务和杆件变形的基本形式,了解构件强度、刚度和稳定性的概念;理解变形固体的基本假定、条件和意义;理解内力、正应力、剪应力、剪应变及单元体的基本概念;初步掌握用截面法计算内力的方法。

材料力学上机大作业

材料力学上机大作业

2013年材力上机大作业应力状态分题目要求:输入:1.平面应力状态输入:(σx、σy、τxy);某截面方位角α2.空间应力状态输入:(σx、σy、σz、τxy、τyz、τxz)输出:1.输出主应力(σ1、σ2、σ3)2.最大剪应力(τmax=τ13=(σ1—σ3)/2)3.如为平面应力状态则需输出方位角α斜截面上的应力σa、τa及主方向角αa4.画出应力圆示意图二、程序原文:#include<stdio.h>#include <math.h>void Erxiang(float xigemaX,float xigemaY,float taoxy,float aerfa); /*二向应力求解函数*/void Sanxiang(float xigemaX,float xigemaY,float xigemaZ,float taoxy,float taoxz,float taoyz);/*三向应力求解函数*/void main(){int a;/*状态标志量,用以进行二向应力与三向应力问题的选择*/float xigemaX,xigemaY,xigemaZ,taoxy,taoxz,taoyz,aerfa;/*各应力及α*/printf("Select items from 2 or 3\n");/*选择二向应力问题或三向应力问题,键入2或3,以回车结束*/scanf("%d",&a);if(a==2)/*键入2后执行二向应力求解过程*/{printf("xigemaX:");/*屏幕提示输入*/scanf("%f",&xigemaX);/*键入已知数值,以回车结束,下同*/printf("xigemaY:");scanf("%f",&xigemaY);printf("taoxy:");scanf("%f",&taoxy);printf("aerfa:");scanf("%f",&aerfa);Erxiang(xigemaX,xigemaY,taoxy,aerfa);}else/*键入3后执行三向应力求解过程*/{printf("xigemaX:");scanf("%f",&xigemaX);printf("xigemaY:");scanf("%f",&xigemaY);printf("xigemaZ:");scanf("%f",&xigemaZ);printf("taoxy:");scanf("%f",&taoxy);printf("taoxz:");scanf("%f",&taoxz);printf("taoyz:");scanf("%f",&taoyz);Sanxiang(xigemaX,xigemaY,xigemaZ,taoxy,taoxz,taoyz);}}void Erxiang(float xigemaX,float xigemaY,float taoxy,float aerfa)/*二向应力求解函数*/{float aerfa2,a;/*aerfa2为所求主应力角*/float xigema1,xigema2,xigema3,xigemaaerfa,taoaerfa;/*分别为三个主应力与α方向上的正应力与切应力*/xigema1=(xigemaX+xigemaY)/2+sqrt(taoxy*taoxy+((xigemaX-xigemaY)/2)*((xigemaX-xigema Y)/2));xigema2=(xigemaX+xigemaY)/2-sqrt(taoxy*taoxy+((xigemaX-xigemaY)/2)*((xigemaX-xigema Y)/2));a=2*taoxy/(xigemaX-xigemaY);aerfa=(aerfa/180)*3.141592657;/*角度转化为弧度*/aerfa2=atan(a)/2;xigemaaerfa=(xigemaX+xigemaY)/2+(xigemaX-xigemaY)*cos(2*aerfa)/2+taoxy*sin(2*aerfa);taoaerfa=-(xigemaX-xigemaY)*sin(2*aerfa)/2+taoxy*cos(2*aerfa);aerfa2=aerfa2/3.141592657*180;if(xigema2>=0)/*进行主应力的大小排序与各解的输出*/{printf("xigema1=%f,xigema2=%f,xigema3=0\n",xigema1,xigema2);/*输出主应力*/printf("aerfa1=%f,aerfa2=%f\n",aerfa2,aerfa2+90);/*输出主应力角*/printf("xigemaaerfa=%f,taoaerfa=%f\n",xigemaaerfa,taoaerfa);/*输出α方向上的应力*/}else if(xigema1<=0){printf("xigema1=0,xigema2=%f,xigema3=%f\n",xigema1,xigema2);printf("aerfa1=%f,aerfa2=%f\n",aerfa2,aerfa2+90);printf("xigemaaerfa=%f,taoaerfa=%f\n",xigemaaerfa,taoaerfa);}else{printf("xigema1=%f,xigema2=0,xigema3=%f\n",xigema1,xigema2);printf("aerfa1=%f,aerfa2=%f\n",aerfa2,aerfa2+90);printf("xigemaaerfa=%f,taoaerfa=%f\n",xigemaaerfa,taoaerfa);}}void Sanxiang(float xigemaX,float xigemaY,float xigemaZ,float taoxy,float taoxz,float taoyz)/*三向应力求解函数*/{float a,b,c,d,deta,k,t,xita,xigema1,xigema2,xigema3;/*定义一元三次方程相关系数与三个主应力*/float yoona;a=1;b=-(xigemaX+xigemaY+xigemaZ);c=(xigemaX*xigemaY-taoxy*taoxy+xigemaY*xigemaZ-taoyz*taoyz+xigemaZ*xigemaX-taoxz*t aoxz);d=-(xigemaX*xigemaY*xigemaZ+taoxy*taoyz*taoxz+taoxz*taoxy+taoyz-xigemaX*taoyz*taoyz-taoxy*taoxy*xigemaZ-xigemaY*taoxz*taoxz);deta=b*b-4*a*c;k=b/a;t=(2*a*b-3*a*b)/(2*pow(a,3/2));xita=acos(t);if(deta>0)/*主应力求解过程*/{printf("error!!");}else if(deta==0){xigema1=-b/a+k;xigema2=-k/2;xigema3=xigema2;}else;{xigema1=(-b-2*pow(a,1/2)*cos(xita/3))/(3*a);xigema2=(-b+pow(a,1/2)*(cos(xita/3)+pow(3,1/2)*sin(xita/3)))/(3*a);xigema3=(-b+pow(a,1/2)*(cos(xita/3)-pow(3,1/2)*sin(xita/3)))/(3*a);}if(xigema1<xigema2)/*主应力大小排序*/{yoona=xigema1;xigema1=xigema2;xigema2=yoona;}else;if(xigema2<xigema3){yoona=xigema3;xigema3=xigema2;xigema2=yoona;}else;if(xigema1<xigema2){yoona=xigema2;xigema2=xigema1;xigema1=yoona;}else;printf("xigema1=%f,xigema2=%f,xigema3=%f\n",xigema1,xigema2,xigema3);/*输出结果*/ }三、运行范例:应力状态选择,输入2代表平面应力状态,3代表空间应力状态;选择平面应力状态,输入应力σx=40Mpa,σy=-20Mpa,τxy=40Mpa,α=30º;输出结果,σ1=60Mpa,σ2=0;σ3=—40Mpa,σa=59.641014Mpa,τ—5.980763Mpa;。

哈工大材料力学上机编程报告

哈工大材料力学上机编程报告

材料力学上机大作业题目名称:二向应力状态分析通用程序作者班号作者学号:作者姓名:指导教师:完成时间: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编)

哈工大材料力学上机大作业(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方向上的应力值,点击"计算"按扭,可以计算出三个主应力及最大切应力。

材料力学大作业

材料力学大作业
所幸在使用和生产中有很多方法可以防治应力集中的危害。以下就是几个简单的例子:
1.躲避防患:有“伤口”(即使很小)的单股绳不要使用。远离已有小裂缝的玻璃、陶瓷制品等,以防它们”突然崩溃”溅出碎片伤人。在刮大风的时候,不要站在大的玻璃窗下。不要购买那些某处曲率大的产品。
2.分散应力:玻璃有小裂缝,能止住裂缝继续变长吗?答案是可以的,裂缝的末尾打一个适当大小的圆孔来分散应力即可止住其继续变长。使用同样原理的例子还有比如,修补车胎的师傅,会把车胎裂口的两端剪成圆形后再修补。
3.逐渐变温:冬天把烫开水冲入普通玻璃保温瓶时,应先把温度较低的温、热水倒进去预热,倒出之后,再进一步预热。多次预热后再冲入开水。同理,在夏天把诸如雪糕等低温物体放进普通玻璃桶时,应逐渐降温。
4.减小曲率:在制作各种拉力工具时,拉脚的拐弯处应设圆角,这并不是为了美观,这是为了避免应力集中。应用同样方法的还有在有凹洞的物品表面涂油漆或胶水填补凹洞。
图2
选取左半边结构如图2所示,由于此结构为正对称结构,所以C节点暴漏出内力为轴力和弯矩(剪力在正对称结构中等于0)。我们对A点用节点法可得A处没有水平,只有竖向分力。所以C点暴漏出的轴力等于0,由于C节点是铰接,所以C节点的弯矩也等于0,所以取左半边结构后,可简化为图3所示结构。
图3
取节点D求DC杆内力。

图4
取I—I截面如图4,取左部分为研究对象如图5。
图5

下面求AC杆的弯矩和剪力。
如此一来这题我们就做完了,接下来我们只需画出悬索桥模型的内力图即可,鉴于内力图太大,就不粘贴到此文章当中。由内力图我们可以看出,悬索部分均没有剪力和弯矩,只有轴力,而桥面部分则正好相反,没有轴力,只有剪力和弯矩。这样一来,我们就可以确定桥面上弯矩最大处在A点左边300m和B点右边300m处, 。这样我们就可以针对此最大弯矩对桥面进行加固,以使桥面能承受大于 的弯矩。由轴力图我们可以看出DA和EB悬索承受最大的轴力,这样我们就需要在这2根杆上进行加固,使它至少能承受1200kN的力,否则他就会断裂,甚至造成桥的坍塌。

材料力学实验指导书(正式)

材料力学实验指导书(正式)

材料力学实验教案湖南文理学院机械工程学院徐立2009年1月课程名称材料力学实验使用教材刘鸿文吕荣坤材料力学实验高等教育出版社2007专业班级机电07101-102 机自07101-104授课课时机电6学时机自8学时授课教师徐立授课时间2009年上学期主要参考文献[1]刘鸿文材料力学[M] 北京高等教育出版社2007[2]贾有权材料力学实验[M] 北京高等教育出版社2007学时分配(机电)第一讲低碳钢的拉伸实验 2学时第二讲铸铁的压缩实验 2学时第三讲扭转实验 2学时学时分配(机自)第一讲低碳钢、铸铁的拉伸实验 4学时第二讲铸铁的压缩实验 2学时第三讲扭转实验 2学时学生实验须知:1.实验前必须预习实验指导书中相关的内容,了解本次实验的目的、要求及注意事项。

2.按预约实验时间准时进入实验室,不得无故迟到、早退、缺席。

3.进入实验室后,不得高声喧哗和擅自乱动仪器设备,损坏仪器要赔偿。

4.保持实验室整洁,不准在机器、仪器及桌面上涂写,不准乱丢纸屑,不准随地吐痰。

5.实验时应严格遵守操作步骤和注意事项。

实验中,若遇仪器设备发生故障,应立即向教师报告,及时检查,排除故障后,方能继续实验。

6.实验过程中,若未按操作规程操作仪器,导致仪器损坏者,将按学校有关规定进行处理。

7.实验过程中,同组同学要相互配合,认真测取和记录实验数据;8.实验结束后,将仪器、工具清理摆正。

不得将实验室的工具、仪器、材料等物品携带出实验室。

9.实验完毕,实验数据经教师认可后方能离开实验室。

10.实验报告要求字迹端正、绘图清晰、表格简明、实验结果正确。

第一讲 低碳钢的拉伸实验教学目的 :1. 测定低碳钢的弹性模量E 、屈服极限σs 、强度极限σb 、延伸率δ和 断面收缩率Ψ。

2. 观察低碳钢拉伸过程中的弹性、屈服、强化、颈缩、断裂等物理现象。

3. 熟悉材料实验机和其它仪器的使用教学过程:1. 讲解实验原理、实验过程,2. 学生分组实验3. 试验机准备。

哈工大材料力学上机

哈工大材料力学上机

材料力学上机大作业院系:机电工程学院班级: 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 +=-。

材料力学上机大作业(matlab编)

材料力学上机大作业(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】圆杆同时受集中力与弯矩作用,输入、输出见下图。

材料力学实验指导书-大作业

材料力学实验指导书-大作业

材料力学实验指导书班级________________学号________________姓名________________南京农业大学工学院机械设计教研室二○○六年八月目录引言 (2)第一章拉伸和压缩实验§1—1 电子万能试验机 (5)§1—2 拉伸实验 (9)§1—3 压缩实验 (13)第二章扭转实验§2—1 扭转试验机 (14)§2—2 剪切弹性模量G的测定 (16)§2—3 扭转破坏实验 (18)第三章弯曲实验§3—1 测试设备和仪器 (21)§3—2 纯弯曲梁正应力的测定 (23)引言一、材料力学实验的重要性材料力学是研究工程实际问题中构件的强度、刚度和稳定性的学科。

其研究方法一般是先进行实验,然后根据实验中的现象,做出一些假设并加以简化。

最后再进行理论分析,得出公式和结论。

但所推导出的一般性公式是否正确,还要用实验验证。

所以,材料力学实验是材料力学中不可缺少的一部分。

不仅是建立理论的基础,也是检验理论的重要方法。

通过实验课,还可以进一步巩固、加深理解书本中的基本理论知识。

二、材料力学实验的内容1.测定材料机械性质的实验在构件设计中,要合理地选择材料,必须知道各种材料的机械性能指标(如弹性模量、强度极限等)。

要得到这些数据,只有依靠实验,如拉伸、压缩等。

2.验证理论的实验材料力学中的一些公式都是将实际问题抽象为理想模型,提出假设来推导的。

而事实上,材料的性质往往很复杂,必须通过实验来验证理论公式和实际情况符合程度,如纯弯曲梁正应力的测定,压杆稳定等均属于这类实验。

3.应力分析的实验工程上很多实际构件的形状的受载情况比较复杂,当构件内部的应力大小及分布情况单纯依靠理论计算难以解决时,可以用实验方法进行测定,其主要有电测法、光测法等。

三、材料力学实验的要求1.做好实验课前的预习及准备工作通过预习,明确实验目的、原理和步骤,设计记录表格,作为原始记录数据用。

材料力学指导书(单)

材料力学指导书(单)

《材料力学》实验指导书机电及自动化学院2010.3地点:f3-104《材料力学》(工程力学)俞 铁 岳绪 言实验在《材料力学》中占有相当重要的地位,它是材料力学教学中一个必不可少的重要环节。

材料力学中的很多定律,结论材料的机械性能,都要通过实验来加以验证和测定。

力学实验的内容是很广泛的,但就材料力学来说按实验的性质可以分为三类:1、测定材料机械性能的试验。

这一类试验包括各种材料的轴向拉伸、轴向压缩,扭转剪切、冲击和硬度等试验。

材料的机械特性及有关的数值在工程中是设计各种构件必不可少的依据。

2、验证理论的实验。

如本课程中梁的正应力实验,梁的弯曲变形实验等。

3、实验应力分析。

即用实验的方法来解决应力分析的问题,其中主要的有电测法,光弹性法,脆性涂层法,网格法等。

实验(一) 拉伸与压缩实验一、目的1. 了解电子式材料试验机的工作原理和操作方法。

2. 在试验机上做低碳钢、铸铁的拉伸和压缩试验。

3. 采集、整理实验数据,写出实验报告。

二、仪器设备1. 电子式材料试验机2. 游标卡尺 三、试件试件的尺寸和形状必须按照国家统一的“标准试件”。

拉伸试件一般两种形式。

1. 十倍试件:当为圆截面时 L=10d(长试件)当为矩形截面时 L=11.3A2. 五倍试件:当为圆截面时 L=5d (短试件)当为矩形截面时 L=5.65A金属压缩试件通常采用圆柱形试件,一般规定高度h 与直径d 之比为1<dh <3压缩试件四、试验步骤1. 量测试件两打点标距L 0,准确到0.1㎜。

2. 用游标卡尺在试件标距内的两端及中间三处截面,量测出直径(每处截面相互垂直方向各量一次),准确到0.02㎜,三处截面各取平均值,取其中最小一处的平均直径作为计算直径d ,然后代入进行计算。

3. 估计试件受拉破坏的最大荷载,在试验机上选取合适量程。

例如:A 3钢=(380~480)M pa ×0.785C ㎡<40KN ,则P max 不会超过40KN ,即可选取试验机的合适量程。

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

材料力学上机大作业说明
一、设计项目
为解决一类材料力学问题,进行程序的设计和调试
二、设计题目
为了工程上的方便,将简单梁的变形计算用程序编制,快速高效的解决梁弯曲的问题
三、编程思路
用C++进行编程,思路相对清晰,设计方便且运行稳定。

整个梁结构分为悬臂梁,简支梁和外伸梁,受力分为力和力偶。

根据书本上的表格,变形方式分为了5大类(1悬臂梁-力偶;2悬臂梁-压力;3简支梁-力偶;4简支梁-压力;5外伸梁-压力)。

这需要一组“case”选择语句。

各个方式的参数不尽相同,因此我们需要设置子函数“get i()”。

当然输入输出函数是必备的。

最后,我们还需要一个循环语句使之能重复运行和一个“break”语句跳出运行
四、程序与说明
#include<iostream> %调用系统默认函数
#include<cmath> %调用系统默认函数
using namespace std; %调用系统默认函数
int choice; %定义变量
double M, e, E, x, I, a, b, F, L; %定义变量
double get1() %定义子函数
{
return -1 * M * e * a /( E * I ) * ( ( x - a ) + a / 2 );
}
double get2() %定义子函数
{
return -1 * F * a * a / ( 6 * E * I ) * ( 3 * x - a );
}
double get3() %定义子函数
{
return M * e / ( 6 * E * I * L ) * ( -1 * pow( x, 3.0 ) + 3 * L * pow( ( x - a ), 2 ) + ( L * L - 3 * b * b ) * x );
}
double get4() %定义子函数
{
return -F * b / ( 6 * E * I * L ) * ( L / b *pow( x - a, 3 ) + ( L * L - b * b ) * x - x * x * x );
}
double get5() %定义子函数
{
return -F * ( x - L ) / ( 6 * E * I ) * ( a * ( 3 * x - L ) - pow( x - L, 2.0 ) );
}
int main() %定义主函数
{
bool stop = false; %逻辑语句,判断是否退出//bool quiry = false;
while ( !stop ) %梁参数能够被输入的条件,也是判断是否退出{
//quiry = false;
printf( "请输入梁的序号(1悬臂梁-力偶;2悬臂梁-压力;3简支梁-力偶;4简支梁-压力;5外伸梁-压力): "); %请求输入梁受力方式scanf( "%d", &choice ); %存储用户的选择
switch( choice ) %调用用户要求的方式
{
case 1:
printf( "请输入参数M, e, E, I, a,l: " );
scanf( "%lf %lf %lf %lf %lf %lf", &M, &e, &E, &I, &a, &L );
printf( "端截面转角:%lf 最大绕度:%lf\n", -M * e * a / ( E * I ), -M * e * a / ( E * I ) * ( L - a / 2 ) ); %端截面转角,最大绕度结果printf( "输入x:(输入任意字母退出)" ); %运行完成第一步询问是否退出
while ( scanf( "%lf", &x ) == 1 ) %退出与否的逻辑选择(输入任意点x)
{
cout << get1() << endl;
printf( "输入x:(输入任意字母退出)" );
}
break;
case 2: %后面4个case设计思路一致
printf( "请输入参数F,E,I,a,l: " );
scanf( "%lf %lf %lf %lf %lf", &F, &E, &I, &a, &L );
printf( "端截面转角:%lf 最大绕度:%lf\n", -F * a * a / ( 2 * E * I ), -F * a * a / ( 6 * E * I ) * ( 3 * L - a ) );
printf( "输入x:(输入任意字母退出)" );
while ( scanf( "%lf", &x ) == 1 )
{
printf( "%lf\n", get2() );
printf( "输入x:(输入任意字母退出)" );
}
break;
case 3:
printf( "请输入参数M,e,E, I,a, l, b: " );
scanf( "%lf %lf %lf %lf %lf %lf %lf", &M, &e, &E, &I, &a, &L, &b );
printf( "端截面转角a:%lf 端截面转角b:%lf\n", M * e / ( 6 * E * I * L ) * ( L * L - 3 * b * b ), M * e / ( 6 * E * I * L ) * ( L * L - 3 * a * a ) );
printf( "输入x:(输入任意字母退出)" );
while ( scanf( "%lf", &x ) == 1 )
{
cout << get3() << endl;
printf( "输入x:(输入任意字母退出)" );
}
break;
case 4:
printf( "请输入参数F, b , E, I, a, l: " );
scanf( "%lf %lf %lf %lf %lf %lf", &F, &b, &E, &I, &a, &L );
printf( "端截面转角A:%lf 端截面转角B:%lf\n", -F * a * b * ( L + b )/ ( 6 * E * I * L ), F * a * b * ( L + a )/ ( 6 * E * I * L ) );
printf( "最大挠角:%lf\n", -F * b * pow( L * L - b * b, 3 / 2.0 ) / ( 9 * sqrt( 3.0 ) * E * I * L ) );
printf( "输入x:(输入任意字母退出)" );
while ( scanf( "%lf", &x ) == 1 )
{
printf( "%lf\n", get4() );
printf( "输入x:(输入任意字母退出)" );
}
break;
case 5:
printf( "请输入参数F, E, I, L, a: " );
scanf( "%lf %lf %lf %lf %lf", &F, &E, &I, &L, &a );
printf( "端截面转角A:%lf 端截面转角c:%lf\n", F * a * L / ( 6 * E * I ), -F * a / ( 6 * E * I ) * ( 2 * L + 3 * a ) );
printf( "输入x:(输入任意字母退出)" );
while ( scanf( "%lf", &x ) == 1 )
{
printf( "%lf\n", get5() );
printf( "输入x:(输入任意字母退出)" );
}
break;
default:
printf( "非法序号!\n"); %不满足选择序号要求的询问}
char str[ 2 ];
printf( "是否退出?( y / n )" ); %对所有出现的"break"询问是否退出
fflush( stdin );
scanf( "%s", str ); %用户给是否退出指令
strcmp( str, "y" ) == 0 ? stop = true : stop = false; %计算机判断分析是否退出}
}。

相关文档
最新文档