欢迎来到天天文库
浏览记录
ID:56778222
大小:82.50 KB
页数:7页
时间:2020-07-09
《最优化 马昌凤 第三章作业.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、最优化方法及其Matlab程序设计习题作业暨实验报告学院:数学与信息科学学院班级:12级信计一班姓名:李明学号:1201214049第三章最速下降法和牛顿法一、上机问题与求解过程1、用最速下降法求的极小值。解:仿照书上编写最速下降法程序如下:function[x,val,k]=grad(fun,gfun,x0)%功能:用最速下降法求解无约束化问题:minf(x)%输入:x0是初始点,fun,gfun分别是目标函数和梯度%输出:x,val分别是近似嘴有点和最优值,k是迭代次数maxk=5000;rho=0.5;sigma=0.4;%一开始选择时选择的rho和sibma选择的数据不够合理
2、,此处我参照书上的数据编写数据k=0;epsilon=1e-5;while(k3、)%求得每一个的函数值然后仿照书上建立两个目标函数和梯度的M文件:functionf=fun(x)f=3*x(1)^2+2*x(2)^2-4*x(1)-6*x(2);functiong=gfun(x)g=[6*x(1)-4,4*x(2)-6]';选取初始点为,调用函数程序,得出最小极值点为,极小值为,在界面框中输入的程序如下:[x,val,k]=grad('fun','gfun',x0)val=-5.8333x=0.66671.5000val=-5.8333k=10从结果可以看出迭代次数为次,如果选取不同的初值点则迭代次数不一样,但是极小值相同。2、分别用牛顿法和阻尼牛顿法求解函数的4、极小点。解:牛顿法:改编书上的阻尼牛顿法,将Armijo线性搜索公式去掉,改编为牛顿法,其中程序为:function[x,val,k]=netwn(fun,gfun,Hess,x0)%功能:用牛顿法求解无约束问题:minf(x)%输入:x0是初始点,fun,gfun,Hess分别是求%目标函数值,梯度,Hesse矩阵函数%输出:x,val分别是近似点最优解和最优质,k是迭代次数maxk=500;%因为是牛顿法,感觉不能简单直接找出最佳数值,所以需要加大迭代次数k=0;epsilon=1e-5;while(k5、ess,x0);%计算Hess矩阵if(norm(gk)6、x)n=length(x);He=zeros(n,n);He=[8,0;0,2];选取初始点为,调用函数程序,得出最小极值点为,极小值为,在界面框中输入的程序如下:x0=[00]';x,val,k]=netwn('fun','gfun','Hess',x0)x=12val=-8k=1从结果可以看出迭代次数为次,如果选取不同的初值点则迭代次数不一样,但是极小值相同。下面看阻尼牛顿法:阻尼牛顿法:仿照书上编写程序并结合Armijo线性搜索步长,有算法程序如下:function[x,val,k]=znetwn(fun,gfun,Hess,x0)%功能:用牛顿法求解无约束问题:minf(x)7、%输入:x0是初始点,fun,gfun,Hess分别是求%目标函数值,梯度,Hesse矩阵函数%输出:x,val分别是近似点最优解和最优质,k是迭代次数maxk=100;rho=0.50;sigma=0.4;k=0;epsilon=1e-5;while(k
3、)%求得每一个的函数值然后仿照书上建立两个目标函数和梯度的M文件:functionf=fun(x)f=3*x(1)^2+2*x(2)^2-4*x(1)-6*x(2);functiong=gfun(x)g=[6*x(1)-4,4*x(2)-6]';选取初始点为,调用函数程序,得出最小极值点为,极小值为,在界面框中输入的程序如下:[x,val,k]=grad('fun','gfun',x0)val=-5.8333x=0.66671.5000val=-5.8333k=10从结果可以看出迭代次数为次,如果选取不同的初值点则迭代次数不一样,但是极小值相同。2、分别用牛顿法和阻尼牛顿法求解函数的
4、极小点。解:牛顿法:改编书上的阻尼牛顿法,将Armijo线性搜索公式去掉,改编为牛顿法,其中程序为:function[x,val,k]=netwn(fun,gfun,Hess,x0)%功能:用牛顿法求解无约束问题:minf(x)%输入:x0是初始点,fun,gfun,Hess分别是求%目标函数值,梯度,Hesse矩阵函数%输出:x,val分别是近似点最优解和最优质,k是迭代次数maxk=500;%因为是牛顿法,感觉不能简单直接找出最佳数值,所以需要加大迭代次数k=0;epsilon=1e-5;while(k5、ess,x0);%计算Hess矩阵if(norm(gk)6、x)n=length(x);He=zeros(n,n);He=[8,0;0,2];选取初始点为,调用函数程序,得出最小极值点为,极小值为,在界面框中输入的程序如下:x0=[00]';x,val,k]=netwn('fun','gfun','Hess',x0)x=12val=-8k=1从结果可以看出迭代次数为次,如果选取不同的初值点则迭代次数不一样,但是极小值相同。下面看阻尼牛顿法:阻尼牛顿法:仿照书上编写程序并结合Armijo线性搜索步长,有算法程序如下:function[x,val,k]=znetwn(fun,gfun,Hess,x0)%功能:用牛顿法求解无约束问题:minf(x)7、%输入:x0是初始点,fun,gfun,Hess分别是求%目标函数值,梯度,Hesse矩阵函数%输出:x,val分别是近似点最优解和最优质,k是迭代次数maxk=100;rho=0.50;sigma=0.4;k=0;epsilon=1e-5;while(k
5、ess,x0);%计算Hess矩阵if(norm(gk)6、x)n=length(x);He=zeros(n,n);He=[8,0;0,2];选取初始点为,调用函数程序,得出最小极值点为,极小值为,在界面框中输入的程序如下:x0=[00]';x,val,k]=netwn('fun','gfun','Hess',x0)x=12val=-8k=1从结果可以看出迭代次数为次,如果选取不同的初值点则迭代次数不一样,但是极小值相同。下面看阻尼牛顿法:阻尼牛顿法:仿照书上编写程序并结合Armijo线性搜索步长,有算法程序如下:function[x,val,k]=znetwn(fun,gfun,Hess,x0)%功能:用牛顿法求解无约束问题:minf(x)7、%输入:x0是初始点,fun,gfun,Hess分别是求%目标函数值,梯度,Hesse矩阵函数%输出:x,val分别是近似点最优解和最优质,k是迭代次数maxk=100;rho=0.50;sigma=0.4;k=0;epsilon=1e-5;while(k
6、x)n=length(x);He=zeros(n,n);He=[8,0;0,2];选取初始点为,调用函数程序,得出最小极值点为,极小值为,在界面框中输入的程序如下:x0=[00]';x,val,k]=netwn('fun','gfun','Hess',x0)x=12val=-8k=1从结果可以看出迭代次数为次,如果选取不同的初值点则迭代次数不一样,但是极小值相同。下面看阻尼牛顿法:阻尼牛顿法:仿照书上编写程序并结合Armijo线性搜索步长,有算法程序如下:function[x,val,k]=znetwn(fun,gfun,Hess,x0)%功能:用牛顿法求解无约束问题:minf(x)
7、%输入:x0是初始点,fun,gfun,Hess分别是求%目标函数值,梯度,Hesse矩阵函数%输出:x,val分别是近似点最优解和最优质,k是迭代次数maxk=100;rho=0.50;sigma=0.4;k=0;epsilon=1e-5;while(k
此文档下载收益归作者所有