MATLAB程序:已知三个位置设计平面四杆机构求解程序(位移矩阵法).docVIP

  • 5
  • 0
  • 约3.41千字
  • 约 3页
  • 2019-07-04 发布于江苏
  • 举报

MATLAB程序:已知三个位置设计平面四杆机构求解程序(位移矩阵法).doc

%MATLAB程序:已知三个位置设计平面四杆机构求解程序(位移矩阵法) clear;clc; %凡是变量名前带v的为数值变量,不带的是符号变量 vxp1=0; vyp1=0; vsita1=0*pi/180; vxp2=-2; vyp2=6; vsita2=40*pi/180; vxp3=-10; vyp3=8; vsita3=90*pi/180; %精确位置P1,P2,P3及各角度 vsita12=vsita2-vsita1; vsita13=vsita3-vsita1; vxa=-10; vya=-2; vxd=-5; vyd=-2; %选定A,D点 %所有数值均在此确定,更改此处即可解出不同数值的四杆机构位移矩阵方程 syms xp1 yp1 xp2 yp2 xp3 yp3 sita12 sita13; syms xa ya xb1 yb1 xb2 yb2 xb3 yb3; f1=(xb2-xa)^2+(yb2-ya)^2=(xb1-xa)^2+(yb1-ya)^2; f2=(xb3-xa)^2+(yb3-ya)^2=(xb1-xa)^2+(yb1-ya)^2; %前两个机构方程 f3=xb2=cos(sita12)*xb1-sin(sita12)*yb1+xp2-xp1*cos(sita12)+yp1*sin(sita12); f4=yb2=sin(sita12)*xb1+cos(sita12)*yb1+yp2-xp1*sin(sita12)-yp1*cos(sita12); %由第一个位移矩阵方程得出 f5=xb3=cos(sita13)*xb1-sin(sita13)*yb1+xp3-xp1*cos(sita13)+yp1*sin(sita13); f6=yb3=sin(sita13)*xb1+cos(sita13)*yb1+yp3-xp1*sin(sita13)-yp1*cos(sita13); %由第二个位移矩阵方程得出 f1=subs(f1,{xa,ya},{vxa,vya}); f2=subs(f2,{xa,ya},{vxa,vya}); f3=subs(f3,{xp1,xp2,yp1,sita12},{vxp1,vxp2,vyp1,vsita12}); f4=subs(f4,{xp1,yp1,yp2,sita12},{vxp1,vyp1,vyp2,vsita12}); f5=subs(f5,{xp1,xp3,yp1,sita13},{vxp1,vxp3,vyp1,vsita13}); f6=subs(f6,{xp1,yp1,yp3,sita13},{vxp1,vyp1,vyp3,vsita13}); %代入具体数值 [xb1,xb2,xb3,yb1,yb2,yb3]=solve(f1,f2,f3,f4,f5,f6); %解方程 vxb1=vpa(xb1); vyb1=vpa(yb1); vxb2=vpa(xb2); vyb2=vpa(yb2); vxb3=vpa(xb3); vyb3=vpa(yb3); (vxb1-vxa)^2+(vyb1-vya)^2; (vxb2-vxa)^2+(vyb2-vya)^2; (vxb3-vxa)^2+(vyb3-vya)^2; %去掉这三行分号可验证B点三个位置是否距离A点相等 syms xd yd xc1 yc1 xc2 yc2 xc3 yc3; f7=(xc2-xd)^2+(yc2-yd)^2=(xc1-xd)^2+(yc1-yd)^2; f8=(xc3-xd)^2+(yc3-yd)^2=(xc1-xd)^2+(yc1-yd)^2; %前两个机构方程 f9=xc2=cos(sita12)*xc1-sin(sita12)*yc1+xp2-xp1*cos(sita12)+yp1*sin(sita12); f10=yc2=sin(sita12)*xc1+cos(sita12)*yc1+yp2-xp1*sin(sita12)-yp1*cos(sita12); %由第一个位移矩阵方程得出 f11=xc3=cos(sita13)*xc1-sin(sita13)*yc1+xp3-xp1*cos(sita13)+yp1*sin(sita13); f12=yc3=sin(sita13)*xc1+cos(sita13)*yc1+yp3-xp1*sin(sita13)-yp1*cos(sita13); %由第二个位移矩阵方程得出 f7=subs(f7,{xd,yd},{vxd,vyd}); f8=subs(f8,{xd,yd},{vxd,vyd}); f9=subs(f9,{xp1,xp2,yp1,sita12},{vxp1,v

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档