哈工大材料力学上机作业.docx

上传人:b****6 文档编号:8835187 上传时间:2023-02-02 格式:DOCX 页数:31 大小:566.82KB
下载 相关 举报
哈工大材料力学上机作业.docx_第1页
第1页 / 共31页
哈工大材料力学上机作业.docx_第2页
第2页 / 共31页
哈工大材料力学上机作业.docx_第3页
第3页 / 共31页
哈工大材料力学上机作业.docx_第4页
第4页 / 共31页
哈工大材料力学上机作业.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

哈工大材料力学上机作业.docx

《哈工大材料力学上机作业.docx》由会员分享,可在线阅读,更多相关《哈工大材料力学上机作业.docx(31页珍藏版)》请在冰豆网上搜索。

哈工大材料力学上机作业.docx

哈工大材料力学上机作业

哈尔滨工业大学

材料力学计算机作业

 

姓名:

XX

班级:

XXXXXXX

学号:

XXXXXXXXXX

材料力学计算机作业

1.一个力作用下的任意截面的弯矩,挠度。

 

#include

#include

voidmain()

{

doubleM,l,a,x,v,E,I,F;

charch;

ST1:

printf("请输入长度l(单位:

m):

");

scanf("%lf",&l);

printf("请输入长度a(单位:

m):

");

scanf("%lf",&a);

printf("请输入弹性模量E(单位:

GPa):

");

scanf("%lf",&E);

printf("请输入极惯性矩I(单位:

m^4):

");

scanf("%lf",&I);

printf("请输入力F(单位:

KN):

");

scanf("%lf",&F);

ST2:

printf("请输入x(单位:

m):

");

scanf("%lf",&x);

if(x>=0&&x<=a)

{

M=F*(l-a)*x/l;

v=(-F*(l-a)*x*(l*l-x*x-pow(l-a,2))/(6*E*I*l))*1e-3;

printf("Mz=%fKN*m\n",M);

printf("v=%fmm\n",v);

}

elseif(x>a&&x<=l)

{

M=F*a*(l-x)/l;

v=(-F*(l-a)*(l/(l-a)*pow(x-a,3)+(l*l-pow(l-a,2))*x-x*x*x)/(6*E*I*l))*1e-3;

printf("Mz=%fKN*m\n",M);

printf("v=%fmm\n",v);

}

else

{

printf("溢出\n");

}

printf("是否计算其他截面(y/n):

");

scanf("%c",&ch);

if(ch=='y')gotoST2;

printf("是否重新输入参数(y/n):

");

scanf("%c",&ch);

if(ch=='y')gotoST1;

}

 

运行界面:

2.一个力偶作用下的任意截面的弯矩,挠度。

 

#include

#include

main()

{

doubleM,l,E,I,a,b,x,v,Mz;

charch;

ST1:

printf("请输入长度l(单位m):

");

scanf("%lf",&l);

printf("请输入长度a(单位m):

");

scanf("%lf",&a);

printf("请输入弹性模量E(单位GPa):

");

scanf("%lf",&E);

printf("请输入极惯性矩I(单位m^4):

");

scanf("%lf",&I);

printf("请输入弯矩M(单位Nm):

");

scanf("%lf",&M);

ST2:

printf("请输入x(单位m):

");

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))*1e-6;

printf("Mz=%fNm\n",Mz);

printf("v=%fmm\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))*1e-6;

printf("Mz=%fNm\n",Mz);

printf("v=%fmm\n",v);

}

else

{

printf("溢出\n");

}

printf("是否计算其他截面(y/n):

");

scanf("%c",&ch);

if(ch=='y')gotoST2;

printf("是否重新输入参数(y/n):

");

scanf("%c",&ch);

if(ch=='y')gotoST1;

}

运行界面:

3.一段分布力作用下的任意截面的弯矩挠度。

 

#include

#include

doubleqy(doublex,doubley);

voidmain()

{

charch;

doubleq,l,a,c,d,x,E,I,v,Mz;

doubleC,D,Ea;

doubleFR1,FR2;

ST1:

printf("请输入长度l(单位m):

");

scanf("%lf",&l);

printf("请输入弹性模量E(单位GPa):

");

scanf("%lf",&E);

printf("请输入极惯性矩(单位m^4):

");

scanf("%lf",&I);

printf("请输入分布力q(单位N/m):

");

scanf("%lf",&q);

printf("请输入长度a(单位m):

");

scanf("%lf",&a);

printf("请输入长度c(单位m):

");

scanf("%lf",&c);

ST2:

printf("请输入位置x(单位m):

");

scanf("%lf",&x);

d=a+c;

C=qy(x,a);

D=qy(x,d);

FR2=(-q*(d*d-a*a)/2)/l;

FR1=-q*c-FR2;

Ea=-(FR1*pow(l,3)/6-q*pow(l-a,4)/24+q*pow(l-d,4)/24)/E/I/l;

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+Ea*x)*1e-6;

printf("截面的弯矩为%fNm\n",Mz);

printf("截面的挠度为%fmm\n",v);

printf("是否计算其他截面(y/n):

");

scanf("%c",&ch);

if(ch=='y')gotoST2;

printf("是否重新输入参数(y/n):

");

scanf("%c",&ch);

if(ch=='y')gotoST1;

}

doubleqy(doublex,doubley)

{

if(x<=y)

return0;

if(x>y)

returnx-y;

}

 

运行界面:

4.n个力共同作用下的任意截面的弯矩,挠度。

 

 

#include

#include

main()

{

doubleMzs,l,x,vs,E,I,F[10],a[10],Mz[10],v[10];

inti,nF;

charch;

ST1:

printf("请输入长度l(单位m):

");

scanf("%lf",&l);

printf("请输入弹性模量E(单位GPa):

");

scanf("%lf",&E);

printf("请输入极惯性矩I(单位m^4):

");

scanf("%lf",&I);

printf("请输入集中载荷F的数量n:

");

scanf("%d",&nF);

printf("请输入集中载荷F的值(单位KN)和位置a(单位m):

\n");

for(i=0;i

{

scanf("%lf,%lf",&F[i],&a[i]);

}

ST2:

printf("请输入位置x(单位m):

");

scanf("%lf",&x);

Mzs=0;

vs=0;

for(i=0;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-pow(1-a[i],2))/(6*E*I*l))*1e-3;

}

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-pow(1-a[i],2))*x-pow(x,3))/(6*E*I*l))*1e-3;

}

Mzs=Mzs+Mz[i];

vs=vs+v[i];

}

printf("截面的弯矩为%fNm\n",Mzs);

printf("截面的挠度为%fmm\n",vs);

printf("是否计算其他截面(y/n):

");

scanf("%c",&ch);

if(ch=='y')gotoST2;

printf("是否重新输入参数(y/n):

");

scanf("%c",&ch);

if(ch=='y')gotoST1;

}

 

运行界面:

5.n个力偶共同作用作用下的任意截面的弯矩,挠度。

#include

#include

main()

{

charch;

doubleMz[10],l,b[10],x,v[10],E,I,M[10],Mzs,vs;

inti,nM;

ST1:

printf("请输入长度l(单位m):

");

scanf("%lf",&l);

printf("请输入弹性模量E(单位GPa):

");

scanf("%lf",&E);

printf("请输入极惯性矩I(单位m^4):

");

scanf("%lf",&I);

printf("请输入外力偶M的个数n:

");

scanf("%d",&nM);

printf("请输入外力偶值(单位Nm)和位置b(单位m):

\n");

for(i=0;i

{

scanf("%lf,%lf",&M[i],&b[i]);

}

ST2:

printf("请输入位置x(单位m):

\n");

scanf("%lf",&x);

Mzs=0;

vs=0;

for(i=0;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))*1e-6;

}

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))*1e-6;

}

Mzs=Mzs+Mz[i];

vs=vs+v[i];

}

printf("截面的弯矩为%fNm\n",Mzs);

printf("截面的挠度为%fmm\n",vs);

printf("是否计算其他截面(y/n):

");

scanf("%c",&ch);

if(ch=='y')gotoST2;

printf("是否重新输入参数(y/n):

");

scanf("%c",&ch);

if(ch=='y')gotoST1;

}

运行界面:

 

6.m段分布力共同作用下的任意截面的弯矩,挠度。

运行界面:

#include

#include

doubleqy(doublex,doubley);

doubleq()

{

doubleMzs,vs;

inti;

Mzs=0;

vs=0;

for(i=0;i

{

d3[i]=a3[i]+c3[i];

C[i]=qy(x,a3[i]);

D[i]=qy(x,d3[i]);

FR2[i]=(-q[i]*(d3[i]*d3[i]-a3[i]*a3[i])/2)/l;

FR1[i]=-q[i]*(d3[i]-a[i])-FR2[i];

Ec[i]=-(FR1[i]*pow(l,3)/6-q[i]*pow(l-a3[i],4)/24+q[i]*pow(l-d3[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)*1e-6;

Mzs=Mzs+Mz[i];

vs=vs+v[i];

}

returnMzs,vs;

}

doubleqy(doublex,doubley)

{

if(x<=y)

return0;

if(x>y)

returnx-y;

}

 

7.n个力,h个力偶,m段分布力共同作用下的任意截面的弯矩,挠度。

C语言程序代码:

#include

#include

intnM,nF,nq,i;

doubleF[10],M[10],q[10];

doublel,E,I,Mzf,Mzm,Mzq,vf,vm,vq,x;

doublea1[10],a2[10],a3[10],c3[10],d3[10];

doubleqy(doublex,doubley);

voidinput();

voidFs();

voidMs();

voidqs();

main()

{

charch;

ST1:

input();

ST2:

printf("请输入任一截面横坐标x(单位m):

");

scanf("%lf",&x);

Fs();

Ms();

qs();

printf("截面的弯矩为%fNm\n",Mzf+Mzm+Mzq);

printf("截面的挠度为%fmm\n",vf+vm+vq);

printf("是否计算其他截面(y/n):

");

scanf("%c",&ch);

if(ch=='y')gotoST2;

printf("是否重新输入参数(y/n):

");

scanf("%c",&ch);

if(ch=='y')gotoST1;

}

doubleqy(doublex,doubley)

{

if(x<=y)

return0;

if(x>y)

returnx-y;

}

voidinput()

{

printf("请输入长度l(单位m):

");

scanf("%lf",&l);

printf("请输入弹性模量E(单位GPa):

");

scanf("%lf",&E);

printf("请输入极惯性矩I(单位m^4):

");

scanf("%lf",&I);

printf("请输入集中载荷F的个nF:

");

scanf("%d",&nF);

printf("请输入集中载荷F的值(单位KN)和位置a(单位m):

\n");

for(i=0;i

{

scanf("%lf,%lf",&F[i],&a1[i]);

}

printf("请输入外力偶M的个数nM:

");

scanf("%d",&nM);

printf("请输入外力偶值(单位Nm)和位置a(单位m):

\n");

for(i=0;i

{

scanf("%lf,%lf",&M[i],&a2[i]);

}

printf("请输入均匀分布力的个数nq:

");

scanf("%d",&nq);

printf("请输入分布力q的值(单位N/m)和位置a,c(单位m):

\n");

for(i=0;i

{

scanf("%lf,%lf,%lf",&q[i],&a3[i],&c3[i]);

}

}

voidFs()

{

inti;

doubleMz[10],v[10];

Mzf=0;

vf=0;

for(i=0;i

{

if(x>=0&&x<=a1[i])

{

Mz[i]=F[i]*(l-a1[i])*x/l;

v[i]=(-F[i]*(l-a1[i])*x*(l*l-x*x-pow(1-a1[i],2))/(6*E*I*l))*1e-3;

}

elseif(x>a1[i]&&x<=l)

{

Mz[i]=F[i]*a1[i]*(l-x)/l;

v[i]=(-F[i]*(l-a1[i])*(l/(l-a1[i])*pow(x-a1[i],3)+(l*l-pow(1-a1[i],2))*x-pow(x,3))/(6*E*I*l))*1e-3;

}

Mzf=Mzf+Mz[i];

vf=vf+v[i];

}

}

voidMs()

{

inti;

doubleMz[10],v[10];

Mzm=0;

vm=0;

for(i=0;i

{

if(x>=0&&x<=a2[i])

{

Mz[i]=M[i]*x/l;

v[i]=(M[i]*x*(l*l-3*(l-a2[i])*(l-a2[i])-x*x)/(6*E*I*l))*1e-6;

}

elseif(x>a2[i]&&x<=l)

{

Mz[i]=M[i]*(l-x)/l;

v[i]=(M[i]*(-x*x*x+3*l*(x-a2[i])*(x-a2[i])+(l*l-3*(l-a2[i])*(l-a2[i]))*x))*1e-6;

}

Mzm=Mzm+Mz[i];

vm=vm+v[i];

}

}

voidqs()

{

inti;

doubleMz[10],v[10],Ec[10],FR1[10],FR2[10],C[10],D[10];;

Mzq=0;

vq=0;

for(i=0;i

{

d3[i]=a3[i]+c3[i];

C[i]=qy(x,a3[i]);

D[i]=qy(x,d3[i]);

FR2[i]=(-q[i]*(d3[i]*d3[i]-a3[i]*a3[i])/2)/l;

FR1[i]=-q[i]*(d3[i]-a3[i])-FR2[i];

Ec[i]=-(FR1[i]*pow(l,3)/6-q[i]*pow(l-a3[i],4)/24+q[i]*pow(l-d3[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)*1e-6;

Mzq=Mzq+Mz[i];

vq=vq+v[i];

}

}

运行界面:

8.n个力,h个力偶,m段分布力共同作用下的最大弯矩,最大挠度。

C语言程序代码:

#include

#include

intnM,nF,nq,i;

doubleF[10],M[10],q[10],x[500],Mzs[500],vs[500];

doublel,E,I,Mzf,Mzm,Mzq,vf,vm,vq;

doublea1[10],a2[10],a3[10],c3[10],d3[10];

doubleqy(doublex,doubley);

voidinput();

voidFs();

voidMs();

voidqs();

main()

{

charch;

doubleMzmax,xmm,vmax,xvm;

ST:

input();

for(i=0;i<=500;i++)

{

x[i]=(double)(l/500*i);

Fs(x[i]);

Ms(x[i]);

qs(x[i]);

Mzs[i]=Mzf+Mzm+Mzq;

vs[i]=vf+vm+vq;

}

Mzmax=Mzs[0];

xmm=0;

vmax=vs[0];

xvm=0;

for(i=0;i<=500;i++)

{

if(Mzmax

{

Mzmax=Mzs[i];

xmm=i;

}

if(vmax

{

vmax=vs[i];

xvm=i;

}

}

xmm=(double)(xmm*l/500);

xvm=(double)(xvm*l/500);

printf("最大弯矩为Mzmax=%fNm\n",Mzmax);

printf("最大弯矩所在位置为%fm\n",xmm);

printf("最大挠度为vmax=%fmm\n",vmax);

printf("最大挠度所在位置为%fm\n",xmm);

printf("是否重新输入参数(y/n):

");

scanf("%c",&ch);

if(ch=='y')gotoST;

}

doubleqy(doublex,doubley)

{

if(x<=y)

return0;

if(x>y)

returnx-y;

}

voidinput()

{

printf("请输入长度l(单位m):

");

scanf("%lf",&l);

printf("请输入弹性模量E(单位GPa):

");

scanf("%lf",&E);

printf("请输入极惯性矩I(单位m^4):

");

scanf("%lf",&I);

printf("请输入集中载荷F的个nF:

");

scanf("%d",&nF);

printf("请输入集中载荷F的值(单位KN)和位置a(单位m):

\n");

for(i=0;i

{

scanf("%lf,%lf",&F[i],&a1[i]);

}

printf("请输入外力偶M的个数nM:

");

scanf("%d",&nM);

printf("请输入外力偶值(单位Nm)和位置a(单位m):

\n");

for(i=0;i

{

scanf("%lf,%lf",&M[i],&a2[i]);

}

printf("请输入均匀分

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1