几种多变量函数无约束求极值的算法实现和性能比较(2015年12月17修正)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

几种多变量函数无约束求极值的算法实现和性能比较

一、几种算法的matlab实现

1.最速下降法(梯度法)

(1)算法框图

(2)程序代码:

参见gradientzxl.m

2.牛顿法

(1)算法框图

(2)程序代码

参见newtonmul.m

3.共轭梯度法(用于二次凸函数)(1)算法框图

(2)程序代码

参见FR2.m

4.共轭梯度法(用于一般函数)(1)算法框图:

(2)程序代码 参见FRusual.m

二、仿真实验及结果

对于牛顿法和用于二次凸函数的共轭梯度法没有精度,对应表中无精度,精度是为最速下降法和用于一般函数的共轭梯度法而进行对比实验的。 1. 2112121242^22^),(x x x x x x x f --+= f=x1^2+2*x2^2-4*x1-2*x1*x2 精确解为]2;4[];[21=x x

2.2^4)^1(),(2121x x x x f +-= f=(x1-1)^4+x2^2 精确解为]0;1[];[21=x x

3.2)^1(2)^(*100),(11221x x x x x f -+-= (Rosenbrock 函数) f=100*(x2-x1^2)^2+(1-x1)^2

精确解为]1;1[];[21 x x

三、分析及总结

1、从实验1和2的最速下降法的数据足以说明精度要求越高,迭代次数会越多的客观规律,

并且初始点选取离精确解越远,迭代次数也越多,寻找最优解的耗时也越长。

2、从实验1和2的牛顿法的数据可以验证该法的二次终止性。对于常见的二次凸函数,无论初始点如何选取,只需一次迭代即可到达极小点,迭代一次的耗时与计算量有关,不一定相等。当原函数为含有高次的凸函数,牛顿法搜索极小值显然比原函数为二次时迭代次数较多,求取速度较慢,但仍可求出精确解。初始点离精确解越远,迭代次数越多,所需时间也越长。

3、本次实验有用于二次凸函数和一般函数的两种共轭梯度法,从实验1的数据就可验证共轭梯度法的二次终止性。初始点离精确解越远,并不代表迭代次数越多和耗时越长。

4、对于一般的二次凸函数,采用上述的三种方法都能有很好的计算结果,其中当属牛顿法迭代次数最少,耗时也短,结果准确,为诸法中效果最好的方法。当原函数次数增加后,最速下降法和牛顿法虽计算量增加但仍可计算出最优解。用于一般函数的共轭梯度法足以验证其二次终止性,并且对高次的函数,其计算也能保证良好的特性,不会像牛顿法一样显著增多其计算量。

5、总体来看,一般情况下牛顿法迭代速率较快的同时还能保证求出准确解,是一种准确性和快速性都比较好的算法,但其缺点在于需要计算Hesse 矩阵的逆,原函数次数高后计算量会显著增大,并且存在矩阵奇异而导致算法失效的风险。从这方面对比来看,共轭梯度法无需计算二阶梯度,是一个非常好的算法,精度足以保证,迭代次数也少,但对Rosenbrock 函数这种特殊函数运算量就会明显变大,耗时会显著增加。

相关文档
最新文档