一维搜索

%% 一维搜索方法
clc;
clear all;
close all;
x = -2:0.01:2;
y = 3*x.^2 - 4.*x + 2;
plot(x,y,'r-.','linewidth',2);
hold on
%% 初始化
x0 = 0;%初始值;
k = 1;%初始步长;
LL = 0.002;%终止条件
amin = -1;
bmax = 1;
lamda = 0.382;
x1 = amin + lamda *(bmax-amin);
x2 = amin +(1- lamda )*( bmax-amin);
fx1 = fun_f(x1);
fx2 = fun_f(x2);
p1 =plot([x1,x1],[0,fx1],'linewidth',2);
% hold on
p2 = plot([x2,x2],[0,fx2],'linewidth',2);
c = [];
%% 搜索开始
while bmax-amin > LL
if fx1 > fx2
amin = x1;
% bmax = bmax;
x1 = x2;
fx1 = fx2;
x2 = amin + (1-lamda) *(bmax-amin);
fx2 = fun_f(x2);
else
% amin = amin;
bmax = x1;
x2 = x1;
fx2 = fx1;
x1 = amin + lamda*(bmax-amin);
fx1 = fun_f(x1);
end
set(p1,'xdata',[x1,x1],'ydata',[0,fx1],'linewidth',2);
% hold on
set(p2,'xdata',[x2,x2],'ydata',[0,fx2],'linewidth',2);
k = k +1;
c = [c;[amin,bmax,x1,x2,fx1,fx2]];
drawnow
pause(0.5)
end

 

转载于:https://www.cnblogs.com/Kermit-Li/p/4047132.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值