matlab最优化-牛顿法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 [x1 k]=newton(x1,j)
%x1为初始点 x1=[8,8]';j=1e-10;
hs=inline('(x-1)^4+y^2');
ezcontour(hs,[-10 10 -10 10]);hold on;
syms x y
f=(x-1)^4+y^2;
grad1=jacobian(f,[x,y]);%求梯度
grad2=jacobian(grad1,[x,y]);%求Hesse矩阵
k=0;
while 1
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; [x1 k]=newton(x1,j) x1 = 1.0000 k =59 四、体会 五、指导教师评语及成绩 评语: 成绩: 指导教师签名:批阅时间: