MATLAB实验三:Newton法程序设计
一、实验目的
掌握Hesse矩阵的计算方法和Newton法的基本思想及其迭代步骤;学会运用MATLAB编程实现常用优化算法;正确处理实验数据和分析实验结果及调试程序。
二、实验内容
(1)求解无约束优化问题
(3)完成Newton法(牛顿法)的MATLAB编程、调试;
(4)选取几个与实验二中相同的初始点,并给出相关实验结果的对比及分析(从最优解、最优值、收敛速度(迭代次数)等方面进行比较);
function[x,val,k]=dampnm(fun,gfun,Hess,x0) %功能:用牛顿法求解无约束问题:minf(x) %输入:x0是初始点,fun,gfun,Hess分别是求 %目标函数值,梯度,Hesse阵的函数 %输出:x,val分别是近似最优点和最优值,k是迭代次数. maxk=100; %给出最大迭代次数 rho=0.55;sigma=0.4; k=0; epsilon=1e-5; while(k<maxk) gk=feval(gfun,x0);%计算梯度 Gk=feval(Hess,x0); %计算Hesse阵 dk=-Gk\gk;%解方程组Gk*dk=-gk,计算搜索方向 if(norm(gk)<epsilon),break;end %检验终止准则 m=0;mk=0; while(m<20) %用Armijo搜索求步长 if(feval(fun,x0+rho^m*dk)<feval(fun,x0)+sigma*rho^m*gk'*dk) mk=m;break; end m=m+1; end x0=x0+rho^mk*dk; k=k+1; end x=x0; val=feval(fun,x);
结果
>> Untitled10 x = 1.0000 1.0000 val = 1.8955e-21 k = 22
作者:冰稀饭Aurora
出处:https://www.cnblogs.com/rsy-bxf150/p/17436772.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!