材料力学上机作业精华版.docx

上传人:b****6 文档编号:4691101 上传时间:2022-12-07 格式:DOCX 页数:15 大小:118.10KB
下载 相关 举报
材料力学上机作业精华版.docx_第1页
第1页 / 共15页
材料力学上机作业精华版.docx_第2页
第2页 / 共15页
材料力学上机作业精华版.docx_第3页
第3页 / 共15页
材料力学上机作业精华版.docx_第4页
第4页 / 共15页
材料力学上机作业精华版.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

材料力学上机作业精华版.docx

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

材料力学上机作业精华版.docx

材料力学上机作业精华版

材料力学上机报告

 

 

 

材料力学上机课程作业:

C语言编写

使用的主要数学模型:

1,关于弯矩的计算,首先求出支反力,然后确定积分常数,通过积分算出某已确定点的弯矩。

2,通过叠加法计算某一确定点的挠度,详细公式请参阅《新编材料力学》(张少实)表7-3。

 

问题1:

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

编程:

#include

#include

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

{

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

{

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");

}

}

运算结果:

输入:

选取材料的L=1m,E=4.5GPa。

I=0.0001

,F=1000N,a=0.6m,x=0.4m;

理论值计算

Mz=160.00Nm

V=-0.000040m

问题2:

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

编程:

#include

#include

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

{

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

{

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");

}

}

运算结果:

输入:

选取材料的L=1m,E=4.5GPa。

I=0.0001

,M=1000Nm,a=0.6m,x=0.4m;

理论值计算

Mz=400.00Nm

V=0.000053m

问题3:

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

编程:

#include

#include

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);

}

运算结果:

输入:

选取材料的L=1m,E=4.5GPa。

I=0.0001

,q=1000N,c=0.6m,d=0.8m,x=0.4m;

理论值计算

Mz=-24.00Nm

V=0.000008m

问题4:

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

编程:

#include

#include

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,FR2

inti,Q;//定义循环变量

intnM,nF,nq,nn;//定义载荷个数

/*函数功能:

奇异函数*/

doubleqiyi(doublex,doubley)

{

if(x<=y)

return0;

if(x>y)

returnx-y;

}

/*函数功能:

初始数据输入*/

voidps()

{

printf("请输入长度L(m):

\n");

scanf("%lf",&l);

printf("请输入弹性模量E(Pa):

\n");

scanf("%lf",&E);

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

\n");

scanf("%lf",&I);

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

\n");

scanf("%d",&nF);

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

\n");

for(i=0;i

{

printf("集中力%d:

",i+1);

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

}

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

\n");

scanf("%d",&nM);

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

\n");

for(i=0;i

{

printf("外力偶%d:

",i+1);

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

}

printf("请输入均布力的个数n(个):

\n");

scanf("%d",&nq);

printf("请输入分布力值q(N/m)和起始位置x1(m)和终止位置x2(m):

\n");

for(i=0;i

{

printf("分布力%d:

",i+1);

scanf("%lf%lf%lf",&q[i],&c[i],&d[i]);

}

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

\n");

scanf("%lf",&x);

nn=nF;//找到最大载荷数

if(nM>nn)

nn=nM;

if(nq>nn)

nn=nq;

}

main()

{

ps();//初始数据输入

for(i=0;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\n",Mzs);

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

}

 

运算结果:

输入:

选取材料的L=1m,E=4.5GPa。

I=0.0001

,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;

理论值计算

Mz=-1624.00Nm

V=0.000395m

问题5:

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

编程:

#include

#include

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,FR2

inti,Q;//定义循环变量

intj;

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

{

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

}

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

scanf("%d",&nM);

printf("请输入外力偶值和位置b:

");

for(i=0;i

{

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

}

printf("请输入均布力的个数nq");

scanf("%d",&nq);

printf("请输入分布力q的值和位置c,d:

");

for(i=0;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

{

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[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=Mzs[j];

if(vs[j]

vmin=vs[j];

}

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

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

printf("最小弯矩为Mzmin=%f\n",Mzmin);

printf("最小挠度为vmin=%f\n",vmin);

}

运算结果:

输入:

L=1m,E=4.5GPa。

I=0.0001

,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=-2466.00Nm,Vmax=0.000427m

 

作业总结

此次材料力学上机颇有心得。

此次试验不仅要求有一定的编程能力,更要求对材料力学的基本方法较为了解。

在这个过程中,我和同组的张宁波同学通力合作,努力完成。

对于大一C语言学的不是很专业的我们来说,需要捡起以前的知识,需要学习以前不曾学习的东西。

由于课业较忙,我们没有完成C语言图形编程的模块,只是以简单的“输入输出”方式进行模拟。

这个过程增强了我们的编程能力,也增强了我们的学习能力。

更为重要的是,我们发现了传统材料力学与计算机科学相结合所形成的巨大力量,对于建立模型,分析模型的方法也有所领悟。

本次变成我们二人采取了循序渐进的方式,所编的程序由易到难,一点一点的实验,力求使步伐更为稳健。

 

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

当前位置:首页 > 高中教育 > 理化生

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

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