请大家帮我看看这段优化程序的错误
下面是写的对汽车转向梯形结构参数进行优化的程序,用到了优化工具箱。写好后总有错误,小弟我改了许多方面还是改不对,希望高手们能帮帮忙!程序如下:第一部分,名为fun.m的M函数,定义了函数fun
function f=fun(x)
for i=1:60
f=0; %函数值初始化
betae=atan(tan(alpha(i))/(1-K/L)*tan(alpha(i))); % 写计算转角期望值
A=2*x(1).^2*sin(x(2)+alpha(i)); %计 算 实 际 转 角
B=2*K*x(1)-2*x(1).^2*cos(x(2)+alpha(i));
C=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=x2+theta3(i)-pi;
if alpha(i)<=pi/18 %计算目标函数值
f(i)=1.5*abs(beta(i)-betae(i));
elseif alpha(i)<=pi/180
f(i)=abs(beta(i)-betae(i));
else f(i)=0.5*abs(beta(i)-betae(i));
end
end
第二部分,名为untitled.m的M文件,来执行优化
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(1)=0.1*K;
lb(2)=acot(K/(1.2*L));
ub(1)=0.17*K;
ub(2)=pi/2;
alpha=linspace(0,thetamax,60); %将转角划分为60等分间隔
lb=; %定义上、下边界约束条件和允差
ub=;
x0=;
options=optimset('TolFun',1e-10,'TolCon',1e-6);
=lsqnonlin(@fun,x0,lb,ub,options); %调用lsqnonlin函数求解
现在任务很急,希望大家能帮帮我。先谢谢大家了!
回复 楼主 的帖子
有什么样的错误回复 2楼 的帖子
说fun.m里的输入变量未定义:??? Input argument "x" is undefined.目前是这个。可是他是函数的自变量啊 x(1)x(2)换掉 fun.m第9行中的
beta=x2+theta3(i)-pi;
x2是什么?是不是应该是x(2)呀?
回复 5楼 的帖子
对的,是x(2),打错了,不好意思回复 4楼 的帖子
请问怎么换?x本身是一个向量,即x=
页:
[1]