资源描述:
《“力系简化”与“单个刚体平衡”的小程序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、工程力学小论文顾华荣仪01000658“力系简化”与“单个刚体平衡问题”的小程序做了不少理论力学的题目,感觉解题方法比较有规律可循,但有时数据会比较难处理,重复执行同样的步骤,而这个学期学了C程序,于是想编一个小程序,解决一些理论力学问题。想法很好,但怎么完成呢?怎样把复杂的实际问题化简为计算机可以识别的数据模型呢?本来想解决“刚体系的平衡问题”(特例为桁架),尝试了一番,结果放弃了,因为要表达刚体之间的联系有些困难,数据处理也很复杂,找不到头绪。而在实际问题中,要求解的量不只有力的大小方向,还可能有力的作用点位置,
2、以及刚体尺寸的极限等。只得又“复习”了一遍课本,暂时解决了两个问题——“力系简化”与“单个刚体平衡问题”。但界面和通用性不好,功能也很不完善,希望大家提出批评指正,共同提高。具体说明都在程序中。#include#include#include#includestructPOINT//点及向量的结构体{doublex,y,z;};typedefstructPOINTPoint;//三维点typedefstructPOINTVector;//空间向量
3、structFORCE//空间力{Vectorf;//力矢量Pointp;//作用点};typedefstructFORCEForce;VectorSum(Vectorp1,Vectorp2)//求向量和{Vectorp;p.x=p1.x+p2.x;p.y=p1.y+p2.y;p.z=p1.z+p2.z;returnp;}VectorSub(Vectorp1,Vectorp2)//求向量差{Vectorp;p.x=p1.x-p2.x;p.y=p1.y-p2.y;p.z=p1.z-p2.z;returnp;}doubl
4、eDot(Vectorp1,Vectorp2)//求向量的点积{doublet;t=p1.x*p2.x+p1.y*p2.y+p1.z*p2.z;returnt;}VectorCross(Vectorp1,Vectorp2)//求向量的叉积工程力学小论文顾华荣仪01000658{Vectorp;p.x=p1.y*p2.z-p1.z*p2.y;p.y=p1.z*p2.x-p1.x*p2.z;p.z=p1.x*p2.y-p1.y*p2.x;returnp;}doubleLength(Vectorp)//求向量长{retur
5、nsqrt(p.x*p.x+p.y*p.y+p.z*p.z);}VectorNMul(Vectorp,doublen)//求向量与数量的积{p.x*=n;p.y*=n;p.z*=n;returnp;}voidWelcome()//欢迎界面,很烂{clrscr();printf("欢迎来到理论力学计算平台");printf("由顾华荣仪01000658制作");printf("CopyRight2001");printf("Email:ghr00@mails.tsinghua.edu.cn");prin
6、tf("按任意键继续...");getch();}voidlxjh()//力系简化{clrscr();//清屏unsignedfn,//已知力的个数mn,//已知力偶的个数i;floatt;//临时变量ForceF[100];//定义100个力VectorM[100];//定义100个力偶printf("请输入您要简化力系中力的个数(不要超过100):");scanf("%d",&fn);printf("请输入您要简化力系中的力偶的个数(不要超过100):");scanf("%d",&mn);printf
7、("请按以下格式输入力和力偶:");printf("力的大小和方向:FxFyFz,若为平面力系,第三个分量请输0");printf("力的作用点:PxPyPz,若为平面力系,第三个分量请输0");printf("力偶:MxMyMz");for(i=1;i<=fn;i++)//输入已知的力和力偶{printf("第%d个力:",i);工程力学小论文顾华荣仪01000658printf("Fx:");scanf("%f",&t);F[i].f.x=t;printf("Fy:");scanf("%f
8、",&t);F[i].f.y=t;printf("Fz:");scanf("%f",&t);F[i].f.z=t;printf("Px:");scanf("%f",&t);F[i].p.x=t;printf("Py:");scanf("%f",&t);F[i].p.y=t;printf("Pz:");scanf("%f",&t);F[i].p.