您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 医学基础知识_幽门螺杆菌的致病机理和特点
几种多变量函数无约束求极值的算法实现和性能比较一、几种算法的matlab实现1.最速下降法(梯度法)(1)算法框图开始||||)(kd停止计算输出结果是否)()()(kkxfd计算搜索方向)(min)(,)()(0)()()(kkkkkkkdxfdxfd使进行一维搜索,求沿1,)()()1(kkdxxkkkk置令结束(2)程序代码:参见gradientzxl.m2.牛顿法(1)算法框图开始0)()()()1(kkxfxf停止计算输出结果是否矩阵处的梯度和在计算essexxfkH)()(结束)()()(1)(2)()1(kkkkxfxfxx(2)程序代码参见newtonmul.m3.共轭梯度法(用于二次凸函数)(1)算法框图开始0||||kg停止计算输出结果是否)()()()(kkkxfgxxf处的梯度在计算结束||||||g||1;011k11)1(1)(kkkkkkkgkkdgd时,当时,当构造搜索方向,;1)()()1(kkdxxkkkk置)()()(kTkkTkkAdddg计算步长(2)程序代码参见FR2.m4.共轭梯度法(用于一般函数)(1)算法框图:开始||)(||)(jyf停止计算输出结果是否1),(,)1()1()1()1(jkyfdxy结束)(min)()()(0)()(jjjjjjdyfdyf满足求步长;1;1)(,,)1()1()1()1()1()1(kkjyfdxyyxknk置1)(||)(||||)(||)()1()1(2)(2)1(jjdyfdyfyfjjjjjjj计算因子)()()1(jjjdyynj(2)程序代码参见FRusual.m二、仿真实验及结果对于牛顿法和用于二次凸函数的共轭梯度法没有精度,对应表中无精度,精度是为最速下降法和用于一般函数的共轭梯度法而进行对比实验的。1.2112121242^22^),(xxxxxxxff=x1^2+2*x2^2-4*x1-2*x1*x2精确解为]2;4[];[21xx初始点(精度)[3;3](0.01)[15;8](0.01)[3;3](0.0001)[15;8](0.0001)最速下降法最优解[3.9986;1.9991][4.0068;2.0037][4.0000;2.0000][4.0001;2.0001]迭代次数314522耗时(s)0.311181.140900.563121.71424牛顿法最优解[4;2][4;2]迭代次数11耗时(s)0.0829870.084936共轭梯度法(用于二次凸函数)最优解[4;2][4;2]迭代次数22耗时(s)0.332940.15080共轭梯度法(用于一般函数)最优解[4;2][4;2][4.0000;2.0000][4.0000;2.0000]迭代次数1111耗时(s)0.317590.332300.317310.310422.2^4)^1(),(2121xxxxff=(x1-1)^4+x2^2精确解为]0;1[];[21xx初始点(精度)[2;0](0.01)[15;8](0.01)[2;0](0.0001)[15;8](0.0001)最速下降法最优解[1;0][1.0055;0.0003][1;0][1.0055;0.0000]迭代次数1314耗时(s)0.110430.821390.112420.91916牛顿法最优解[1;0][1;0]迭代次数8895耗时(s)6.279096.45091共轭梯度法(用于二次凸函数)最优解迭代次数耗时(s)共轭梯度法(用于一般函数)最优解[1;0][1.0760;-0.0000][1;0][1.0045;-0.0000]迭代次数1111耗时(s)0.187070.573100.176920.8414183.2)^1(2)^(*100),(11221xxxxxf(Rosenbrock函数)f=100*(x2-x1^2)^2+(1-x1)^2精确解为]1;1[];[21xx初始点(精度)[1;0](0.01)[10;6](0.01)[1;0](0.0001)[10;6](0.0001)最速下降法最优解[1.0004;1.0009]无法计算[1.0000;1.0000]无法计算迭代次数57超出上限59超出上限耗时(s)29.55244无穷大12.12031无穷大牛顿法最优解[1;1][1;1]迭代次数37耗时(s)0.288180.65096共轭梯度法(用于二次凸函数)最优解无法计算无法计算迭代次数超出上限超出上限耗时(s)无穷大无穷大共轭梯度法(用于一般函数)最优解[0.9828;0.9657][1.0002;1.0004][1.0000;1.0000][1.0000;1.0000]迭代次数613814耗时(s)5.3619311.403076.8147510.96418三、分析及总结1、从实验1和2的最速下降法的数据足以说明精度要求越高,迭代次数会越多的客观规律,并且初始点选取离精确解越远,迭代次数也越多,寻找最优解的耗时也越长。2、从实验1和2的牛顿法的数据可以验证该法的二次终止性。对于常见的二次凸函数,无论初始点如何选取,只需一次迭代即可到达极小点,迭代一次的耗时与计算量有关,不一定相等。当原函数为含有高次的凸函数,牛顿法搜索极小值显然比原函数为二次时迭代次数较多,求取速度较慢,但仍可求出精确解。初始点离精确解越远,迭代次数越多,所需时间也越长。3、本次实验有用于二次凸函数和一般函数的两种共轭梯度法,从实验1的数据就可验证共轭梯度法的二次终止性。初始点离精确解越远,并不代表迭代次数越多和耗时越长。4、对于一般的二次凸函数,采用上述的三种方法都能有很好的计算结果,其中当属牛顿法迭代次数最少,耗时也短,结果准确,为诸法中效果最好的方法。当原函数次数增加后,最速下降法和牛顿法虽计算量增加但仍可计算出最优解。用于一般函数的共轭梯度法足以验证其二次终止性,并且对高次的函数,其计算也能保证良好的特性,不会像牛顿法一样显著增多其计算量。5、总体来看,一般情况下牛顿法迭代速率较快的同时还能保证求出准确解,是一种准确性和快速性都比较好的算法,但其缺点在于需要计算Hesse矩阵的逆,原函数次数高后计算量会显著增大,并且存在矩阵奇异而导致算法失效的风险。从这方面对比来看,共轭梯度法无需计算二阶梯度,是一个非常好的算法,精度足以保证,迭代次数也少,但对Rosenbrock函数这种特殊函数运算量就会明显变大,耗时会显著增加。
本文标题:医学基础知识_幽门螺杆菌的致病机理和特点
链接地址:https://www.777doc.com/doc-2639911 .html