MATLAB机构运动仿真

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

机械原理第一次作业(matlab7.0):

求:r1旋转360°时,θ2,θ3,ω2,ω3,α2,α3和C点的加速度. 设r1=1000,r2=2000,r3=1800,r4=2500

1、角位移的M函数:

function y=diyiwen(x)

% Input parameters

% x(1)=theta-1

% x(2)=theta-2 guess value

% x(3)=theta-3 guess value

% x(4)=r1

% x(5)=r2

% x(6)=r3

% x(7)=r4

% Output parameters

% y(1)=theta-2

% y(2)=theta-3

theta2=x(2);

theta3=x(3);

%

epsilon=1.0E-6;

%

f=[x(4)*cos(x(1))+x(5)*cos(theta2)-x(7)-x(6)*cos(theta3);

x(4)*sin(x(1))+x(5)*sin(theta2)-x(6)*sin(theta3)];

%

while norm(f)>epsilon

J=[-x(5)*sin(theta2) x(6)*sin(theta3);x(5)*cos(theta2) -x(6)*cos(theta3)];

dth=inv(J)*(-1.0*f);

theta2=theta2+dth(1);

theta3=theta3+dth(2);

f=[x(4)*cos(x(1))+x(5)*cos(theta2)-x(7)-x(6)*cos(theta3);

x(4)*sin(x(1))+x(5)*sin(theta2)-x(6)*sin(theta3)];

norm(f);

end;

y(1)=theta2;

y(2)=theta3;

r1旋转360°时,θ2,θ3的M文件程序:

r(1)=1000;

r(2)=2000;

r(3)=1800;

r(4)=2500;

dr=pi/180;

th(1)=0;

th(2)=59.8897 *dr;

th(3)=106.0172*dr;

y=diyiwen([th(1),th(2),th(3),r(1),r(2),r(3),r(4)])

dth=1*dr;

for i=1:360

y=diyiwen([th(1),th(2),th(3),r(1),r(2),r(3),r(4)]);

th23(i,:)=[th(1)/dr,th(2)/dr,th(3)/dr];

th(1)=th(1)+dth;

th(2)=y(1);

th(3)=y(2);

end

figure(1)

plot(th23(:,1),th23(:,2),th23(:,1),th23(:,3),th23(:,1),th23(:,1)) axis([0,360,0,360])

grid on

title('角位移线图')

xlabel('曲柄转角th(1)')

ylabel('从动件转角th(2),th(3)')

text(300,50,'角th(2)')

text(300,150,'角th(3)')

text(200,200,'角th(1)')

2、角速度的M函数:

function y=dierwen(x)

% Iput parameters

%

% x(1)=theta-1

% x(2)=theta-2

% x(3)=theta-3

% x(4)=dtheta-1

% x(5)=r1

% x(6)=r2

% x(7)=r3

%

% Output parameters

%

% y(1)=dtheta-2

% y(2)=dtheta-3

%

A=[-x(6)*sin(x(2)) x(7)*sin(x(3));

x(6)*cos(x(2)) -x(7)*cos(x(3))];

B=[x(5)*sin(x(1));-x(5)*cos(x(1))]*x(4);

y=inv(A)*B;

ω2,ω3

r1旋转360°时ω2,ω3的M文件程序:

th(1)=0;

dr=pi/180;

dth(1)=10;

dth(2)=59.8897*dr;

dth(3)=106.0172*dr;

dth1=1*dr;

r(1)=1000;

r(2)=2000;

r(3)=1800;

r(4)=2500;

for j=1:360

x=dierwen([th(1),dth(2),dth(3),dth(1),r(1),r(2),r(3)]);

y=diyiwen([th(1),dth(2),dth(3),r(1),r(2),r(3),r(4)]);

dth(2)=y(1);

dth(3)=y(2);

th(1)=th(1)+dth1;

dth23(j,:)=[th(1)/dr,x(1)/dr,x(2)/dr];

end

figure(2)

plot(dth23(:,1),dth23(:,2),dth23(:,1),dth23(:,3))

axis([0,360,-400,400])

相关文档
最新文档