第一范文网 - 专业文章范例文档资料分享平台

优化方法上机作业

来源:用户分享 时间:2025/5/18 3:47:15 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

第一题(牛顿法和不精确一维搜索)

牛顿法: syms x1 x2;

f=(x2-(x1)*(x1))^2+(1-x1)^2; v=[x1,x2];

df=jacobian(f,v); df=df.';

G=jacobian(df,v);

epson=1e-12;x0=[0,1]';g1=subs(df,{x1,x2},{x0(1,1),x0(2,1)});G1=subs(G,{x1,x2},{x0(1,1),x0(2,1)});k=0;mul_count=0;sum_count=0; 文档来自于网络搜索 mul_count=mul_count+12;sum_count=sum_count+6; while(norm(g1)>epson) p=-G1\\g1; x0=x0+p;

g1=subs(df,{x1,x2},{x0(1,1),x0(2,1)}); G1=subs(G,{x1,x2},{x0(1,1),x0(2,1)}); k=k+1;

mul_count=mul_count+16;sum_count=sum_count+11; end; k x0

mul_count sum_count 运行结果:

k = 9 x0 = 1 1

mul_count = 156

sum_count = 105

不精确一维搜索: fun1.m文件

function f=fun1(x)

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

gfun1.m文件

1 / 13

function gf = gfun1(x)

gf=[2*x(1)*(x(1)^2-x(2))+2*(x(1)-1),2*(x(2)-x(1)^2)]';文档来自于网络搜索 wolfepowell.m文件

function [k,m,opt,x]=wolfepowell(xk,sk) max=1000;

c1=0.1; c2=0.6;a=0;b=inf;dk=0.2;m=0; while(m<=max)

if (fun1(xk)-fun1(xk+sk*dk)<-c1*dk*gfun1(xk)'*sk) b=dk;dk=(dk+a)/2; elseif

(fun1(xk)-fun1(xk+sk*dk)>=-c1*dk*gfun1(xk)'*sk)&&(gfun1(xk+sk*dk)'*sk

if 2*dk<(dk+b)/2 dk=2*dk; else

dk=(dk+b)/2; end else

mk=m; break; end

m=m+1; end

m=mk;k=dk;x=xk+sk*dk;opt=fun1(x); 运行结果:

>> xk=[0,1]';sk=[1,-1]';

[k,m,opt,x]= wolfepowell(xk,sk) k =

0.8000 m = 2 opt =

1.0080 x =

0.8000

0.2000

第二题(共轭梯度法)

frcg.m文件

function [x,val,k]=frcg(fun,gfun,x0) maxk=5000; rho=0.6;sigma=0.4;

2 / 13

k=0; epsilon=1e-4; n=length(x0); while(k

g=feval(gfun,x0);

itern=k-(n+1)*floor(k/(n+1)); itern=itern+1; if(itern==1) d=-g; else

beta=(g'*g)/(g0'*g0);

d=-g+beta*d0; gd=g'*d; if(gd>=0.0)

d=-g; end end

if(norm(g)

if(feval(fun,x0+rho^m*d)

m=m+1; end

x0=x0+rho^mk*d; val=feval(fun,x0); g0=g; d0=d; k=k+1; end x=x0;

val=feval(fun,x);

fun.m文件

function f=fun(x)

f=x(1)^2-2*x(1)*x(2)+2*x(2)^2+x(3)^2+x(4)^2-x(2)*x(3)+2*x(1)+3*x(2)-x(3);文档来自于网络搜索

gfun.m文件

function gf=gfun(x)

gf=[2*x(1)-2*x(2)+2, -2*x(1)+4*x(2)+3,2*x(3)-x(2)-1,2*x(4)]';文档来自于网络搜索

运行结果: >>x0=[0 0 0 0]';

[x,val,k]=frcg('fun','gfun',x0)

3 / 13

x =

-3.4064 -2.6515 -0.7032 0 val =

-7.8338 k =

5000

第三题(BFGS法、最速下降法和牛顿法)

fun3.m文件

function f=fun3(x)

f=(x(1)-1)^2+5*(x(2)-x(1)^2)^2;

gfun3.m文件

function gf = gfun3(x)

gf=[20*x(1)*(x(1)^2-x(2))+2*(x(1)-1),10*(x(2)-x(1)^2)]';文档来自于网络搜索

Hessen.m文件

function Hess=Hessen(x)

Hess=[60*x(1)^2-20*x(2)+2,(-20)*x(1);(-20)*x(1),10];文档来自于网络搜索

Steepest.m文件

function [m,opt,x] = Steepest(xk) m=0;Eps=1.0e-4;max=1000; while(m

dk=wolfepowell(xk,sk); x=xk+dk*sk; g0=gfun3(x);

if(norm(g0)<=Eps) break; else xk=x; end m=m+1; end mk=m; x=xk;

opt=fun3(xk);

4 / 13

newton.m文件

function [x,opt,mk] = newton(xk) m=0;Eps=1e-4;max=100;H=[1,0;0,1]; while(m

dk=wolfepowell(xk,sk); x=xk+dk*sk; g0=gfun3(x);

if(norm(g0)<=Eps) break; else xk=x; end m=m+1; end mk=m; x=xk;

opt=fun3(xk);

bfgs.m文件

function [x,opt,mk] = bfgs(xk)

m=0;Eps=1e-4;max=100;H=[1,0;0,1]; while(m

dk=wolfepowell(xk,sk); x=xk+dk*sk; g0=gfun3(x);

if(norm(g0)<=Eps) break; else

H=H+((1+((g0-g)'*H*(g0-g))/((x-xk)'*(g0-g)))*(x-xk)*(x-xk)'-H*(g0-g)*(x-xk)'-(x-xk)*(g0-g)'*H)/((x-xk)'*(g0-g));文档来自于网络搜索 xk=x; end m=m+1; end mk=m; x=xk;

5 / 13

搜索更多关于: 优化方法上机作业 的文档
优化方法上机作业.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c2snor76eed1jxus0hkxz44s0w0d4pn00w2e_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top