收藏 分销(赏)

拟牛顿法matlab.doc

上传人:快乐****生活 文档编号:10697563 上传时间:2025-06-10 格式:DOC 页数:2 大小:14.06KB 下载积分:5 金币
下载 相关 举报
拟牛顿法matlab.doc_第1页
第1页 / 共2页
拟牛顿法matlab.doc_第2页
第2页 / 共2页
本文档共2页,全文阅读请下载到手机保存,查看更方便
资源描述
拟牛顿法的matlab实现(转)   2011-03-16 15:07:04|  分类: matlab |  标签: |字号大中小 订阅 牛顿法成功的关键是利用了Hesse矩阵提供的曲率信息,但计算Hesse矩阵工作量大,并且有的目标函数的Hesse矩阵很难计算,甚至不好求出。针对这一问题,拟牛顿法比牛顿法更为有效。这类算法仅利用目标函数值和一阶导数的信息,构造出目标函数的曲率近似,使方法具有类似牛顿法的收敛速度快的优点。 函数名:quasi_Newton(f,x0,error), 参数:f:待求梯度函数   x0:初始点   error:允许误差 主程序: function A=quasi_Newton(f,x0,error)      [a,b]=size(x0);      G0=eye(b);      initial_gradient=gradient_my(f,x0,b);      norm0=0;      norm0=initial_gradient*initial_gradient';      syms step_zzh;      A=[x0];      search_direction=-initial_gradient;      x=x0+step_zzh*search_direction;      f_step=subs(f,findsym(f),x);      best_step=golden_search(f_step,-15,15);      x_1=x0+best_step*search_direction;      A=[A;x_1];      k=1; while norm0>error      ox=x_1-x0;      og=gradient_my(f,x_1,b)-initial_gradient;      G1=G0+(ox'*ox)/(ox*og')-(G0*og'*og*G0)/(og*G0*og');      if  k+1==b          new_direction=-gradient_my(f,x_1,b);      else          new_direction=-(G1*(gradient_my(f,x_1,b))')';      end      x=x_1+step_zzh*new_direction;      f_step=subs(f,findsym(f),x);      best_step=golden_search(f_step,-15,15)      x_2=x_1+best_step*new_direction      A=[A;x_2];      initial_gradient=gradient_my(f,x_1,b);      norm0=initial_gradient*initial_gradient';      x0=x_1;x_1=x_2;      G0=G1;      k=k+1; end
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服