材料力学编程.docx
《材料力学编程.docx》由会员分享,可在线阅读,更多相关《材料力学编程.docx(31页珍藏版)》请在冰点文库上搜索。
材料力学编程
材料力学上机作业第一题
一个力作用下的任意截面的弯矩,挠度
源程序为:
#include
#include
main()
{
doubleFi,ai,bi,l,E,I,x,M,v;
printf("请输入:
Fi,ai,bi,E,I,x:
\n");
scanf("%lf,%lf,%lf,%lf,%lf,%lf",&Fi,&ai,&bi,&E,&I,&x);
l=ai+bi;
if((x>=0)&&(x<=ai))
{
M=Fi*bi*x/l;
v=-Fi*bi*x*(l*l-x*x-bi*bi)/(6*E*I*l);
printf("M=%lf,v=%lf\n",M,v);
}
if((x>ai)&&(x<=l))
{
M=Fi*ai*(l-x)/l;
v=-Fi*bi*(l*(x-ai)*(x-ai)*(x-ai)/bi+(l*l-bi*bi)*x-x*x*x)/(6*E*I*l);
printf("计算结果为:
M=%lf,v=%lf\n",M,v);
}
if((x<0)||(x>l))
{
printf("有错误!
\n");
}
}
Fi=300N,ai=60m,bi=200m,E=200000000000Pa,I=0.0001m4,x=80m,程序运行结果为:
v
材料力学上机作业第二题
1一个力偶作用下的任意截面的弯矩,挠度
#include
#include
main()
{
doubleMk,ak,bk,l,E,I,x,M,v;
printf("请输入Mk,ak,bk,E,I,x:
\n");
scanf("%lf,%lf,%lf,%lf,%lf,%lf",&Mk,&ak,&bk,&E,&I,&x);
l=ak+bk;
if((x>=0)&&(x<=ak))
{
M=-Mk*x/l;
v=Mk*x*(l*l-3*bk*bk-x*x)/(6*E*I*l);
printf("M=%lf,v=%lf\n",M,v);
}
if((x>ak)&&(x<=l))
{
M=Mk*(1-x/l);
v=-Mk*(-x*x*x+3*l*(x-ak)*(x-ak)+(l*l-3*bk*bk)*x)/(6*E*I*l);
printf("M=%lf,v=%lf\n",M,v);
}
if((x<0)||(x>l))
{
printf("错误!
\n");
}
}
令Mk=200N·m,ak=100m,bk=100m,E=200000000000Pa,I=0.0001m4,x=100m,程序运行结果为:
2一段分布力作用下的任意截面的弯矩,挠度
源程序为:
#include
#include
main()
{
doubleq,ai,bi,ci,l,E,I,x,M,v;
doubleFa,Fb,c1,c2,c3,d3;
printf("请输入:
q,ai,bi,ci,E,I,x:
\n");
scanf("%lf,%lf,%lf,%lf,%lf,%lf,%lf",&q,&ai,&bi,&ci,&E,&I,&x);
l=ai+bi+ci;
Fa=(q*ci*(ci+2*bi))/(2*l);
Fb=(q*ci*(ci+2*ai))/(2*l);
c3=(Fa*pow((ai+ci),3))/(3*l)-(q*ai*pow(ci,3))/(6*l)-(q*pow(ci,4))/(8*l)+(Fb*pow(bi,2))/2-(Fb*pow(bi,3))/(3*l);
c2=c3-(Fb*pow(bi,2))/2-(Fa*pow((ai+ci),2))/2+(q*pow(ci,3))/6;
c1=c2;
d3=-c3*l;
if((x>=0)&&(x<=ai))
{
M=Fa*x;
v=((Fa*pow(x,3))/6+c1*x)/(E*I);
printf("M=%lf,v=%lf\n",M,v);
}
if((x>ai)&&(x<=ai+ci))
{
M=((q*ci*x*(ci+2*bi))/(2*l))-((q*pow((x-ai),2))/2);
v=((Fa*pow(x,3))/6-(q*pow((x-ai),4))/24+c2*x)/(E*I);
printf("M=%lf,v=%lf\n",M,v);
}
if((x>ai+ci)&&(x<=l))
{
M=Fb*(l-x);
v=((Fb*pow((l-x),3))/6+c3*x+d3)/(E*I);
printf("M=%lf,v=%lf\n",M,v);
}
if((x<0)||(x>l))
{
printf("有错误!
\n");
}
}
q=200N/m,ai=100m,bi=200,ci=100m,E=200000000000Pa,I=0.0001m4,x=70m,程序运行结果为:
材料力学上机作业第三题
n个力共同作用下的任意截面的弯矩,挠度
源程序为:
#include
#include
#defineEI4.9e5
#defineN1000
doubleFunctionV(inti,intn,doublel,doublex,doublea[],doubleb[],doubleF[]);
doubleFunctionM(inti,intn,doublel,doublex,doublea[],doubleb[],doubleF[]);
main()
{
doublel,x;
inti,n;
doublev[N],M[N],a[N],b[N],F[N];
doublesumv=0,sumM=0;
printf("请输入n:
");
scanf("%d",&n);
printf("请输入l/m:
");
scanf("%lf",&l);
printf("请输入x/m:
");
scanf("%lf",&x);
for(i=0;i{
printf("请输入a[%d]/m:
",i);
scanf("%lf",&a[i]);
b[i]=l-a[i];
printf("请输入F[%d]/N:
",i);
scanf("%lf",&F[i]);
v[i]=FunctionV(i,n,l,x,a,b,F);
M[i]=FunctionM(i,n,l,x,a,b,F);
sumv=sumv+v[i];
sumM=sumM+M[i];
}
printf("v(%.2lf)=%.2lfmm\n",x,sumv*1000);
printf("M(%.2lf)=%.2lfkN.m\n",x,sumM/1000);
}
doubleFunctionV(inti,intn,doublel,doublex,doublea[],doubleb[],doubleF[])
{
doublev;
if((x>=0)&&(x<=a[i]))
{
v=(-F[i]*b[i]*x*(pow(l,2)-pow(x,2)-pow(b[i],2)))/(6*EI*l);
}
else
{
v=(-F[i]*b[i]*((l*pow((x-a[i]),3)/b[i])-(pow(l,2)-pow(b[i],2))*x-pow(x,3)))/(6*EI*l);
}
returnv;
}
doubleFunctionM(inti,intn,doublel,doublex,doublea[],doubleb[],doubleF[])
{
doubleM;
if((x>=0)&&(x<=a[i]))
{
M=(F[i]*b[i]*x)/l;
}
else
{
M=(F[i]*a[i]*(l-x))/l;
}
returnM;
}
令n=2,l=200m,x=100m,a0=50m,F0=1000N,a1=100m,F1=1000N,程序运行结果为:
材料力学上机作业第四题
1、h个力偶共同作用下的任意截面的弯矩,挠度
源程序为:
#include
#include
#defineEI4.9e5
#defineN1000
doubleFunctionV(inti,intn,doublel,doublex,doublea[],doubleb[],doubleme[]);
doubleFunctionM(inti,intn,doublel,doublex,doublea[],doubleb[],doubleme[]);
main()
{
doublel,x;
inti,h;
doublev[N],M[N],a[N],b[N],me[N];
doublesumv=0,sumM=0;
printf("请输入h:
");
scanf("%d",&h);
printf("请输入l/m:
");
scanf("%lf",&l);
printf("请输入x/m:
");
scanf("%lf",&x);
for(i=0;i{
printf("Pleaseinputa[%d]/m:
",i);
scanf("%lf",&a[i]);
b[i]=l-a[i];
printf("Pleaseinputme[%d]/N.m:
",i);
scanf("%lf",&me[i]);
v[i]=FunctionV(i,h,l,x,a,b,me);
M[i]=FunctionM(i,h,l,x,a,b,me);
sumv=sumv+v[i];
sumM=sumM+M[i];
}
printf("v(%.2lf)=%.2lfmm\n",x,sumv*1000);
printf("M(%.2lf)=%.2lfkN.m\n",x,sumM/1000);
}
doubleFunctionV(inti,inth,doublel,doublex,doublea[],doubleb[],doubleme[])
{
doublev;
if((x>=0)&&(x<=a[i]))
{
v=(me[i]*x*(pow(l,2)-3*pow(b[i],2)-pow(x,2)))/(6*EI*l);
}
else
{
v=(me[i]*(-pow(x,3)+3*l*pow((x-a[i]),2)+(pow(l,2)-3*pow(b[i],2))*x))/(6*EI*l);
}
returnv;
}
doubleFunctionM(inti,inth,doublel,doublex,doublea[],doubleb[],doubleme[])
{
doubleM;
if((x>=0)&&(x<=a[i]))
{
M=(-me[i]*x)/l;
}
else
{
M=(me[i]*(l-x))/l;
}
returnM;
}
令h=2,l=200m,x=100m,a0=50m,me0=150N·m,a1=80m,me1=400N·m,程序运行结果为:
2、m段分布力共同作用下的任意截面的弯矩,挠度
源程序为:
#include
#include
#defineEI4.9e5
#defineN1000
doubleFunctionV(inti,intm,doublel,doublex,doublea[],doubleb[],doublec[],doubleq[],doubleFa[],doubleFb[],doublec1[],doublec2[],doublec3[],doubled3[]);
doubleFunctionM(inti,intm,doublel,doublex,doublea[],doubleb[],doublec[],doubleq[],doubleFa[],doubleFb[],doublec1[],doublec2[],doublec3[],doubled3[]);
main()
{
doublel,x;
inti,m;
doublev[N],M[N],a[N],b[N],c[N],q[N];
doubleFa[N],Fb[N],c1[N],c2[N],c3[N],d3[N];
doublesumv=0,sumM=0;
printf("Pleaseinputm:
");
scanf("%d",&m);
printf("Pleaseinputl/m:
");
scanf("%lf",&l);
printf("Pleaseinputx/m:
");
scanf("%lf",&x);
for(i=0;i{
printf("Pleaseinputa[%d]/m:
",i);
scanf("%lf",&a[i]);
printf("Pleaseinputc[%d]/m:
",i);
scanf("%lf",&c[i]);
b[i]=l-a[i]-c[i];
printf("Pleaseinputq[%d]/N/m:
",i);
scanf("%lf",&q[i]);
Fa[i]=(q[i]*c[i]*(c[i]+2*b[i]))/(2*l);
Fb[i]=(q[i]*c[i]*(c[i]+2*a[i]))/(2*l);
c3[i]=(Fa[i]*pow((a[i]+c[i]),3))/(3*l)-(q[i]*a[i]*pow(c[i],3))/(6*l)-(q[i]*pow(c[i],4))/(8*l)+(Fb[i]*pow(b[i],2))/2-(Fb[i]*pow(b[i],3))/(3*l);
c2[i]=c3[i]-(Fb[i]*pow(b[i],2))/2-(Fa[i]*pow((a[i]+c[i]),2))/2+(q[i]*pow(c[i],3))/6;
c1[i]=c2[i];
d3[i]=-c3[i]*l;
v[i]=FunctionV(i,m,l,x,a,b,c,q,Fa,Fb,c1,c2,c3,d3);
M[i]=FunctionM(i,m,l,x,a,b,c,q,Fa,Fb,c1,c2,c3,d3);
sumv=sumv+v[i];
sumM=sumM+M[i];
}
printf("v(%.2lf)=%.2lfmm\n",x,sumv*1000);
printf("M(%.2lf)=%.2lfkN.m\n",x,sumM/1000);
}
doubleFunctionV(inti,intm,doublel,doublex,doublea[],doubleb[],doublec[],doubleq[],doubleFa[],doubleFb[],doublec1[],doublec2[],doublec3[],doubled3[])
{
doublev;
if((x>=0)&&(x<=a[i]))
{
v=((Fa[i]*pow(x,3))/6+c1[i]*x)/EI;
}
if((x>a[i])&&(x<=(a[i]+c[i])))
{
v=((Fa[i]*pow(x,3))/6-(q[i]*pow((x-a[i]),4))/24+c2[i]*x)/EI;
}
if((x>(a[i]+c[i]))&&(x<=l))
{
v=((Fb[i]*pow((l-x),3))/6+c3[i]*x+d3[i])/EI;
}
returnv;
}
doubleFunctionM(inti,intm,doublel,doublex,doublea[],doubleb[],doublec[],doubleq[],doubleFa[],doubleFb[],doublec1[],doublec2[],doublec3[],doubled3[])
{
doubleM;
if((x>=0)&&(x<=a[i]))
{
M=Fa[i]*x;
}
if((x>a[i])&&(x<=(a[i]+c[i])))
{
M=((q[i]*c[i]*x*(c[i]+2*b[i]))/(2*l))-((q[i]*pow((x-a[i]),2))/2);
}
if((x>(a[i]+c[i]))&&(x<=l))
{
M=Fb[i]*(l-x);
}
returnM;
}
令m=2,l=200m,x=100m,a0=60m,c0=200m,q0=100N/m,a1=40m,c1=20m,q1=200N/m,程序运行结果为:
材料力学上机作业第五题
n个力,h个力偶,m段分布力共同作用下的任意截面的弯矩,挠度
源程序为:
#include
#include
#defineEI4.9e5
#defineN1000
doubleFunctionVi(inti,intn,doublel,doublex,doubleai[],doublebi[],doubleF[]);
doubleFunctionMi(inti,intn,doublel,doublex,doubleai[],doublebi[],doubleF[]);
doubleFunctionVh(inti,intn,doublel,doublex,doubleah[],doublebh[],doubleme[]);
doubleFunctionMh(inti,intn,doublel,doublex,doubleah[],doublebh[],doubleme[]);
doubleFunctionVm(inti,intm,doublel,doublex,doubleam[],doublebm[],doublecm[],doubleq[],doubleFa[],doubleFb[],doublec1[],doublec2[],doublec3[],doubled3[]);
doubleFunctionMm(inti,intm,doublel,doublex,doubleam[],doublebm[],doublecm[],doubleq[],doubleFa[],doubleFb[],doublec1[],doublec2[],doublec3[],doubled3[]);
main()
{
doublel,x;
inti,n,h,m;
doublevi[N],Mi[N],ai[N],bi[N],F[N];
doublevh[N],Mh[N],ah[N],bh[N],me[N];
doublevm[N],Mm[N],am[N],bm[N],cm[N],q[N],Fa[N],Fb[N],c1[N],c2[N],c3[N],d3[N];
doublesumvi=0,sumMi=0,sumvh=0,sumMh=0,sumvm=0,sumMm=0;
doublesumv=0,sumM=0;
printf("Pleaseinputn:
");
scanf("%d",&n);
printf("Pleaseinputh:
");
scanf("%d",&h);
printf("Pleaseinputm:
");
scanf("%d",&m);
printf("Pleaseinputl/m:
");
scanf("%lf",&l);
printf("Pleaseinputx/m:
");
scanf("%lf",&x);
for(i=0;i{
printf("Pleaseinputai[%d]/m:
",i);
scanf("%lf",&ai[i]);
bi[i]=l-ai[i];
printf("PleaseinputF[%d]/N:
",i);
scanf("%lf",&F[i]);
vi[i]=FunctionVi(i,n,l,x,ai,bi,F);
Mi[i]=FunctionMi(i,n,l,x,ai,bi,F);
sumvi=sumvi+vi[i];
sumMi=sumMi+Mi[i];
}
for(i=0;i{
printf("Pleaseinputah[%d]/m:
",i);
scanf("%lf",&ah[i]);
bh[i]=l-ah[i];
printf("Pleaseinputme[%d]/N.m:
",i);
scanf("%lf",&me[i]);
vh[i]=FunctionVh(i,h,l,x,ah,bh,me);
Mh[i]=FunctionMh(i,h,l,x,ah,bh,me);
sumvh=sumvh+vh[i];
sumMh=sumM+Mh[i];
}
for(i=0;i{
printf("Pleaseinputam[%d]/m:
",i);
scanf("%lf",&am[i]);
printf("Pleaseinputcm[%d]/m:
",i);
scanf("%lf",&cm[i]);
bm[i]=l-am[i]-cm[i];
printf("Pleaseinputq[%d]/N/m:
",i);
scanf("%lf",&q[i]);
Fa[i]=(q[i]*cm[i]*(cm[i]+2*bm[i]))/(2*l);
Fb[i]=(q[i]*cm[i]*(cm[i]+2*am[i]))/(2*l);
c3[i]=(Fa[i]*pow((am[i]+cm[i]),3))/(3*l)-(q[i]*am[i]*pow(cm[i],3))/(6*l)-(q[i]*pow(cm[i],4))/(8*l)+(Fb[i]*pow(bm[i],2))/2-(Fb[i]*po