平面六杆机构的运动分析Word下载.docx
- 文档编号:16561574
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:28
- 大小:238.92KB
平面六杆机构的运动分析Word下载.docx
《平面六杆机构的运动分析Word下载.docx》由会员分享,可在线阅读,更多相关《平面六杆机构的运动分析Word下载.docx(28页珍藏版)》请在冰豆网上搜索。
写做矩阵形式:
对上述矩阵求导可得:
E点横坐标及对应的速度和加速度:
E点纵坐标及对应的速度和加速度:
三.计算程序框图
四.源程序
1.#include"
stdlib.h"
#include"
math.h"
stdio.h"
intagaus(a,b,n)
intn;
doublea[],b[];
{int*js,l,k,i,j,is,p,q;
doubled,t;
js=malloc(n*sizeof(int));
l=1;
for(k=0;
k<
=n-2;
k++)
{d=0.0;
for(i=k;
i<
=n-1;
i++)
for(j=k;
j<
j++)
{t=fabs(a[i*n+j]);
if(t>
d){d=t;
js[k]=j;
is=i;
}
}
if(d+1.0==1.0)l=0;
else
{if(js[k]!
=k)
for(i=0;
{p=i*n+k;
q=i*n+js[k];
t=a[p];
a[p]=a[q];
a[q]=t;
if(is!
{for(j=k;
{p=k*n+j;
q=is*n+j;
t=b[k];
b[k]=b[is];
b[is]=t;
if(l==0)
{free(js);
printf("
fail\n"
);
return(0);
d=a[k*n+k];
for(j=k+1;
a[p]=a[p]/d;
b[k]=b[k]/d;
for(i=k+1;
{for(j=k+1;
{p=i*n+j;
a[p]=a[p]-a[i*n+k]*a[k*n+j];
b[i]=b[i]-a[i*n+k]*b[k];
d=a[(n-1)*n+n-1];
if(fabs(d)+1.0==1.0)
b[n-1]=b[n-1]/d;
for(i=n-2;
i>
=0;
i--)
{t=0.0;
for(j=i+1;
t=t+a[i*n+j]*b[j];
b[i]=b[i]-t;
js[n-1]=n-1;
for(k=n-1;
k>
k--)
if(js[k]!
{t=b[k];
b[k]=b[js[k]];
b[js[k]]=t;
free(js);
return
(1);
2.程序二求解各杆的角度和E点坐标(杆四的角度始终为零,程序中不再求解)
/*输出文件Output.txt*/
#include"
#include<
conio.h>
dnetn.c"
agaus.c"
math.h>
#definePI3.14159265358979
#defineANGLE(PI/180)
#defineALPHA(PI*60/180)
/*初始杆长:
*/
staticdoubledLen[7]={65.0,26.5,105.6,67.5,87.5,34.4,25.0};
/*G点的坐标*/
staticdoubledGxy[2]={153.5,41.7};
staticdoublex0=0*ANGLE;
main()
{
inti,k;
doubleeps,t,h,xe,ye;
intnTemp=0;
FILE*pf;
/*各角位移的初始估计值*/
staticdouble
x[4]={36.80*ANGLE,69.57*ANGLE,119.00*ANGLE,48.92*ANGLE};
pf=fopen("
Output.txt"
"
w"
t=0.1;
h=0.1;
eps=0.00000001;
k=100;
for(nTemp=0;
nTemp<
=36;
nTemp++)
x0=nTemp*10*ANGLE;
i=dnetn(4,eps,t,h,x,k);
printf("
\ni=%d\n"
i);
x0=%lf\n"
x0);
fprintf(pf,"
%d\t"
10*nTemp);
for(i=0;
i<
=3;
i++)
x(%d)=%13.7lf\n"
i,x[i]/ANGLE);
%lf\t"
x[i]/ANGLE);
xe=dLen[1]*cos(x0)+dLen[2]*cos(x[0])+dLen[0]*cos(ALPHA-(x[0]));
ye=dLen[1]*sin(x0)+dLen[2]*sin(x[0])-dLen[0]*sin(ALPHA-(x[0]));
xe=%13.7lf\nye=%13.7lf\n"
xe,ye);
\n"
fclose(pf);
getch();
/*建立牛顿法矩阵*/
voiddnetnf(x,y,n)intn;
doublex[],y[];
y[0]=dLen[1]*cos(x0)+dLen[2]*cos(x[0])-dLen[3]*cos(x[1])
-dLen[4];
y[1]=dLen[1]*sin(x0)+dLen[2]*sin(x[0])-dLen[3]*sin(x[1]);
y[2]=dLen[1]*cos(x0)+dLen[2]*cos(x[0])+dLen[5]
*cos(x[2])-dLen[6]*cos(x[3])-dGxy[0]+dLen[0]*cos(ALPHA-(x[0]));
y[3]=dLen[1]*sin(x0)+dLen[2]*sin(x[0])+dLen[5]
*sin(x[2])-dLen[6]*sin(x[3])-dGxy[1]-dLen[0]*sin(ALPHA-(x[0]));
n=n;
return;
3.程序三求解各杆的角速度和E点速度(杆四的角速度始终为零,程序中不再求解)
/*输出文件Output2.txt*/
#defineALPHA(PI*35/180)
依次为*/
/*G点的坐标*/
staticdoublew1=1.0;
doubleVex,Vey;
inti,j,nTime;
FILE*fInput;
FILE*fOutput2;
intnX0,nCounter;
doubledTemp[4]={0};
staticdoublea[4][4]={0.};
staticdoubleb[4]={0.};
/*将agu_01.C的输出文件output.txt作为输入文件,继续计算*/
fInput=fopen("
output.txt"
r"
fOutput2=fopen("
output2.txt"
for(nTime=0;
nTime<
=36;
nTime++)
fscanf(fInput,"
%d"
&
nX0);
x0=nX0*ANGLE;
x0=%lf\n"
for(nCounter=0;
nCounter<
4;
nCounter++)
%lf"
dTemp[nCounter]);
dTemp[nCounter]=dTemp[nCounter]*ANGLE;
/*建立高斯方程组矩阵*/
a[0][0]=-dLen[2]*sin(dTemp[0]);
a[0][1]=dLen[3]*sin(dTemp[1]);
a[0][2]=0.;
a[0][3]=0.;
a[1][0]=dLen[2]*cos(dTemp[0]);
a[1][1]=-dLen[3]*cos(dTemp[1]);
a[1][2]=0.;
a[1][3]=0.;
a[2][0]=dLen[2]*sin(dTemp[0])-dLen[0]*sin(ALPHA-(dTemp[0]));
a[2][1]=0.;
a[2][2]=dLen[5]*sin(dTemp[2]);
a[2][3]=-dLen[6]*sin(dTemp[3]);
a[3][0]=dLen[2]*cos(dTemp[0])+dLen[0]*cos(ALPHA-(dTemp[0]));
a[3][1]=0.;
a[3][2]=dLen[5]*cos(dTemp[2]);
a[3][3]=-dLen[6]*cos(dTemp[3]);
b[0]=dLen[1]*sin(x0)*w1;
b[1]=-dLen[1]*cos(x0)*w1;
b[2]=-dLen[1]*sin(dTemp[0])*w1;
b[3]=-dLen[1]*cos(dTemp[0])*w1;
if(agaus(a,b,4)!
=0)
w%d=%lf\n"
i,b[i]);
fprintf(fOutput2,"
%lf"
b[i]);
Vex=-dLen[1]*sin(x0)*w1-dLen[2]*sin(dTemp[0])*b[0]+
dLen[0]*sin(ALPHA-(dTemp[0]))*b[0];
Vey=dLen[1]*cos(x0)*w1+dLen[2]*cos(dTemp[0])*b[0]+
dLen[0]*cos(ALPHA-(dTemp[0]))*b[0];
Vex=%lf\nVey=%lf\n"
Vex,Vey);
fclose(fInput);
fclose(fOutput2);
4.程序四求解各杆和点E的角加速度(杆四角加速度始终为零,这里不再求解)
/*输出文件Output3.txt*/
staticdoubledLen[7]={65.0,26.5,105.6,67.5,87.5,47.2,37.8};
inti,nTime;
FILE*fInput2;
FILE*fOutput3;
doubleAex,Aey;
doubledSeta[5]={0.};
doubledOmiga[4]={0.};
/*将agu_02.C的输出文件output2.txt作为输入文件,继续计算*/
fInput2=fopen("
fOutput3=fopen("
output3.txt"
fscanf(fInput2,"
/*读入角度值*/
5;
dSeta[nCounter]);
/*读入角速度值*/
dOmiga[nCounter]);
/*建立高斯方程组矩阵,dSeta[0]=x1(角度我们草稿的),dSeta[1]=x2,dSeta[2]=x3,dSeta[3]=x5,dSeta[4]=x6
dOmiga[0]=w2,dOmiga[1]=w3,dOmiga[2]=w5,dOmiga[3]=w6*/
a[0][0]=-dLen[2]*sin(dSeta[1]);
a[0][1]=dLen[3]*sin(dSeta[2]);
a[1][0]=dLen[2]*cos(dSeta[1]);
a[1][1]=-dLen[3]*cos(dSeta[2]);
a[2][0]=-dLen[0]*sin(ALPHA-(dSeta[1]))+dLen[2]*sin(dSeta[1]);
a[2][1]=0.;
a[2][2]=dLen[5]*sin(dSeta[3]);
a[2][3]=-dLen[6]*sin(dSeta[4]);
a[3][0]=dLen[0]*cos(ALPHA-(dSeta[1]))+dLen[2]*cos(dSeta[1]);
a[3][2]=dLen[5]*cos(dSeta[3]);
a[3][3]=-dLen[6]*cos(dSeta[4]);
b[0]=-(-dLen[2]*cos(dSeta[1])*dOmiga[0]*dOmiga[0]
+dLen[3]*cos(dSeta[2])*dOmiga[1]*dOmiga[1])+dLen[1]*
cos(dSeta[0])*w1*w1;
b[1]=-(-dLen[2]*sin(dSeta[1])*dOmiga[0]*dOmiga[0]
+dLen[3]*sin(dSeta[2])*dOmiga[1]*dOmiga[1])+dLen[1]*
sin(dSeta[0])*w1*w1;
b[2]=-w1*w1*dLen[1]*cos(dSeta[0])-dOmiga[0]*
dOmiga[0]*(dLen[2]*cos(dSeta[1])+dLen[0]*cos(ALPHA-(dSeta[1])))+dOmiga[3]*
dOmiga[3]*dLen[6]*cos(dSeta[4])-dLen[5]*
cos(dSeta[3])*dOmiga[2]*dOmiga[2];
b[3]=w1*w1*dLen[1]*sin(dSeta[0])-dOmiga[0]*
dOmiga[0]*(dLen[2]*sin(dSeta[1])-dLen[0]*sin(ALPHA-(dSeta[1])))-dOmiga[3]*
dOmiga[3]*dLen[6]*sin(dSeta[4])+dLen[5]*
sin(dSeta[3])*dOmiga[2]*dOmiga[2];
{printf("
a[%d]=%lf\n"
fprintf(fOutput3,"
Aex=-dLen[2]*sin(dSeta[1])*b[0]+dLen[0]*sin(ALPHA-(dSeta[1]))*b[0]-dLen[1]*cos(dSeta[0])*w1*
w1-dLen[2]*cos(dSeta[1])*dOmiga[0]*dOmiga[0]-dLen[0]*cos(ALPHA-(dSeta[1]))*dOmiga[0]*dOmiga[0];
Aey=dLen[2]*cos(dSeta[1])*b[0]+dLen[0]*cos(ALPHA-(dSeta[1]))*b[0]-dLen[1]*sin(dSeta[0])*w1*
w1-dLen[2]*sin(dSeta[1])*dOmiga[0]*dOmiga[0]+dLen[0]*sin(ALPHA-(dSeta[1]))*dOmiga[0]*dOmiga[0];
};
Aex=%lf\nAey=%lf"
Aex,Aey);
%lf%lf"
\n\n"
fclose(fInput2);
fclose(fOutput3);
5.#include"
intdnetn(n,eps,t,h,x,k)
intn,k;
doubleeps,t,h,x[];
{externvoiddnetnf();
externintagaus();
inti,j,l;
doubleam,z,beta,d,*y,*a,*b;
y=malloc(n*sizeof(double));
a=malloc(n*n*sizeof(double));
b=malloc(n*sizeof(double));
l=k;
am=1.0+eps;
while(am>
=eps)
{dnetnf(x,b,n);
am=0.0;
{z=fabs(b[i]);
if(z>
am)am=z;
if(am>
{l=l-1;
{free(y);
free(b);
free(a);
for(j=0;
j<
j++)
{z=x[j];
x[j]=x[j]+h;
dnetnf(x,y,n);
i++)a[i*n+j]=y[i];
x[j]=z;
if(agaus(a,b,n)==0)
return(-1);
beta=1.0;
i++)beta=beta-b[i];
if(fabs(beta)+1.0==1.0)
return(-2);
d=h/beta;
i++)x[i]=x[i]-d*b[i];
h=t*h;
free(y);
return(k-l);
五.计算结果
Ø
1(单位:
度)
2(单位:
3(单位:
5(单位:
6(单位:
36.79905
69.57313
122.46277
92.66544
10
32.70947
66.00299
106.49971
67.79857
20
29.27761
64.07317
97.17544
52.86279
30
26.59737
63.73103
90.38343
44.24919
40
24.63591
64.75511
84.24782
39.67266
50
23.30108
66.86468
77.84116
37.31607
60
22.49012
69.79004
70.48144
35.41957
70
22.11297
73
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 平面 机构 运动 分析