📄 findgoodpoint_2n.m
字号:
function res=findgoodpoint_2n(x0,h,n)
x1=x0;
E=eye(n); %搜索方向
x=zeros(n,2*n); %存储搜索点
y=zeros(1,2*n); %存储对应搜索点的值
for i=1:n %2n个搜索方向,函数值
x(:,2*i-1)=x1+h*E(:,i);
x(:,2*i)=x1-h*E(:,i);
y(2*i-1)=fm(x(:,2*i-1));
y(2*i)=fm(x(:,2*i));
end
ybest=y(1); %最好点
ybetter=y(1); % 次好点
xbest=x(:,1);
xbetter=x(:,1);
for i=2:2*n %查找最好点、次好点,并记录相应的函数值
if y(i)<ybetter
if y(i)<ybest
ybetter=ybest;
xbetter=xbest;
ybest=y(i);
xbest=x(:,i);
else
ybetter=y(i);
xbetter=x(:,i);
end
end
end
xtemp=xbest+xbetter; %根据最好点和次好点新产生的点
ytemp=fm(xtemp);
if ytemp<ybest
xbest=xtemp;
end
if fm(xbest)<fm(x0)
res=xbest;
else
res=x0;
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -