鲍威尔法源程序码matlab,十一、Powell算法(鲍威尔算法)原理以及实现

一、介绍

Powell算法是图像配准里面的常用的加速算法,可以加快搜索速度,而且对于低维函数的效果很好,所以本篇博客主要是为了介绍Powell算法的原理以及实现。

由于网上已经有了对于Powell算法的讲解,所以我只是把链接放出来(我觉得自己目前还没有这个讲解的能力),大家自己去了解。

放在这里主要也是为了节省大家搜索的时间。(都是我辛辛苦苦搜出来的^-^)。

二、预备知识

了解一维搜索算法:进退法,消去法,黄金分割法

三、鲍威尔算法

具体原理阅读这里:

四、matlab代码实现一个简单函数的求解

这个代码的程序与思路很是简洁,我觉得写得很好。

原文代码放在这里:

文件:MyPowell.m

function MyPowell()

syms x1 x2 x3 a;

f=10*(x1+x2-5)^4+(x1-x2+x3)^2 +(x2+x3)^6;

error=10^(-3);

D=eye(3);

x0=[0 0 0]‘;

for k=1:1:10^6MaxLength=0;x00=x0;m=0;if k==1,s=D;endfor i=1:3x=x0+a*s(:,i);

ff=subs(f,{x1,x2,x3},{x(1),x(2),x(3)});

t=Divide(ff,a); %调用了进退法分割区间

aa=OneDemensionslSearch(ff,a,t); %调用了0.618法

你可能感兴趣的:(鲍威尔法源程序码matlab)