开始
↓
读入lo2o4,lo2A,lo4B,lBE,l61, ω2及一个运动循环曲柄转过角度?1 ↓ ?1=5 ↓ 求导杆3的角位移?3,角速度ω3, 角加速度α3; 求A点的位移S3,速度V3 ↓ 求杆4 的角位移?4,角速度ω4; 求刨头E点位移SE速度Ve及加速度αE ↓ ?1≤360 ↓ 输出E点位移SE 速度VE加速度αE
?1=? 1+5 画出位移速度加速度随?1 变化曲线图 ↓
结束
四、程序中符号说明:
Q2:曲柄2转过的角度(与x正半轴的夹角);w2:曲柄2的角速度Q4:杆4转过的角度(与x正半轴的夹角) w3:摆块3的转动角速度 a3:摆块的加速度Q5:杆5转过的角度(与x正半轴的夹角) sA:A点的位移;sE:E点的位移。w4:杆4转动的角速度a4:杆4的角加速度。
五、程序清单及运行结果:
1、数学建模程序 #include
#define l5 (0.32*l4)
#define Ys6 22.88996918 #define l7 l4-Ys6 void dtmn();
void pist(float x0,float y0,float l,float h, float theta); void slide(float x0,float y0,float x1,float h); void pirot(float x0,float y0,float l); void sgd();
void cur();
/****************************主函数****************************/ main()
{int Q2,i=0,j=0,Q_2[72];
float Q4,Q41,Q411,w3,a3,Q5,Q51;
float Q511,sA,sA1,sA11,Se,w4,Ve,Se1,a4,Se11; float S_e[72],S_e1[72],S_e11[72],Q_511[72]; FILE *fl;
if((fl=fopen(\ {printf(\ exit(0); }
/*int gd=DETECT,gm;
initgraph(&gd,&gm,\ cleardevice();*/
clrscr();
printf(\ 角位移 位移 速度 角加速度 加速度 \\n\ for(Q2=0;Q2<=360;Q2+=5)
{i++;
if(i==0){getch();
printf(\ 角位移 位移 速度 角加速度 加速度\\n\ }
if(Q2>=0&&Q2<90||Q2>270&&Q2<=360)
{Q4=atan((l2+l1*sin(Q2*M))/(l1*cos(Q2*M)));Q4/=M;} else if(Q2==90||Q2==270) {Q4=90;}
else if(Q2>90&&Q2<180)
{Q4=PI-atan((l2+l1*sin(Q2*M))/(-l1*cos(Q2*M)));Q4/=M;} else if(Q2>=180&&Q2<270)
{Q4=PI-atan((l2+l1*sin(Q2*M))/(-l1*cos(Q2*M)));Q4/=M;} if(Q4==90) sA=l2+l1; else if(Q4==270) sA=l2-l1; else
sA=l1*cos(Q2*M)/cos(Q4*M); sA1=-l1*C*sin((Q2-Q4)*M); Q41=-l1*C*cos((Q2-Q4)*M)/sA; w3=Q41;
Q411=(C*C*l1*sin((Q4-Q2)*M)-w3*sA1)/sA; a3=Q411;
if(((l7-l4*sin(Q4*M))/l5)>=0&&((l7-l4*sin(Q4*M))/l5)<=1) Q5=180-asin(l7-(l4*sin(Q4*M))/l5)/M;
else if(((l7-l4*sin(Q4*M))/l5)>=-1&&((l7-l4*sin(Q4*M))/l5)<=0) Q5=180+asin((l7-l4*sin(Q4*M))/l5)/M; Se=l4*cos(Q4*M)+l5*cos(Q5*M); Q51=-w3*l4*cos(Q4*M)/(l5*cos(Q5*M)); w4=Q51;
Se1=-w3*l4*sin((Q4-Q5)*M)/cos(Q5*M);
Q511=(Q41*Q41*l4*sin(Q4*M)+Q51*Q51*l5*sin(Q5*M)-Q411*l4*cos(Q4*M))/(l5*cos(Q5*M));
Se11=-(a3*l4*sin((Q4-Q5)*M)+w3*w3*l4*cos((Q4-Q5)*M)-w4*w4*l5)/cos(Q5*M);
S_e[j]=Se; S_e1[j]=Se1; Q_511[j]=Q511; S_e11[j]=Se11; Q_2[j]=Q2;
printf(\ %-7.3f %-7.3f %-7.3f %-7.3f\\n\e[j],
S_e1[j],Q_511[j],S_e11[j]);
fprintf(fl,\ %-7.3f %-7.3f %-7.3f %-7.3f\\n\e[j],
S_e1[j],Q_511[j],S_e11[j]); } j++; fclose(fl); cur();
dtmn(); sgd();
}
/**********************sudu,jiasudu,weiyi,quxiantu hanshu*************************/ void cur()
{/*float w1=2*PI,L1=110,L4=135,L61=490,L3=540,L6=380; */ float Q4,Q2,sA,w3,sA1,sA11,Se,Se1,Se11,a3,a4,Q411,Q5,Q51,w4; int gd=DETECT, gmode,i;
initgraph(&gd,&gmode,\ clrscr();
for(Q2=0;Q2<=2*PI;Q2+=1.0*PI/1000)
{if(Q2>=0&&Q2
else if(Q2>PI/2&&Q2 Q4=PI-atan((l2+l1*sin(Q2))/(-l1*cos(Q2))); else Q4=PI-atan((l2+l1*sin(Q2))/(-l1*cos(Q2))); if(Q2!=PI/2&&Q2!=1.5*PI) sA=l1*cos(Q2)/cos(Q4); else if(Q2==PI/2) sA=l1+l2; else sA=l2-l1; /* sA1=-l1*w1*sin(Q2-Q4); */ w3=l1*C*cos(Q2-Q4)/sA; Q411=(C*C*l1*sin(Q4-Q2)-2*w3*sA)/sA; a3=Q411; if(((l7-l4*sin(Q4))/l5)>=0&&((l7-l4*sin(Q4))/l5)<=1) Q5=PI-asin((l7-l4*sin(Q4))/l5); else if(((l7-l4*sin(Q4))/l5)>=-1&&((l7-l4*sin(Q4))/l5)<0) Q5=PI+asin((l7-l4*sin(Q4))/l5); Se=l4*cos(Q4)+l5*cos(Q5); Q51=-w3*l4*cos(Q4)/(l5*cos(Q5)); w4=Q51;