来源:“机械工程设计分析与MATLAB应用”
已知四杆长,曲柄转速,求运动线图
% 曲柄摇杆机构运动分析
% (1)-----为了计算连杆的输出角th3和摇杆的输出角th4
% 设定各杆的长度(单位:毫米)
clear
rs(1)=304.8; % 设定机架1长度
rs(2)=101.6; % 设定曲柄2长度
rs(3)=254; % 设定连杆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); % 调用牛顿—辛普森方程求解机构位置解非线性方程函数文件
% 在矩阵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
% 绘制输出角th(2)与th(3)—输入角th(1)的关系曲线
subplot(2,2,1) % 选择第1个子窗口
plot(th34(:,1),th34(:,2),th34(:,1),th34(:,3))
重点在红色的句子,书上没有给出相应的求解子函数
自己写了如下求解非线性方程的函数
function [th3,th4]=ntrps(th,rs)
dr=pi/180.0;rs(1)=304.8; % 设定机架1长度
rs(2)=101.6; % 设定曲柄2长度
rs(3)=254; % 设定连杆3长度
rs(4)=177.8; % 设定摇杆4长度
x0=[0 45*dr 135*dr];
[th3,th4]=fsolve(@fangc,x0)%(th(2),th(3))
其中:
function F=fangc(th,rs)
rs(1)=304.8; % 设定机架1长度
rs(2)=101.6; % 设定曲柄2长度
rs(3)=254; % 设定连杆3长度
rs(4)=177.8; % 设定摇杆4长度
F(1)=rs(2)*cos(th(1))+rs(3)*cos(th(2))-rs(1)-rs(4)*cos(th(3));
F(2)=rs(2)*sin(th(1))+rs(3)*sin(th(2))-rs(4)*sin(th(3));
问题:每次由fsolve解出的fangc非线性方程th3,th4都有几个解,导致紫色的句子无法赋值。
不知道怎么解决。 |