哈工大材料力学上机大作业.docx
- 文档编号:18212885
- 上传时间:2023-04-24
- 格式:DOCX
- 页数:17
- 大小:59.49KB
哈工大材料力学上机大作业.docx
《哈工大材料力学上机大作业.docx》由会员分享,可在线阅读,更多相关《哈工大材料力学上机大作业.docx(17页珍藏版)》请在冰豆网上搜索。
哈工大材料力学上机大作业
HarbinInstituteofTechnology
材料力学大作业
题目名称:
各种条件下的任意截面的弯矩,挠度
∙问题的提出
该程序可以解决的问题:
一个力作用下
(1)圆柱面杆
(2)矩形截面杆(3)工字梁截面杆(4)空心圆柱截面杆的弯矩和挠度
∙程序流程图
输入杆长(mm),力F(kN),力作用点到左端面A的距离a(mm)
输入梁的弹性模量(Gpa)输入所求端面到左端面的距离X输入梁的形状计算惯性矩计算并输出弯矩根据梁的形状不同输入不同的数值计算并输出挠度
三、不同力作用下的弯矩,挠度
1.一个力作用下的任意截面的弯矩,挠度
程序:
#include
#include
#include
#definePI3.1415926
intget_I(intkind);
intmain()
{
floatf=100,l=100,a=50,b,x=60;
floatM,v;
floatE=200,I;
intkind=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);
}
elseif(a { 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"); return0; } intget_I(intkind)//计算截面的I惯性矩 { floatd,b,h;//矩形梁,工字梁,圆柱梁 floatd2,alpha;//空心圆柱梁 floatI; //圆柱面=1,矩形梁=2,工字梁=3,空心圆柱梁=4 if(1==kind)//圆柱面=1 { printf("请输入圆柱梁的直径d\n"); scanf("%f",&d); I=PI*pow(d,4)/64; } elseif(2==kind)//矩形梁=2 { printf("请输入矩形截面的b和h\n"); scanf("%f%f",&b,&h); I=b*pow(h,3)/12; } ///* elseif(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); } //*/ elseif(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; } returnI; } 2.一个力偶作用下的任意截面的弯矩,挠度 #include #include #include #definePI3.1415926 #defineTORAD(PI/180) floatget_I(intkind); floatget_V_M0(floatE,floatLength, floatI, floatx,floatM0,floata_L); floatget_M_M0(floatLength,floatM0, floata_L,floatx); intmain() { intkind;//截面形状 floatLength,a_L,x; floatE,I,M0; floatv,M;//所求截面的挠度,弯矩 printf("InputLength(mm): "); scanf("%f",&Length); Length/=1000;/*单位转化*/ printf("Inputshape(circle=1,scquare=2,gongZL=3,blankcircle=4): "); scanf("%d",&kind); printf("InputE(GPa): "); scanf("%f",&E); E*=1.e9;/*单位转化*/ printf("InputM0(N*m): "); scanf("%f",&M0); printf("Inputa_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("Inputx(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("ToatalM=%gN•m\n",M); printf("Toatalv=%gmm\n",v); return0; system("pause"); } floatget_I(intkind)//计算截面的I惯性矩 { floatd,b,h;//矩形梁,工字梁,圆柱梁 floatd2,alpha;//空心圆柱梁 floatI; //floatt; if(1==kind)//圆柱面=1 { printf("Inputd\n"); scanf("%f",&d); I=PI*pow(d,4)/64; } elseif(2==kind)//矩形梁=2 { printf("Inputb和h\n"); scanf("%f%f",&b,&h); I=b*pow(h,3)/12; } ///* elseif(3==kind)//工字梁=3 { printf("|——————-—————|\n"); printf("|————||——————|t\n"); printf("|d|\n"); printf("||\n"); printf("|————||——————|\n"); printf("|—————b——————|\n"); printf("InputI\n"); scanf("%f",&I); } elseif(4==kind)//空心圆柱梁=4 { printf("Inputdandalpha\n"); scanf("%f%f",&d2,&alpha); I=PI*pow(d2,4)*(1-pow(alpha,4))/64; } else { I=0; } returnI; } floatget_V_M0(floatE,floatLength,floatI,floatx,floatM0,floata_L) { floatv; floatm,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); } elseif(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); } returnv; } floatget_M_M0(floatLength,floatM0,floata_L,floatx) { floatF_L,F_R;//左右两处的支反力 floatm,b; floatM;//所求任意截面的弯矩 b=Length-a_L; m=M0; F_L=-M0/Length; F_R=-F_L; if(x>=0&&x<=a_L) { M=F_L*x; } elseif(x>a_L&&x<=Length) { M=F_R*(x-a_L); } else { printf("ERROR! ! ! \n"); M=0; exit(0); } returnM; } 3.一段分布力作用下的任意截面的弯矩,挠度 #include #include #include #definePI3.1415926 floatget_I(intkind);//计算截面的I惯性矩 floatget_M_q(floatE,floatI,floatLength,floatx,floatq,floata_q_L,floata_q_R); floatget_V_q(floatE,floatI,floatLength,floatx,floatq,floata_q_L,floata_q_R); intmain() { floatLength,a_q_L,a_q_R,q; floatE,I; floatM,V,x; intkind; 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("所求截面的弯矩是: %gN•m\n",M); printf("所求截面的挠度是: %gm\n",V); system("pause"); return0; } floatget_I(intkind)//计算截面的I惯性矩 { floatd,b,h;//矩形梁,工字梁,圆柱梁 floatd2,alpha;//空心圆柱梁 floatI; if(1==kind)//圆柱面=1 { printf("请输入圆柱梁的直径d(单位: mm)"); scanf("%f",&d); d*=1.e-3; I=PI*pow(d,4)/64; } elseif(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; } elseif(3==kind)//工字梁=3 { printf("|——————-—————|\n"); printf("|————||——————|t\n"); printf("|d|\n"); printf("||\n"); printf("|————||——————|\n"); printf("|—————b——————|\n"); printf("请查附表B输入工字梁的惯性矩I"); scanf("%f",&I); } elseif(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; } returnI; } floatget_M_q(floatE,floatI,floatLength,floatx, floatq,floata_q_L,floata_q_R) { floatc_q,fa,fb; floatM; 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); } elseif((x>a_q_L)&&(x<=(Length-a_q_R))) { M=(fa*x-(x-a_q_L)*(x-a_q_L)*q/2)/(E*I); } elseif((x>(Length-a_q_R))&&(x<=Length)) { M=(fb*(Length-x))/(E*I); } else { M=0; printf("ERROR! ! ! ! ! \n"); exit(0); } returnM; } floatget_V_q(floatE,floatI,floatLength,floatx,floatq,floata_q_L,floata_q_R) { floatc_q,fa,fb; floatV; 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); } elseif((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); } elseif((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); } returnV; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 哈工大 材料力学 上机 作业