材料力学实验报告.docx
- 文档编号:2376657
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:16
- 大小:54.59KB
材料力学实验报告.docx
《材料力学实验报告.docx》由会员分享,可在线阅读,更多相关《材料力学实验报告.docx(16页珍藏版)》请在冰豆网上搜索。
材料力学实验报告
材料力学上机作业
姓名:
林海奇
班级:
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 材料力学 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)