练习题三
1、用0.618法求解问题
min?(t)?t3?2t?1
t?0的近似最优解,已知?(t)的单谷区间为[0,3],要求最后区间精度??0.5。 答:t=0.8115;最小值-0.0886.(调用golds.m函数)(见例题讲解5) 2、求无约束非线性规划问题
22min f(x1,x2,x3)=x12?4x2?x3?2x1
的最优解
解一:由极值存在的必要条件求出稳定点:
?f?f?f?2x1?2,?8x2,?2x3,则由?f?x??0得x1?1,x2?0,x3?0 ?x1?x2?x3再用充分条件进行检验:
?2f?2f?2f?2f?2f?2f?0,?0 ?2,2?8,2?2,?0,
?x1?x3?x2?x3?x12?x2?x3?x1?x2?200???即?2f??080?为正定矩阵得极小点为x*?(1,0,0)T,最优值为-1。
?002???解二:目标函数改写成
22 min f(x1,x2,x3)=(x1?1)2?4x2?x3?1
易知最优解为(1,0,0),最优值为-1。
3、用最速下降法求解无约束非线性规划问题。
2 minf(X)?x1?x2?2x12?2x1x2?x2其中X?(x1,x2)T,给定初始点X0?(0,0)T。
??f(x)???(x)??1?4x?2x?112???解一:目标函数f(x)的梯度?f(x)?? ???f(x)???1?2x1?2x2???(x)??2??1???1??f(X(0))???令搜索方向d(1)???f(X(0))???再从X(0)出发,沿d(1)方向作一维寻
??1??1??0???1?????(0)(1)?优,令步长变量为,最优步长为?1,则有X??d??????????
?0??1????故f(x)?f(X(0)??d(1))?(??)???2(??)2?2(??)???2??2?2???1(?)
?0???1???1?令?1'(?)?2??2?0可得?1?1 X(1)?X(0)??1d(1)????????? 求出X(1)点之后,
?0??1??1???1??1?与上类似地,进行第二次迭代:?f(X(1))??? 令d(2)???f(X(1))???
??1??1?令步长变量为?,最优步长为?2,则有
X故
(1)??d(2)??1??1????1??????????? 11??1??????f(x)?f(X(1)??d(2))?(??1)?(??1)?2(??1)2?2(??1)(??1)?(??1)2?5?2?2??1??2(?)???0.?811?1(2)(1)(?2?)1?令?(?)?10??2?0可得 ?2? X?X??2d???????? ?5111.25??????'2?0.2?(2)?f(X)?0.2828 此时所达到的精度?f(X(2))?????0.2???1?本题最优解X???,f(X?)??1,25
?1.5??
解二:利用matlab程序求解
首先建立目标函数及其梯度函数的M文件 function f=fun(x)
f=x(1)-x(2)+2*x(1)*x(1)+2*x(1)*x(2)+x(2)*x(2); function g=gfun(x)
g=[1+4*x(1)+2*x(2),-1+2*x(1) +2* x(2) ]; 调用grad.m文件 x0=[0,0];
[x,val,k]=grad('fun','gfun',x0)
结果
x=[ -1.0000 ,1.5000] val= -1.2500 k=33
即迭代33次的到最优解x=[ -1.0000 ,1.5000];最优值val= -1.2500。
4、试用Newton法求解第3题。 解一:计算目标函数的梯度和Hesse阵
??f(x)???(x)??1?4x?2x?112???目标函数f(x)的梯度?f(x)?? ???f(x)???1?2x1?2x2???(x)??2??42??0.5?0.5??1,其逆矩阵为 ?f(X)???GG????1??22???0.52?0.5?0.5?TTT X(1)?X(0)?G?1?f(X(0))??0,0???1,?1??1,1.5??????0.51??计算?f(X(1))?0。
??1?本题最优解X????,f(X?)??1,25
?1.5?解二:除了第3题建立两个M文件外,还需建立Hesse矩阵的M文件 利用matlab程序求解
首先建立目标函数及其梯度函数的M文件 function f=fun(x)
f=x(1)-x(2)+2*x(1)*x(1)+2*x(1)*x(2)+x(2)*x(2); function g=gfun(x)
g=[1+4*x(1)+2*x(2),-1+2*x(1) +2* x(2) ]; function h=hess(x) g=[4 2;2 2 ]; 调用newton.m文件
x0=[0,0];
[x,val,k]=newton('fun','gfun','hess',x0) 结果
x=[ -1.0000 ,1.5000] val= -1.2500 k=1
5、用Fletcher—Reeves法求解问题
2 minf(X)?x12?25x2其中X?(x1,x2)T,要求选取初始点X0?(2,2)T,??10?6。 解一:
?20??x1??20?1,r??f(x)?(2x1,50x2)T. ?f(x)?(x1,x2)?,G??????2?050??050??x2?第一次迭代:令p0??r0?(?4,?100)T,
?4?(4,100)?100?r0Tr01???0?T?? p0Gp0?20???4?50(?4,?100)?????050???100?即,X(1)?X(0)??0p0?(1.92,0)T 第二次迭代:
||r1||23,p1??r1??0p0?(?3.846,?0.15)T ?r1?(3.84,0),?0?2||r0||2000T?3.84?(3.84,0)?0?r1Tr1???1?T??0.4802
p1Gp1?20???3.846?(?3.846,?0.15)?????050???0.15?X(2)?X(1)??1p1?(0.0732,?0.072)T
第三次迭代:
r2?(0.1464,?3.6)T……(建议同学们自己做下去,注意判别rk??)
解二:利用matlab程序求解
首先建立目标函数及其梯度函数的M文件 function f=fun(x) f=x(1)^2+25* x(2)*x(2); function g=gfun(x) g=[2*x(1), 50* x(2) ]; 调用frcg.m文件 x0=[2,2]’;epsilon=1e-6;
[x,val,k]=frcg('fun','gfun',x0, epsilon) 结果
x = 1.0e-006 *[ 0.2651, 0.0088] val =7.2182e-014 k = 61
6、试用外点法(二次罚函数方法)求解非线性规划问题
2?minf(X)?(x1?2)2?x2?? ?s.t.g(X)?x2?1?0其中X?(x1,x2)?R2
?解:设计罚函数 P(x,M)f(X?)M*[g(X) ]采用Matlab编程计算,结果x=[1 0];最优结果为1。(调用waidianfa.m) 7、用内点法(内点障碍罚函数法)求解非线性规划问题:
?min(x1?1)3?x2?tx1?1?0?s.. ?x2?0?解:容易看出此问题最优解为x=[1 0];最优值为8.
)1(x?31)?2x?r(1x?(给出罚函数为 P(x,r?1/?1) 2x1/)令
?P(x,r)rP(x,r)r?3(x1?1)2??0?1??0 ;2x1x2(x1?1)2x21/2???1?(1?r/3)?从而当r?0时,x(r)???????x
?r??0???(建议同学自己编程序计算)
22??minf(X)?x1?x28、用乘子法求解下列问题??
h(X)?x?x?2?0??112