材料力学实验报告.docx

上传人:b****1 文档编号:2376657 上传时间:2022-10-29 格式:DOCX 页数:16 大小:54.59KB
下载 相关 举报
材料力学实验报告.docx_第1页
第1页 / 共16页
材料力学实验报告.docx_第2页
第2页 / 共16页
材料力学实验报告.docx_第3页
第3页 / 共16页
材料力学实验报告.docx_第4页
第4页 / 共16页
材料力学实验报告.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

材料力学实验报告.docx

《材料力学实验报告.docx》由会员分享,可在线阅读,更多相关《材料力学实验报告.docx(16页珍藏版)》请在冰豆网上搜索。

材料力学实验报告.docx

材料力学实验报告

 

材料力学上机作业

 

姓名:

林海奇

班级:

1236005

学号:

6121820510

哈尔滨工业大学

2013年12月

 

此程序可计算在n个力、n个力偶以及n段分布力作用下悬臂梁上任意一点的挠度、转角、弯矩和剪切力。

运行此程序时,需在程序中输入已知杆的EI和杆的长度。

然后输入集中力、均布力、力偶的个数、大小、位置;最后输入位置坐标x,即可计算在x点的挠度、转角、弯矩和剪切力。

(均采用国际单位制)

C语言程序代码:

#include

#include

#include

#defineN10

#defineN510000

intInputFix(doubledisforce[][4],doubleconforce[][2],doublemoment[][2],int*pN1,int*pN2,int*pN3,double*plength,double*pEI);//输入数据函数

intDengxiaodis(doubledisforce[][4],doublekb[][2],doubledengxiaoli[][2],int*pN2);//计算等效力函数

intCalculateFix(doubledisforce[][4],doubleconforce[][2],doublemoment[][2],doublekb[][2],doubledengxiaoli[][2],int*pN1,int*pN2,int*pN3,double*plength,double*pEI);//计算函数

intmain()

{

doubledisforce[N][4];//均布力起点大小终点大小,起点位置终点位置

doubleconforce[N][2];//集中力(位置,大小)

doublemoment[N][2];//力偶

doublekb[N][2];//depositeverykandbofthedistributeforce

doubledengxiaoli[N][2];//depositforceof位置和大小

intN1=0;//numberofconstrateforces

intN2=0;//numberofdistributeforces

intN3=0;//numberofmoments

doubleEI=0;

doublelength=0;//杆长

 

InputFix(disforce,conforce,moment,&N1,&N2,&N3,&length,&EI);

Dengxiaodis(disforce,kb,dengxiaoli,&N2);

CalculateFix(disforce,conforce,moment,kb,dengxiaoli,&N1,&N2,&N3,&length,&EI);

return0;

}

 

intInputFix(doubledisforce[][4],doubleconforce[][2],doublemoment[][2],int*pN1,int*pN2,int*pN3,double*plength,double*pEI)

{

 

inti,j;

doubleEI;

doublelength;

intN1,N2,N3;

printf("请输入EI:

");

scanf("%lf",&EI);

*pEI=EI;

printf("请输入杆的长度:

");

scanf("%lf",&length);

*plength=length;

printf("请输入集中力的个数:

");

scanf("%d",&N1);

*pN1=N1;

if(N1>0)

{

printf("请输入集中力的参数(位置,大小):

");

for(i=0;i

{

for(j=0;j<2;j++)

{

scanf("%lf",&conforce[i][j]);

}

}

}

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

");

scanf("%d",&N2);

*pN2=N2;

if(N2>0)

{

printf("请输入分布力的参数:

(起点大小,终点大小,起点位置,终点位置)");

for(i=0;i

{

for(j=0;j<4;j++)

{

scanf("%lf",&disforce[i][j]);

}

}

}

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

");

scanf("%d",&N3);

*pN3=N3;

if(N3>0)

{

printf("请输入力偶的参数:

(位置,大小)");

for(i=0;i

{

for(j=0;j<2;j++)

{

scanf("%lf",&moment[i][j]);

}

}

}

return0;

}

 

intDengxiaodis(doubledisforce[][4],doublekb[][2],doubledengxiaoli[][2],int*pN2)

{

intgeshu;

inti;

doublek;//力系斜率

doubleb;

doubleq1,q2,x1,x2;

geshu=*pN2;

for(i=0;i

{

q1=disforce[i][0];

q2=disforce[i][1];

x1=disforce[i][2];

x2=disforce[i][3];

dengxiaoli[i][1]=(q1+q2)*(x2-x1)/2;//大小

kb[i][0]=(q2-q1)/(x2-x1);

k=kb[i][0];

kb[i][1]=q1-k*x1;

b=kb[i][1];

dengxiaoli[i][0]=(2*k*(pow(x2,3)-pow(x1,3))+3*b*(pow(x2,2)-pow(x1,2)))/6/dengxiaoli[i][1];//位置

}

return0;

}

intCalculateFix(doubledisforce[][4],doubleconforce[][2],doublemoment[][2],doublekb[][2],doubledengxiaoli[][2],int*pN1,int*pN2,int*pN3,double*plength,double*pEI)

{

doublex;//用户输入需要求的点在坐标位置

doubleRA=0,MA=0;

doubleVx=0;

doubleMx=0;

doubleangle=0;

doublevx=0;//挠度

doublex1,x2;//均布力的起点和终点

doublexi;//xi的坐标

doublemx;//表示X的每一个小块

doublef;//均布力分成N份后,每一个力的大小

doublek,b;

inti,j;

intn1,n2,n3;

doublelength;

doubleEI;

intbiaozhi1=0;//判断x是否在军部力之间

printf("请输入求解的点在坐标:

");

scanf("%lf",&x);

printf("\n");

n1=*pN1;

n2=*pN2;

n3=*pN3;

length=*plength;

EI=*pEI;

for(i=0;i

{

RA=RA+conforce[i][1];

}

for(i=0;i

{

RA=RA+dengxiaoli[i][1];

}

RA=(-1)*RA;//////////////////////////

for(i=0;i

{

MA+=moment[i][1];

}

for(i=0;i

{

MA-=conforce[i][0]*conforce[i][1];

}

for(i=0;i

{

MA-=dengxiaoli[i][1]*dengxiaoli[i][0];

}

MA=(-1)*MA;////////////////////////

求Vx的部分

for(i=0;i

{

if((x>disforce[i][2])&&(x

{

biaozhi1=1;//在均布力之间.

break;

}

}

if(biaozhi1==0)//力既不在军部力默认力为右连续

{

Vx-=RA;

for(i=0;i

{

if(x>conforce[i][0])

{

Vx-=conforce[i][1];

}

else

break;

}

for(i=0;i

{

if(x>=disforce[i][3])

{

Vx-=dengxiaoli[i][1];

}

else

break;

}

printf("V(x)=%lf",Vx);

printf("\n");

}

else//力在军部力之间

{

Vx-=RA;

for(i=0;i

{

if(x>conforce[i][0])

{

Vx-=conforce[i][1];

}

else

break;

}

for(i=0;i

{

if(x>=disforce[i][3])

{

Vx-=dengxiaoli[i][1];

}

else

break;

}

Vx=Vx-(kb[i][0]*x+kb[i][1]+disforce[i][0])*(x-disforce[i][2])/2;

printf("V(x)=%lf",Vx);

printf("\n");

}

求Mx的部分

Mx-=MA;

Mx-=RA*x;

if(biaozhi1==0)//力不再均布力之间

{

for(i=0;i

{

if(x>conforce[i][0])

{

Mx-=conforce[i][1]*(x-conforce[i][0]);

}

else

break;

}

for(i=0;i

{

if(x>moment[i][0])

Mx-=moment[i][1];

else

break;

}

for(i=0;i

{

if(x>=disforce[i][3])

{

Mx-=dengxiaoli[i][1]*(x-dengxiaoli[i][0]);

}

else

bre

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

当前位置:首页 > 总结汇报 > 学习总结

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

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