powell法 matlab,powell法matlab代码

f0=ff(1);f2=ff(n+1);f3=ff(n+2);

k=k+1; %记录迭代次数

R(k,:)=[k,x',d',ff]; %保存迭代过程的中间运算结果

if f3

(f0-2*f2+f3)*(f0-f2-delta)^2<0.5*delta*(f0-f3)^2 %判断是否需要对原方向组进行替换

[a(n+1),b(n+1)]=section(x(2*n+1),x(2*n+2),d(2*n+1),d(2*n+2));

alpha(n+1)=ALPHA(x(2*n+1),x(2*n+2),d(2*n+1),d(2*n+2),a(n+1),b(n+1));

x(1)=x(2*n+1)+alpha(n+1)*d(2*n+1); %沿反射方向进行搜索,将搜索结果作为下一轮迭代的始点

x(2)=x(2*n+2)+alpha(n+1)*d(2*n+2);

for i=m:n %根据函数值之差最大值的下标值m,对原方向组进行替换

d(2*i-1)=d(2*i+1);

d(2*i)=d(2*i+2);

end

else

if f2

x(1)=x(2*n+1);

x(2)=x(2*n+2);

else

x(1)=x(2*n+3);

x(2)=x(2*n+4);

end

end

RR(k,:)=alpha; %保存迭代过程的中间运算结果

ff(1)=f(x(1),x(2)); %计算下一轮迭代过程需要的f0值

if

(((x(2*n+1)-x00

(1))^2+(x(2*n+2)-x00(2))^2)^(1/2))

break; %满足进度要求则退出循环迭代过程

end

end

xx=[x(1);x(2)]

fmin=f(x(1),x(2)) %显示最小值及其所对应的坐标

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值