MATLAB 曲线拟合(优化)

来源:百度知道 编辑:UC知道 时间:2024/04/29 08:03:16
function f=fun(x)
global K L x thetamax alpha
for i=1:61
f=0; %函数值初始化
betae=atan(tan(alpha(i))/(1-(K/L)*tan(alpha(i)))); %计算转角期望值
A(i)=2*x(1).^2*sin(x(1)+alpha(i)); %计算实际转角
B(i)=2*K*x(1)-2*x(1).^2*cos(x(2)+alpha(i));
C(i)=2*x(1).^2-4*x(1).^2*(cos(x(2)).^2+4*K*x(1)*cos(x(2))-2*K*x(1)*cos(x(2)+alpha(i)));
theta3=2*acot((A(i)+sqrt(A(i).^2+B(i).^2-C(i).^2))/B(i)+C(i));
beta(i)=x(2)+theta(i)-pi;
if alpha(i)<=pi/18 %计算目标函数值
f(i)=1.5*abs(beta(k)-betae(k));
elseif alpha(i)<=pi/180;f(i)=abs(beta(k)-betae(k));
else f(i)=0.5*abs(beta(k)-betae(k));
end
end

global K L thetamax alpha
K=input( '输入两主销中心线间距(单位mm)K='); %提示输入结构参数
L=input('输入轴距(单位mm)L=');
thetamax=input( '输入外转向轮最大转角(单位为度)');
x0(1)=input( '输入初始点的第1个分量(臂长、mm)');
x0(2)=input('输入初始点的第2个分

function f=fun(x)
global K L x thetamax alpha
for i=1:61
f=0; %函数值初始化
betae=atan(tan(alpha(i))/(1-(K/L)*tan(alpha(i)))); %计算转角期望值
A(i)=2*x(1).^2*sin(x(1)+alpha(i)); %计算实际转角
B(i)=2*K*x(1)-2*x(1).^2*cos(x(2)+alpha(i));
C(i)=2*x(1).^2-4*x(1).^2*(cos(x(2)).^2+4*K*x(1)*cos(x(2))-2*K*x(1)*cos(x(2)+alpha(i)));
theta3=2*acot((A(i)+sqrt(A(i).^2+B(i).^2-C(i).^2))/B(i)+C(i));
beta(i)=x(2)+theta(i)-pi;
if alpha(i)<=pi/18 %计算目标函数值
f(i)=1.5*abs(beta(k)-betae(k));
elseif alpha(i)<=pi/180;f(i)=abs(beta(k)-betae(k));
else f(i)=0.5*abs(beta(k)-betae(k));
end
end

global K L thetamax alpha
K=input( '输入两主销中心线间距(单位mm)K='); %提示输入结构参数
L=input('输入轴距(单位mm)L=');
thetamax=input( '输入外转向轮最大转角(单位为度)');
x0(1)=input( '输入初始点的第1个分量(臂长、mm)');
x0(2)=input('输入初始点的第2个分量(底角、度)');
thetamax=thetamax*pi/180; %转换为弧度单位
x0(2)=x0(2)*pi/180;lb