24小时热门版块排行榜    

查看: 662  |  回复: 0

lmk-kobe

新虫 (初入文坛)

[求助] 基于matlab4杆机构运动分析m文件为什么运行不了

% 曲柄摇杆机构运动分析
% (1)-----计算连杆的输出角th3和摇杆的输出角th4
% 设定各杆的长度(单位:毫米)

rs(1)=304.8;        % 设定机架1长度
rs(2)=101.6;        % 设定曲柄2长度
rs(3)=254.0;        % 设定连杆3长度
rs(4)=177.8;        % 设定摇杆4长度
dr=pi/180.0;% 角度与弧度的转换系数
% 设定初始推测的输入
% 机构的初始位置
th(1)=0.0;          % 设定曲柄2初始位置角是0度(与机架1共线)
th(2)=45*dr;        % 连杆3的初始位置角是 45度
th(3)=135*dr;       % 摇杆4的初始位置角是135度
% 摇杆4的初始位置角可以用三角形的正弦定理确定
th(3)=pi-asin(sin(th(2))*rs(3)/rs(4))
dth=5*dr;                               % 循环增量
% 曲柄输入角从0度变化到360度,步长为5度,计算th34
for i=1:72
    [th3,th4]=ntrps(th,rs); % 调用牛顿—辛普森方程求解机构位置解非线性方程函数文件
    % Store results in a matrix-th34,in degrees
    % 在矩阵th34中储存结果,以度为单位;(i,表示第i行所有列的元素;(:,i)表示第i列所有行的元素
    th34(i,=[th(1)/dr th3/dr th4/dr]; % 矩阵[曲柄转角 连杆转角 摇杆转角]
    th(1)=th(1)+dth;                    % 曲柄转角递增
    th(2)=th3;                          % 连杆转角中间计算值
    th(3)=th4;                          % 摇杆转角中间计算值
end
function[th3,th4]=ntrps(th,rs)
th(1)=theta_2
th(2)=theta_3_bar(starting guess)
th(3)=theta_4_bar(starting guess)
rs(1)=r_1;
rs(2)=r_2;
rs(3)=r_3;
rs(4)=r_4;
th2=th(1);
th3bar=th(2);
th4bar=th(3);
epsilon=1.0E-6;
f=[rs(3)*cos(th3bar)-rs(4)*cos(th4bar)+rs(2)*cos(th2)-rs(1);rs(3)*sin(th3bar)-rs(4)*sin(th4bar)+rs(2)*sin(th2)];
while norm(f)>epsilon
    J=[-rs(3)*sin(th3bar),rs(4)*sin(th4bar);rs(3)*cos(th3bar),-rs(4)*cos(th4bar)];
    d=inv(J)*(-1.0*f);
    th3bar=th3bar+d(1);
    th4bar=th4bar+d(2);
    f=[-rs(3)*cos(th3bar),rs(4)*cos(th4bar);rs(3)*sin(th3bar),-rs(4)*sin(th4bar)];
    norm(f);
end;
th3=th3bar;
th4=th4bar;
% 输出1:四杆机构运动周期(0:5:360),时间,角位移,角速度,角加速度数据
disp '   曲柄转角  连杆转角-摇杆转角-连杆角速度-摇杆角速度-连杆加速度-摇杆加速度'
ydcs=[th34(:,1),th34(:,2),th34(:,3),om34(:,2),om34(:,3),a34(:,2),a34(:,3)];
disp (ydcs)
运行结果
ans =

    66

>>
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 lmk-kobe 的主题更新
信息提示
请填处理意见