matlab最优化-牛顿法

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

实验报告日期:2013年6月2日

一、实验概述

【实验名称】:牛顿法

【实验性质】:验证性

【实验目的及要求】:配合课堂教学,培养学生动手能力,根据牛顿法求极小值的思想设计程序。

【基本原理】:牛顿法的迭代公式:)()(12)()1(k k k k x f x f x x ∇∇-=-+,其中)(2k x f k

∇是f(x)在k x 处的Hesse 矩阵。【实施环境】:

MATLAB 7.0

二、实验内容

【项目内容及要求】

用牛顿法求解以下问题:

min z=(x1-1)4+x22

三、实验过程

【实验操作步骤】

function [x1k]=newton(x1,j)

%x1为初始点x1=[8,8]';j=1e-10;

hs=inline('(x-1)^4+y^2');

ezcontour(hs,[-1010-1010]);hold on;

syms x y

f=(x-1)^4+y^2;

grad1=jacobian(f,[x,y]);%求梯度

grad2=jacobian(grad1,[x,y]);%求Hesse矩阵

k=0;

while1

grad1z=subs(subs(grad1,x,x1(1)),y,x1(2));%求梯度值

grad2z=subs(subs(grad2,x,x1(1)),y,x1(2));%求Hesse矩阵x2=x1-inv(grad2z)*(grad1z');%牛顿迭代公式

if norm(x1-x2)

break;

else

plot([x1(1),x2(1)],[x1(2),x2(2)],'-r*');

k=k+1;x1=x2;

end

end

【实验结果】:

x1=[8,8]';j=1e-10;

[x1k]=newton(x1,j)

x1=1.0000

k=59

四、体会

五、指导教师评语及成绩

评语:

成绩:

指导教师签名:批阅时间:

相关文档
最新文档