您的当前位置:首页正文

最优化计算方法课程设计4

2022-08-29 来源:步旅网
中国矿业大学(北京)

最优化计算方法课程设计

2015.12.7

中国矿业大学(北京)

2015年11月30日 上机题目 题目21

编写程序实现多元函数的牛顿法。

编写函数 [x,minf]=minNewton(f,x0,var,eps). 其中f为目标函数,x0为初始点,

var自变量向量,eps为算法终止的精度。 用牛顿法求解多维无约束优化问题minf(x)。 算法为:

function [x,minf]=minNewton(f,x0,var,eps) xk=x0; k=0;

df=jacobian(f,var); ddf=jacobian(df,var); k1=0;

kmax=10000; while(k1if(norm(subs(df,var,xk))<=eps) x=double(xk);

minf=double(subs(f,var,xk)); break; end

dk=-inv(subs(ddf,var,xk))*subs(df,var,xk)'; xk=xk+dk'; k=k+1; k1=k1+1; end

if(k1>=kmax) x='error'; minf='error'; end 题目22

用牛顿法求解无约束二元函数f(t,s)=(t-4)2+(s+2)2+1的极小值,初始点取

x0=(0,0)T。

在Matlab输入如下: clear clc

syms t; syms s;

f=(t-4)^2+(s+2)^2+1; x0=[0,0]; var=[t,s]; eps=0.01;

1

中国矿业大学(北京)

[x,minf]=minNewton(f,x0,var,eps) 结果为: x =[4 ,-2] minf = 1

题目23

编写程序实现多元函数的修正牛顿法。

编写函数 [x,minf]=modifiedNewton(f,x0,var,eps). 其中f为目标函数,x0为初始点,

var自变量向量,eps为算法终止的精度。

用修正牛顿法求解多维无约束优化问题minf(x)。 算法为:

function [x,minf]=modifiedNewton(f,x0,var,eps) xk=x0; k=0;

df=jacobian(f,var); ddf=jacobian(df,var); syms alpha1; k1=0;

kmax=10000; while(k1if(norm(subs(df,var,xk))<=eps) x=double(xk);

minf=double(subs(f,var,xk)); break; end

dk=-inv(subs(ddf,var,xk))*subs(df,var,xk)';

[alphak,temp]=Goldstein(subs(f,var,xk+alpha1*dk'),inf,0.4,0.75,2,eps,alpha1); if(alphak=='error') x='error'; minf='error'; break; end

xk=xk+alphak*dk'; k=k+1; k1=k1+1; end

if(k1>=kmax) x='error'; minf='error'; end 题目24

2

中国矿业大学(北京)

用修正牛顿法求解无约束二元函数f(t,s)=(t-4)2+(s+2)2+1的极小值,初始点取x0=(0,0)T。

在Matlab输入如下: clear clc

syms t; syms s;

f=(t-4)^2+(s+2)^2+1; x0=[0,0]; var=[t,s]; eps=0.01;

[x,minf]=modifiedNewton(f,x0,var,eps) 结果为:

x = [3.9958 ,-1.9979] minf =1.0000

题目25

编写程序实现多元函数的DFP法。 编写函数 [x,minf]=QNDFP(f,x0,var,eps). 其中f为目标函数,x0为初始点,

var自变量向量,eps为算法终止的精度。 用DFP法求解多维无约束优化问题minf(x)。 算法为:

function [x,minf]=QNDFP(f,x0,var,eps) xk=x0; k=0;

n=length(xk); Hk=eye(n); syms alpha1;

df=jacobian(f,var); k1=0;

kmax=1000; s=2;

while(k1<=kmax) if(s==2)

if(norm(subs(df,var,xk))<=eps) x=double(xk);

minf=double(subs(f,var,xk)); break; else

s=3; end

3

中国矿业大学(北京)

end

if(s==3)

dk=-Hk*subs(df,var,xk)'; k=0; s=4; end

if(s==4)

[alphak,temp]=Goldstein(subs(f,var,xk+alpha1*dk'),inf,0.4,0.75,2,eps,alpha1);

if(alphak=='error') x='error'; minf='error'; break; end

tempxk=xk;

xk=xk+alphak*dk'; s=5; end

if(s==5)

if(norm(subs(df,var,xk))<=eps) x=double(xk);

minf=double(subs(f,var,xk)); break; else

s=6; end end

if(s==6)

if(k==n+1) s=3; else

s=7; end end

if(s==7)

sk=xk-tempxk;

yk=subs(df,var,xk)-subs(df,var,tempxk);

Hk=Hk+sk'*sk/dot(sk,yk)-Hk*yk'*yk*Hk/dot(yk*Hk,yk); dk=-Hk*subs(df,var,xk)'; s=4; end

k1=k1+1;

4

中国矿业大学(北京)

end

if(k1>=kmax) x='error'; minf='error'; end 题目26

用DFP法求解无约束二元函数f(t,s)=t2-ts+s2+2的极小值,初始点取

x0=(-4,6)T。

在Matlab输入如下: clear clc

syms t; syms s;

f=t^2-t*s+s^2+2; x0=[-4,6]; var=[t,s]; eps=0.01;

[x,minf]=QNDFP(f,x0,var,eps) 结果为:

x =[0.0010, 0.0028] minf =2.0000

5

因篇幅问题不能全部显示,请点此查看更多更全内容