版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
HarbinInstituteofTechnology课程设计课程名称:材料力学设计题目:悬臂梁的弯矩及挠度院系:机电工程学院班级:设计者:学号:设计时间: 指导老师:哈尔滨工业大学一问题描述:在悬臂梁条件下,进行材料选取或者探究某材料是否满足设计和使用要求时,如果能够快速计算出材料任意截面的弯矩和挠度,乃至于整体的最大弯矩,最大挠度,则可以起到事半功倍的效果。为此,我设计了这个c语言程序。这个c语言程序有以下两个特点:界面比较友善,可以根据实际要求,具体选择计算的方式。计算迅速,占用空间小,简单实用,适用面广。二界面展示及源代码:主界面:图一:主选择界面这个界面的最显著的特点是:界面较为友好,清晰;而且用户可以根据实际情况具体选择运用哪种方法进行计算。具体的选项:1-8都有文字标注,选择只需输入数字,然后回车便可出现下一步的具体提示。(2)1:计算一个力作用下的任意截面的弯矩,挠度:【1】源代码:#include<stdio.h>#include<math.h>doubleMz,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); } elseif(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"); }}【2】检验数据:条件:L=1m,E=4.5GPa。Im4QUOTE,F=1000N,a=0.6m,x=0.3m;理论运算结果:Mz=120NmV=-033m【3】程序运行结果:图二:程序一运行 结论:运行结果与理论运算结果相同,可以使用。(3)一个力偶作用下的任意截面的弯矩,挠度。【1】源代码:#include<stdio.h>#include<math.h>doubleMz,l,a,x,v,E,I,b,M;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("请输入弯矩M\n");scanf("%lf",&M);printf("请输入x\n");scanf("%lf",&x);b=l-a;if(x>0&&x<a){Mz=M*x/l;v=M*x*(l*l-3*b*b-x*x)/(6*E*I*l);printf("Mz=%f\n",Mz);printf("v=%f\n",v);}elseif(x>a&&x<l){Mz=M*(l-x)/l;v=M*(-x*x*x+3*l*(x-a)*(x-a)+(l*l-3*b*b)*x);printf("Mz=%f\n",Mz);printf("v=%f\n",v);}else{printf("數值溢出\n");}}【2】检验数据:条件:L=1m,E=4.5GPa。IQUOTEm4,M=1000Nm,a=0.6m,x=0.3m;理论计算结果:Mz=300.00NmV048m【3】程序运行结果: 图三:程序一运行 结论:运行结果与理论运算结果相同,可以使用。(4)一段分布力作用下的任意截面的弯矩挠度:【1】源代码:#include<stdio.h>#include<math.h>doubleq,l,c,d,x,E,I,v,Mz;doubleC,D,Ec,Fc;doubleFR1,FR2;/*函数功能:奇异函数*/doubleqiyi(doublex,doubley){ if(x<=y) return0; if(x>y) returnx-y;}main(){printf("请输入长度l\n");scanf("%lf",&l);printf("请输入弹性模量E\n");scanf("%lf",&E);printf("请输入极惯性矩I\n");scanf("%lf",&I);printf("请输入分布力q\n");scanf("%lf",&q);printf("请输入长度c\n");scanf("%lf",&c);printf("请输入长度d\n");scanf("%lf",&d);printf("请输入x\n");scanf("%lf",&x);C=qiyi(x,c); D=qiyi(x,d); FR2=(-q*(d*d-c*c)/2)/l;//求支反力 FR1=-q*(d-c)-FR2; Ec=-(FR1*pow(l,3)/6-q*pow(l-c,4)/24+q*pow(l-d,4)/24)/E/I/l; Fc=0; Mz=(FR1*x-0.5*q*C*C+0.5*q*D*D); v=(FR1*pow(x,3)/6-q*pow(C,4)/24+q*pow(D,4)/24)/E/I+Ec*x; printf("截面的弯矩为:%f\n",Mz); printf("截面的挠度为:%f\n",v);}【2】检验数据:c,d为q作用的起止长度坐标。条件:L=1m,E=4.5GPa。Im4,q=1000N/m,c=0.6m,d=0.8m,x=0.3m;理论计算结果:Mz=-18NmV7m【3】程序运行结果:图三:程序一运行结论:运行结果与理论运算结果相同,可以使用。n个力共同作用下的任意截面的弯矩,挠度:【1】源代码;#include<stdio.h>#include<math.h>doubleMzs,l,a[10],x,vs,E,I,F[10],Mz[10],v[10];inti,nF;main(){ printf("请输入长度l\n"); scanf("%lf",&l); printf("请输入弹性模量E\n"); scanf("%lf",&E); printf("请输入极惯性矩I\n"); scanf("%lf",&I); printf("请输入集中载荷F的个nF:"); scanf("%d",&nF); printf("请输入集中载荷F的值和位置a:"); for(i=0;i<nF;i++) { scanf("%lf%lf",&F[i],&a[i]); } printf("请输入x\n"); scanf("%lf",&x);for(i=0;i<nF;i++){ if(x>0&&x<a[i]) { Mz[i]=F[i]*(l-a[i])*x/l; v[i]=-F[i]*(l-a[i])*x*(l*l-x*x-(l-a[i])*(l-a[i]))/(6*E*I*l); } elseif(x>a[i]&&x<l) { Mz[i]=F[i]*a[i]*(l-x)/l; v[i]=-F[i]*(l-a[i])*(l/(l-a[i])*pow(x-a[i],3)+(l*l-(l-a[i])*(l-a[i]))*x-x*x*x)/(6*E*I*l); } Mzs=Mzs+Mz[i]; vs=vs+v[i];}printf("截面的弯矩为%f",Mzs);printf("截面的挠度为%f",vs);}【2】检验数据:a[n]为F[n]的作用位置坐标。条件:L=1m,E=4.5GPa。Im4,F[1]=1000N,F[2]=2000N,a[1]=0.6m, a[2]=0.8m, x=0.4m;理论计算结果: V【3】程序运行结果:结论:运行结果与理论运算结果相同,可以使用。h个力偶共同作用作用下的任意截面的弯矩,挠度:【1】源代码:#include<stdio.h>#include<math.h>doubleMz[10],l,b[10],x,v[10],E,I,M[10],Mzs,vs;inti,nM;main(){printf("请输入长度l\n");scanf("%lf",&l);printf("请输入弹性模量E\n");scanf("%lf",&E);printf("请输入极惯性矩I\n");scanf("%lf",&I); printf("请输入外力偶M的个数nM"); scanf("%d",&nM); printf("请输入外力偶值和位置b:"); for(i=0;i<nM;i++) { scanf("%lf%lf",&M[i],&b[i]); }printf("请输入x\n");scanf("%lf",&x);for(i=0;i<nM;i++) {if(x>0&&x<b[i]){Mz[i]=M[i]*x/l;v[i]=M[i]*x*(l*l-3*(l-b[i])*(l-b[i])-x*x)/(6*E*I*l);}elseif(x>b[i]&&x<l){Mz[i]=M[i]*(l-x)/l;v[i]=M[i]*(-x*x*x+3*l*(x-b[i])*(x-b[i])+(l*l-3*(l-b[i])*(l-b[i]))*x);} Mzs=Mzs+Mz[i]; vs=vs+v[i]; }printf("截面的弯矩为%f",Mzs);printf("截面的挠度为%f",vs);}【2】检验数据:条件:QUOTEm4,M[1]=1000Nm,M[2]=2000Nm,b[1]=0.6m, b[2]=0.7m, x=0.3m;理论计算结果:Mz=919m【3】程序运行结果:结论:运行结果与理论运算结果相同,可以使用。(7)m段分布力共同作用下的任意截面的弯矩,挠度:【1】源代码:#include<stdio.h>#include<math.h>doubleq[10],l,c[10],d[10],x,E,I,v[10],Mz[10],Mzs,vs;doubleC[10],D[10],Ec[10],Fc[10];doubleFR1[10],FR2[10];inti,nq;doubleqiyi(doublex,doubley){ if(x<=y) return0; if(x>y) returnx-y;}main(){printf("请输入长度l\n");scanf("%lf",&l);printf("请输入弹性模量E\n");scanf("%lf",&E);printf("请输入极惯性矩I\n");scanf("%lf",&I);printf("请输入均布力的个数nq"); scanf("%d",&nq); printf("请输入分布力q的值和位置c,d:"); for(i=0;i<nq;i++) { scanf("%lf%lf%lf",&q[i],&c[i],&d[i]); }printf("请输入x\n");scanf("%lf",&x); for(i=0;i<nq;i++) { C[i]=qiyi(x,c[i]); D[i]=qiyi(x,d[i]); FR2[i]=(-q[i]*(d[i]*d[i]-c[i]*c[i])/2)/l;//求支反力 FR1[i]=-q[i]*(d[i]-c[i])-FR2[i]; Ec[i]=-(FR1[i]*pow(l,3)/6-q[i]*pow(l-c[i],4)/24+q[i]*pow(l-d[i],4)/24)/E/I/l;Mz[i]=(FR1[i]*x-0.5*q[i]*C[i]*C[i]+0.5*q[i]*D[i]*D[i]); v[i]=(FR1[i]*pow(x,3)/6-q[i]*pow(C[i],4)/24+q[i]*pow(D[i],4)/24)/E/I+Ec[i]*x; Mzs=Mzs+Mz[i]; vs=vs+v[i]; }printf("截面的弯矩为%f",Mzs);printf("截面的挠度为%f",vs);}【2】检验数据:条件:L=1m,E=4.5GPa。IQUOTEm4,q[1]=1000Nm,q[2]=2000Nm,c[1]=0.4m, c[2]=0.5m,d[1]=0.6m,d[2]=0.7m,x=0.4m;理论计算结果:Mz=-78NmV32m【3】程序运行结果:结论:运行结果与理论运算结果相同,可以使用。(8)n个力,h个力偶,m段分布力共同作用下的任意截面的弯矩,挠度:【1】源代码:#include<stdio.h>#include<math.h>doubleF[10],M[10],q[10];//定义各个载荷大小的数组doubleMz[10],v[10],l,E,I,Mzs,vs,Mzmax,vmax,Mzmin,vmin;//定义杆的基本参数doublea[10],b[10],c[10],d[10];//定义各个载荷的横坐标doubleA[10],B[10],C[10],D[10];//定义奇异函数中间变量doubleEc[10],Fc[10];//定义积分常数doublex;//定义任一截面横坐标doubleFR1[10],FR2[10];//定义支反力FR1,FR2inti,Q;//定义循环变量intnM,nF,nq,nn;//定义载荷个数/*函数功能:奇异函数*/doubleqiyi(doublex,doubley){ if(x<=y) return0; if(x>y) returnx-y;}voidps(){ printf("请输入长度l\n"); scanf("%lf",&l); printf("请输入弹性模量E\n"); scanf("%lf",&E); printf("请输入极惯性矩I\n"); scanf("%lf",&I);printf("请输入集中载荷F的个nF:"); scanf("%d",&nF); printf("请输入集中载荷F的值和位置a:"); for(i=0;i<nF;i++) { scanf("%lf%lf",&F[i],&a[i]); }printf("请输入外力偶M的个数nM"); scanf("%d",&nM); printf("请输入外力偶值和位置b:"); for(i=0;i<nM;i++) { scanf("%lf%lf",&M[i],&b[i]); }printf("请输入均布力的个数nq"); scanf("%d",&nq); printf("请输入分布力q的值和位置c,d:"); for(i=0;i<nq;i++) { scanf("%lf%lf%lf",&q[i],&c[i],&d[i]); }printf("请输入任一截面横坐标x\n"); scanf("%lf",&x);nn=nF;//找到最大载荷数 if(nM>nn) nn=nM; if(nq>nn) nn=nq;}main(){ps();//初始数据输入 for(i=0;i<nn;i++) { A[i]=qiyi(x,a[i]); B[i]=qiyi(x,b[i]); C[i]=qiyi(x,c[i]); D[i]=qiyi(x,d[i]); FR2[i]=(M[i]-F[i]*a[i]-q[i]*(d[i]*d[i]-c[i]*c[i])/2)/l;//求支反力 FR1[i]=-(F[i]+q[i]*(d[i]-c[i]))-FR2[i];Ec[i]=-((M[i]*pow((l-b[i]),2)/2+F[i]*pow((l-a[i]),3)/6+FR1[i]*pow(l,3)/6-q[i]*po w(l-c[i],4)/24+q[i]*pow(l-d[i],4)/24))/E/I/l;//求积分常数if(x<=b[i])Q=0;if(x>b[i])Q=1;Mz[i]=(M[i]*Q+F[i]*A[i]+FR1[i]*x)-q[i]*pow(C[i],2)/2+q[i]*pow(D[i],2)/2;v[i]=(M[i]*pow(B[i],2)/2+F[i]*pow(A[i],3)/6+FR1[i]*pow(x,3)/6)/(E*I)-(q[i]*pow (C[i],4)/24-q[i]*pow(D[i],4)/24)/(E*I)+Ec[i]*x;Mzs=Mzs+Mz[i]; vs=vs+v[i];}printf("截面的弯矩为%f",Mzs);printf("截面的挠度为%f",vs);}【2】检验数据:条件:L=1m,E=4.5GPa。IQUOTE,F[1]=1000N,F[2]=2000N,a[1]=0.6m, a[2]=0.8m,M[1]=1000Nm,M[2]=2000Nm,b[1]=0.6m, b[2]=0.8mq[1]=1000Nm,q[2]=2000Nm,c[1]=0.4m,c[2]=0.5m, d[1]=0.6m,d[2]=0.7m,x=0.4m;理论计算结果:Mz=-1570.00NmV7m【3】程序运行结果:结论:运行结果与理论运算结果相同,可以使用。(9)n个力,h个力偶,m段分布力共同作用下的最大弯矩,最大挠度。【1】源代码:#include<stdio.h>#include<math.h>doubleF[10],M[10],q[10];//定义各个载荷大小的数组DoubleMz[10],v[10],l,E,I,Mzs[100],vs[100],Mzmax,vmax,Mzmin,vmin;/doublea[10],b[10],c[10],d[10];//定义各个载荷的横坐标doubleA[10],B[10],C[10],D[10];//定义奇异函数中间变量doubleEc[10],Fc[10];//定义积分常数doublex;//定义任一截面横坐标doubleFR1[10],FR2[10];//定义支反力FR1,FR2inti,Q;//定义循环变量intj;ntnM,nF,nq,nn;//定义载荷个数/*函数功能:奇异函数*/doubleqiyi(doublex,doubley){ if(x<=y) return0; if(x>y) returnx-y;}/*函数功能:初始数据输入*/voidps(){ printf("请输入长度l\n"); scanf("%lf",&l); printf("请输入弹性模量E\n"); scanf("%lf",&E); printf("请输入极惯性矩I\n"); scanf("%lf",&I); printf("请输入集中载荷F的个nF:"); scanf("%d",&nF); printf("请输入集中载荷F的值和位置a:"); for(i=0;i<nF;i++) { scanf("%lf%lf",&F[i],&a[i]); } printf("请输入外力偶M的个数nM"); scanf("%d",&nM); printf("请输入外力偶值和位置b:"); for(i=0;i<nM;i++) { scanf("%lf%lf",&M[i],&b[i]);}printf("请输入均布力的个数nq"); scanf("%d",&nq); printf("请输入分布力q的值和位置c,d:"); for(i=0;i<nq;i++) {scanf("%lf%lf%lf",&q[i],&c[i],&d[i]);}printf("请输入任一截面横坐标x\n"); scanf("%lf",&x);nn=nF;//找到最大载荷数 if(nM>nn) nn=nM; if(nq>nn) nn=nq;}main(){ps();//初始数据输入for(j=0;j<99;j++) { x=j*l/100; for(i=0;i<nn;i++) { A[i]=qiyi(x,a[i]); B[i]=qiyi(x,b[i]); C[i]=qiyi(x,c[i]); D[i]=qiyi(x,d[i]); FR2[i]=(M[i]-F[i]*a[i]-q[i]*(d[i]*d[i]-c[i]*c[i])/2)/l;//求支反力 FR1[i]=-(F[i]+q[i]*(d[i]-c[i]))-FR2[i]; Ec[i]=-((M[i]*pow((l-b[i]),2)/2+F[i]*pow((l-a[i]),3)/6+FR1[i]*pow(l,3)/6-q[i]*pow(l-c[ i],4)/24+q[i]*pow(l-d[i],4)/24))/E/I/l;//求积分常数f(x<=b[i]) Q=0; if(x>b[i]) Q=1; Mz[i]=(M[i]*Q+F[i]*A[i]+FR1[i]*x)-q[i]*pow(C[i],2)/2+q[i]*pow(D[i],2)/2; v[i]=(M[i]*pow(B[i],2)/2+F[i]*pow(A[i],3)/6+FR1[i]*pow(x,3)/6)/(E*I)-(q[i]*pow(C[i],4)/2 4-q[i]*pow(D[i],4)/24)/(E*I)+Ec[i]*x; Mzs[j]=Mzs[j]+Mz[i]; vs[j]=vs[j]+v[i]; } if(Mzs[j]>Mzmax) Mzmax=Mzs[j]; if(vs[j]>vmax) vmax=vs[j]; if(Mzs[j]<Mzmin) Mzmin=Mzs[j]; if(vs[j]<vmin) vmin=vs[j]; } printf("最大弯矩为Mzmax=%f\n",Mzmax); printf("最大挠度为vmax=%f\n",vmax); printf("最小弯矩为Mzmin=%f\n",Mzmin); printf("最小挠度为vmin=%f\n",vmin);}【2】检验数据;条件:L=1m,E=4.5GPa。IQUOTEm4,F[1]=1000N,F[2]=2000N,a[1]=0.6m,a[2]=0.8m, M[1]=1000Nm,M[2]=2000Nm,b[1]=0.6m,b[2]=0.8m,q[1]=1000Nm,q[2]=2000Nm, c[1]=0.4m,c[2]=0.5m,d[1]=0.6m,d[2]=0.7m,x=0.4m;理论计算结果:Mzmax=-2360NmV【3】程序运行结果:结论:运行结果与理论运算结果相同,可以使用。三总程序源代码:#include"stdio.h"#include"stdlib.h"#include"string.h"#include"math.h"doubleqiyi(doublex,doubley) { if(x<=y) return0; if(x>y) returnx-y; }voidmain(){ voidfun1(); voidfun2(); voidfun3(); voidfun4(); voidfun5(); voidfun6(); voidfun7(); voidfun8(); { intch; printf("---------------------------请选择相应功能------------------------\n\n"); printf("|1一个力作用下的任意截面的弯矩,挠度。|\n"); printf("|2一个力偶作用下的任意截面的弯矩,挠度。|\n"); printf("|3一段分布力作用下的任意截面的弯矩挠度。|\n"); printf("|4n个力共同作用下的任意截面的弯矩,挠度。|\n"); printf("|5h个力偶共同作用作用下的任意截面的弯矩,挠度|\n"); printf("|6m段分布力共同作用下的任意截面的弯矩,挠度|\n"); printf("|7n个力,h个力偶,m段分布力共同作用下的任意截面的弯矩,挠度。|\n"); printf("|8n个力,h个力偶,m段分布力共同作用下的最大弯矩,最大挠度。|\n");printf("请选择您需要的功能:"); scanf("%d",&ch);/*取得用户的选择*/ switch(ch) { case1:fun1();break;case2:fun2();break;case3:fun3();break;case4:fun4();break;case5:fun5();break;case6:fun6();break;case7:fun7();break;case8:fun8();break; } } system("pause");}voidfun1(){ doubleMz,l,a,x,v,E,I,b,F; 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); } elseif(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"); }}voidfun2(){doubleMz,l,a,x,v,E,I,b,M; 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("请输入弯矩M\n");scanf("%lf",&M);printf("请输入x\n");scanf("%lf",&x);b=l-a;if(x>0&&x<a){Mz=M*x/l;v=M*x*(l*l-3*b*b-x*x)/(6*E*I*l);printf("Mz=%f\n",Mz);printf("v=%f\n",v);}elseif(x>a&&x<l){Mz=M*(l-x)/l;v=M*(-x*x*x+3*l*(x-a)*(x-a)+(l*l-3*b*b)*x);printf("Mz=%f\n",Mz);printf("v=%f\n",v);}else{printf("數值溢出\n");}}voidfun3(){doubleq,l,c,d,x,E,I,v,Mz;doubleC,D,Ec,Fc;doubleFR1,FR2; printf("请输入长度l\n");scanf("%lf",&l);printf("请输入弹性模量E\n");scanf("%lf",&E);printf("请输入极惯性矩I\n");scanf("%lf",&I);printf("请输入分布力q\n");scanf("%lf",&q);printf("请输入长度c\n");scanf("%lf",&c);printf("请输入长度d\n");scanf("%lf",&d);printf("请输入x\n");scanf("%lf",&x); C=qiyi(x,c); D=qiyi(x,d); FR2=(-q*(d*d-c*c)/2)/l;//求支反力 FR1=-q*(d-c)-FR2; Ec=-(FR1*pow(l,3)/6-q*pow(l-c,4)/24+q*pow(l-d,4)/24)/E/I/l; Fc=0; Mz=(FR1*x-0.5*q*C*C+0.5*q*D*D); v=(FR1*pow(x,3)/6-q*pow(C,4)/24+q*pow(D,4)/24)/E/I+Ec*x; printf("截面的弯矩为:%f\n",Mz); printf("截面的挠度为:%f\n",v);}voidfun4(){ doubleMzs,l,a[10],x,vs,E,I,F[10],Mz[10],v[10];inti,nF; Mzs=0; vs=0; printf("请输入长度l\n"); scanf("%lf",&l); printf("请输入弹性模量E\n"); scanf("%lf",&E); printf("请输入极惯性矩I\n"); scanf("%lf",&I); printf("请输入集中载荷F的个nF:"); scanf("%d",&nF); printf("请输入集中载荷F的值和位置a:"); for(i=0;i<nF;i++) { scanf("%lf%lf",&F[i],&a[i]); } printf("请输入x\n"); scanf("%lf",&x);for(i=0;i<nF;i++){ if(x>0&&x<a[i]) { Mz[i]=F[i]*(l-a[i])*x/l; v[i]=-F[i]*(l-a[i])*x*(l*l-x*x-(l-a[i])*(l-a[i]))/(6*E*I*l); } elseif(x>a[i]&&x<l) { Mz[i]=F[i]*a[i]*(l-x)/l; v[i]=-F[i]*(l-a[i])*(l/(l-a[i])*pow(x-a[i],3)+(l*l-(l-a[i])*(l-a[i]))*x-x*x*x)/(6*E*I*l); } Mzs=Mzs+Mz[i]; vs=vs+v[i];}printf("截面的弯矩为%f",Mzs);printf("截面的挠度为%f",vs);}voidfun5(){doubleMz[10],l,b[10],x,v[10],E,I,M[10],Mzs,vs;inti,nM; Mzs=0; vs=0; printf("请输入长度l\n");scanf("%lf",&l);printf("请输入弹性模量E\n");scanf("%lf",&E);printf("请输入极惯性矩I\n");scanf("%lf",&I); printf("请输入外力偶M的个数nM"); scanf("%d",&nM); printf("请输入外力偶值和位置b:"); for(i=0;i<nM;i++) { scanf("%lf%lf",&M[i],&b[i]); }printf("请输入x\n");scanf("%lf",&x);for(i=0;i<nM;i++) {if(x>0&&x<b[i]){Mz[i]=M[i]*x/l;v[i]=M[i]*x*(l*l-3*(l-b[i])*(l-b[i])-x*x)/(6*E*I*l);}elseif(x>b[i]&&x<l){Mz[i]=M[i]*(l-x)/l;v[i]=M[i]*(-x*x*x+3*l*(x-b[i])*(x-b[i])+(l*l-3*(l-b[i])*(l-b[i]))*x);} Mzs=Mzs+Mz[i]; vs=vs+v[i]; }printf("截面的弯矩为%f",Mzs);printf("截面的挠度为%f",vs);}voidfun7(){doubleF[10],M[10],q[10];//定义各个载荷大小的数组doubleMz[10],v[10],l,E,I,Mzs,vs,Mzmax,vmax,Mzmin,vmin;//定义杆的基本参数doublea[10],b[10],c[10],d[10];//定义各个载荷的横坐标doubleA[10],B[10],C[10],D[10];//定义奇异函数中间变量doubleEc[10],Fc[10];//定义积分常数doublex;//定义任一截面横坐标doubleFR1[10],FR2[10];//定义支反力FR1,FR2inti,Q;//定义循环变量intnM,nF,nq,nn;//定义载荷个数ps();//初始数据输入 Mzs=0; vs=0; printf("请输入长度l\n"); scanf("%lf",&l); printf("请输入弹性模量E\n"); scanf("%lf",&E); printf("请输入极惯性矩I\n"); scanf("%lf",&I); printf("请输入集中载荷F的个nF:"); scanf("%d",&nF); printf("请输入集中载荷F的值和位置a:"); for(i=0;i<nF;i++) { scanf("%lf%lf",&F[i],&a[i]); } printf("请输入外力偶M的个数nM"); scanf("%d",&nM); printf("请输入外力偶值和位置b:"); for(i=0;i<nM;i++) { scanf("%lf%lf",&M[i],&b[i]); } printf("请输入均布力的个数nq"); scanf("%d",&nq); printf("请输入分布力q的值和位置c,d:"); for(i=0;i<nq;i++) { scanf("%lf%lf%lf",&q[i],&c[i],&d[i]); } printf("请输入任一截面横坐标x\n"); scanf("%lf",&x); nn=nF;//找到最大载荷数 if(nM>nn) nn=nM; if(nq>nn) nn=nq; for(i=0;i<nn;i++) { A[i]=qiyi(x,a[i]); B[i]=qiyi(x,b[i]); C[i]=qiyi(x,c[i]); D[i]=qiyi(x,d[i]); FR2[i]=(M[i]-F[i]*a[i]-q[i]*(d[i]*d[i]-c[i]*c[i])/2)/l;//求支反力 FR1[i]=-(F[i]+q[i]*(d[i]-c[i]))-FR2[i]; Ec[i]=-((M[i]*pow((l-b[i]),2)/2+F[i]*pow((l-a[i]),3)/6+FR1[i]*pow(l,3)/6-q[i]*pow(l-c[i],4)/24+q[i]*pow(l-d[i],4)/24))/E/I/l;//求积分常数 if(x<=b[i]) Q=0; if(x>b[i]) Q=1; Mz[i]=(M[i]*Q+F[i]*A[i]+FR1[i]*x)-q[i]*pow(C[i],2)/2+q[i]*pow(D[i],2)/2; v[i]=(M[i]*pow(B[i],2)/2+F[i]*pow(A[i],3)/6+FR1[i]*pow(x,3)/6)/(E*I)-(q[i]*pow(C[i],4)/24-q[i]*pow(D[i],4)/24)/(E*I)+Ec[i]*x; Mzs=Mzs+Mz[i]; vs=vs+v[i]; }printf("截面的弯矩为%f",Mzs);printf("截面的挠度为%f",vs);}voidfun8(){staticdoubleF[10],M[10],q[10];//定义各个载荷大小的数组staticdoubleMz[10],v[10],l,E,I,Mzs[100],vs[100],Mzmax,vmax,Mzmin,vmin;//定义杆的基本参数staticdoublea[10],b[10],c[10],d[10];//定义各个载荷的横坐标staticdoubleA[10],B[10],C[10],D[10];//定义奇异函数中间变量staticdoubleEc[10],Fc[10];//定义积分常数staticdoublex;//定义任一截面横坐标staticdoubleFR1[10],FR2[10];//定义支反力FR1,FR2staticinti,Q;//定义循环变量staticintj;staticintnM,nF,nq,nn;//定义载荷个printf("请输入长度l\n"); scanf("%lf",&l); printf("请输入弹性模量E\n"); scanf("%lf",&E); printf("请输入极惯性矩I\n"); scanf("%lf",&I); printf("请输入集中载荷F的个nF:"); scanf("%d",&nF); printf("请输入集中载荷F的值和位置a:"); for(i=0;i<nF;i++) { scanf("%lf%lf",&F[i],&a[i]);}printf("请输入外力偶M的个数nM"); scanf("%d",&nM); printf("请输入外力偶值和位置b:"); for(i=0;i<nM;i++) { scanf("%lf%lf",&M[i],&b[i]); }printf("请输入均布力的个数nq"); scanf("%d",&nq); printf("请输入分布力q的值和位置c,d:"); for(i=0;i<nq;i++) { scanf("%lf%lf%lf",&q[i],&c[i],&d[i]); }printf("请输入任一截面横坐标x\n"); scanf("%lf",&x);nn=nF;//找到最大载荷数 if(nM>nn) nn=nM; if(nq>nn) nn=nq;for(j=0;j<99;j++) { x=j*l/100; for(i=0;i<nn;i++) { A[i]=qiyi(x,a[i]); B[i]=qiyi(x,b[i]); C[i]=qiyi(x,c[i]); D[i]=qiyi(x,d[i]); FR2[i]=(M
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 汽车租赁合同
- 对照六检查个人自我剖析材料与反思总结三篇
- 房地产税收优惠政策解析培训课件:张强
- 2025年安徽省职教高考《语文》考前冲刺模拟试题库(附答案)
- 2025年江西中医药高等专科学校高职单招语文2018-2024历年参考题库频考点含答案解析
- 2025年江苏安全技术职业学院高职单招职业技能测试近5年常考版参考题库含答案解析
- 2025年武汉城市职业学院高职单招高职单招英语2016-2024历年频考点试题含答案解析
- 2025年新疆建设职业技术学院高职单招职业技能测试近5年常考版参考题库含答案解析
- 专题08 走进法治天地 带解析
- 工程维修劳务分包合同
- 江西省部分学校2024-2025学年高三上学期1月期末英语试题(含解析无听力音频有听力原文)
- GA/T 2145-2024法庭科学涉火案件物证检验实验室建设技术规范
- 2024年度窑炉施工协议详例细则版B版
- 尿毒症替代治疗
- 【课件】2025届高考英语一轮复习小作文讲解课件
- 基底节脑出血护理查房
- 工程公司总经理年终总结
- 2024年海南省高考地理试卷(含答案)
- 【企业盈利能力探析的国内外文献综述2400字】
- 三年级上册数学口算题1000道带答案
- 苏教版(2024新版)一年级上册科学全册教案教学设计
评论
0/150
提交评论