机械原理大作业.docx

上传人:b****6 文档编号:12773985 上传时间:2023-06-08 格式:DOCX 页数:15 大小:162.63KB
下载 相关 举报
机械原理大作业.docx_第1页
第1页 / 共15页
机械原理大作业.docx_第2页
第2页 / 共15页
机械原理大作业.docx_第3页
第3页 / 共15页
机械原理大作业.docx_第4页
第4页 / 共15页
机械原理大作业.docx_第5页
第5页 / 共15页
机械原理大作业.docx_第6页
第6页 / 共15页
机械原理大作业.docx_第7页
第7页 / 共15页
机械原理大作业.docx_第8页
第8页 / 共15页
机械原理大作业.docx_第9页
第9页 / 共15页
机械原理大作业.docx_第10页
第10页 / 共15页
机械原理大作业.docx_第11页
第11页 / 共15页
机械原理大作业.docx_第12页
第12页 / 共15页
机械原理大作业.docx_第13页
第13页 / 共15页
机械原理大作业.docx_第14页
第14页 / 共15页
机械原理大作业.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

机械原理大作业.docx

《机械原理大作业.docx》由会员分享,可在线阅读,更多相关《机械原理大作业.docx(15页珍藏版)》请在冰点文库上搜索。

机械原理大作业.docx

机械原理大作业

机械与电子工程学院

《机械原理》

大作业

(一)

平面连杆机构的运动分析

(题号:

牛头刨床9A)

 

班级:

学号:

姓名:

同组其他人员:

完成日期:

 

题目、原始数据及要求1

一平面连杆机构运动分析方程1

1.1位置方程

1.2速度计算公式2

1.3加速度计算公式2

二程序3

2.1计算程序框图3

2.2计算源程序4

三3.1(一组数据Lab=200mm)计算结果9

3.2运动线图10

3.3体会12

四4.1(第二组数据Lab=150mm)计算结果12

4.2运动线图13

4.3体会15

五5.1(第三组数据Lab=220mm)计算结果16

5.2运动线图17

5.3体会21

六参考资料21

 

题目及原始数据

如图所示,为一牛头刨床(Ⅲ级机构)。

假设已知各构件的尺寸如下表所示,原东件1以等角速度

沿着逆时针方向回转,试求各从动件的角位移、角速度和角加速度以及刨头C点位移、速度和加速度的变化。

题号

h

9A

200

960

160

900

500

120

 

平面连杆机构运动分析方程

先建立一直角坐标系,标出各杆矢量及其方位角。

设各杆的夹角为

,其中GE段记为

BD段记为

建立投影方程:

1.1

机构运动位置分析方程

 

1.2

机构运动速度分析方程(以矩阵形式写出)

 

1.3机构运动加速度分析方程(以矩阵形式写出

 

采用高斯消去法可得角加速度

 

计算流程图

 

 

计算源程序

#include

#include

#include

#definePI3.1415926

#defineN4

#defineE0.0001

#defineT1000

voidSolutionangle(double[12],double);/*迭代法求角位移*/

voidSolutionspeed(double[N][N],double[N],double[12],double);

/*角速度求解*/

voidSolutionacceleration(double[N][N],double[N][N],double[N],

double[12]);/*角加速度求解*/

voidGaussianE(double[N][N],double[N],double[N]);/*高斯消去*/

voidFoundmatrixA(double[12],double[N][N]);//创建系数矩阵A

voidFoundmatrixB(double[12],double,double[N]);//创建系数矩阵B

voidFoundmatrixDA(double[12],double[N][N]);//创建矩阵DA

voidFoundmatrixDB(double[12],double,double[N]);//创建矩阵DB

 

//定义全局变量

doublel1=200,l3=960,l4=160,h=900,h1=500,h2=120,as1=1.0;

 

//主函数

voidmain()

{

inti,j;

FILE*fp;

doubleshuju[36][12];

doublepsvalue[12],a[N][N],da[N][N],b[N],db[N],ang1;

//建立文件,并制表头

if((fp=fopen("shuju","w"))==NULL)

{

printf("Cann'topenthisfile.\n");

exit(0);

}

fprintf(fp,"\nL1=%lf",l1);

fprintf(fp,"\ns3ang3ang4s5");

fprintf(fp,"s3'as3as4s5'");

fprintf(fp,"s3''aas3aas4s5''\n");

//计算数据并写入文件

psvalue[0]=480;psvalue[1]=65*PI/180;psvalue[2]=10*PI/180;

psvalue[3]=500;

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

{

ang1=i*PI/18;

Solutionangle(psvalue,ang1);

FoundmatrixB(psvalue,ang1,b);

FoundmatrixA(psvalue,a);

Solutionspeed(a,b,psvalue,ang1);

FoundmatrixDA(psvalue,da);

FoundmatrixDB(psvalue,ang1,db);

Solutionacceleration(a,da,db,psvalue);

for(j=1;j<3;j++)

psvalue[j]=psvalue[j]*180/PI;

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

{shuju[i][j]=psvalue[j];}

fprintf(fp,"\n");

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

fprintf(fp,"%12.3f",shuju[i][j]);

for(j=1;j<3;j++)

psvalue[j]=psvalue[j]*PI/180;

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

psvalue[j]+=psvalue[j+4];

}

fclose(fp);

//输出数据

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

{

ang1=i*PI/18;

printf("\n输出ang1=%d时的求解\n",i*10);

printf("angleangspeedangacceleration:

\n");

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

printf("%lf\t",shuju[i][j]);

printf("\n");

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

printf("%lf\t",shuju[i][j]);

printf("\n");

for(j=8;j<12;j++)

printf("%lf\t",shuju[i][j]);

printf("\n");

}

}

/*矢量法求角位移*/

voidSolutionangle(doublevalue[12],doubleang1)

{

doubleae,s3,ang3,ang4,s5,t=0;

s3=value[0];ang3=value[1];ang4=value[2];s5=value[3];

doublexb,yb,xd,yd,xc,yc;

while(t

{

xb=h2+l1*cos(ang1);yb=h1+l1*sin(ang1);

xd=l4*cos(ang4);yd=l4*sin(ang4);

s3=sqrt((xd-xb)*(xd-xb)+(yd-yb)*(yd-yb));

xc=xd+l3*(xb-xd)/s3;

yc=yd+l3*(yb-yd)/s3;

ang3=atan2(yc-yd,xc-xd);

s5=xc;

ae=sqrt(h1*h1+h2*h2);

if(fabs(yc-h)

return;

else

ang4=atan((yd-yc+h)/(l4*cos(ang4)));

value[0]=s3;value[1]=ang3;value[2]=ang4;value[3]=s5;

while(value[1]>2*PI)

value[1]-=2*PI;

while(value[1]<0)

value[1]+=2*PI;

while(value[2]>PI)

value[2]-=2*PI;

while(value[2]<-PI)

value[2]+=2*PI;

t+=1;

if(t>=T)

{

printf("%f迭代失败.\n",ang1*180/PI);exit(0);}

}

}

/*角速度求解*/

voidSolutionspeed(doublea2[N][N],doubleb2[N],doublevalue[12],

doubleang1)

{

doublep2[N];

GaussianE(a2,b2,p2);

value[4]=p2[0];

value[5]=p2[1];

value[6]=p2[2];

value[7]=p2[3];

}

/*角加速度求解*/

voidSolutionacceleration(doublea3[N][N],doubleda3[N][N],

doubledb3[N],doublevalue[12])

{

inti,j;

doublebk[N]={0};

doublep3[N];

for(i=0;i

{

for(j=0;j

{

bk[i]+=-da3[i][j]*value[4+j];

}

bk[i]+=db3[i]*as1;

}

GaussianE(a3,bk,p3);

value[8]=p3[0];

value[9]=p3[1];

value[10]=p3[2];

value[11]=p3[3];

}

/*高斯消去法解矩阵方程*/

voidGaussianE(doublea4[N][N],doubleb4[N],doublep4[N])

{

inti,j,k;

doublea4g[N][N],b4g[N],t;

for(i=0;i

for(j=0;j

a4g[i][j]=a4[i][j];

for(i=0;i

b4g[i]=b4[i];

//施主对角线上的值尽可能大

if(a4g[0][0]a4g[1][1])

{

for(j=0;j

{t=a4g[0][j];a4g[0][j]=a4g[1][j];a4g[1][j]=t;}

t=b4g[0];b4g[0]=b4g[1];b4g[1]=t;

}

if(a4g[2][2]a4g[3][3])

{

for(j=0;j

{t=a4g[2][j];a4g[2][j]=a4g[3][j];a4g[3][j]=t;}

t=b4g[2];b4g[2]=b4g[1];b4g[3]=t;

}

//初等行变换

for(j=0;j

for(i=0;i

{

if(i!

=j)

{

for(k=0;k

if(k!

=j)

{a4g[i][k]-=a4g[i][j]/a4g[j][j]*a4g[j][k];}

b4g[i]-=b4g[j]*a4g[i][j]/a4g[j][j];

a4g[i][j]=0;

}

}

for(i=0;i

b4g[i]/=a4g[i][i];

p4[0]=b4g[0];

p4[1]=b4g[1];

p4[2]=b4g[2];

p4[3]=b4g[3];

}

//创建系数矩阵A

voidFoundmatrixA(doublevalue5[12],doublea5[N][N])

{

doubles3,ang3,ang4,s5;

s3=value5[0];ang3=value5[1];ang4=value5[2];s5=value5[3];

a5[0][0]=cos(ang3);a5[0][1]=-s3*sin(ang3);a5[0][2]=-l4*sin(ang4);

a5[1][0]=sin(ang3);a5[1][1]=s3*cos(ang3);a5[1][2]=l4*cos(ang4);

a5[2][1]=-l3*sin(ang3);a5[2][2]=-l4*sin(ang4);a5[2][3]=-1;

a5[3][1]=l3*cos(ang3);a5[3][2]=l4*cos(ang4);

a5[0][3]=a5[1][3]=a5[2][0]=a5[3][0]=a5[3][3]=0;

}

//创建系数矩阵B

voidFoundmatrixB(doublevalue6[12],doubleang1,doubleb6[N])

{

b6[0]=-l1*sin(ang1)*as1;

b6[1]=l1*cos(ang1)*as1;

b6[2]=b6[3]=0;

}

//创建矩阵DA

voidFoundmatrixDA(doublevalue7[12],doubleda7[N][N])

{

doubles3,ang3,ang4,s5,s3g,as3,as4,s5g;

s3=value7[0];ang3=value7[1];ang4=value7[2];s5=value7[3];

s3g=value7[4];as3=value7[5];as4=value7[6];s5g=value7[7];

da7[0][0]=-as3*sin(ang3);

da7[0][1]=-s3g*sin(ang3)-s3*cos(ang3)*as3;

da7[0][2]=-l4*cos(ang4)*as4;

da7[1][0]=as3*cos(ang3);

da7[1][1]=s3g*cos(ang3)-s3*sin(ang3)*as3;

da7[1][2]=-l4*sin(ang4)*as4;

da7[2][1]=-l3*cos(ang3)*as3;da7[2][2]=-l4*cos(ang4)*as4;

da7[3][1]=-l3*sin(ang3)*as3;da7[3][2]=-l4*sin(ang4)*as4;

da7[0][3]=da7[1][3]=da7[2][0]=da7[2][3]=da7[3][0]=da7[3][3]=0;

}

//创建矩阵DB

voidFoundmatrixDB(doublevalue8[12],doubleang1,doubledb8[N])

{

db8[0]=-l1*as1*cos(ang1);

db8[1]=-l1*as1*sin(ang1);

db8[2]=db8[3]=0;

}

 

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

当前位置:首页 > 农林牧渔 > 水产渔业

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2