最优化方法及其Matlab程序设计习题

题目:课后练习3-1

用最速下降法求在这里插入图片描述
的极小值。
根据课本的算法3.1,建立grad.m文件。

function [x,val,k] = grad(fun,gfun,x0)
maxk = 5000;
rho = 0.5;sigma = 0.4;
k = 0; epsilon = 1e-5;
while(k<maxk)
	g = feval(gfun,x0)
	d =-g;
	if(norm(d)<epsilon),break;end
	m=0;mk=0;
	while(m<20)
		if(feval(fun,x0+rho^m*d)<feval(fun,x0)+sigma*rho^m*g'*d)
			mk = m; break;
			end
			m = m+1;
			
		end
		x0 = x0+rho^mk*d;
		k = k+1;
	end
	x= x0;
	val = feval(fun,x0);

然后根据题目所给出的函数,给出这个函数的具体形式fun.m和梯度gfun.m
fun.m:

 function f = fun(x)
 f = 3*x(1)^2 + 2*x(2)^2-4*x(1)-6*x(2);

gfun.m:

function g = gfun(x)
g =[6*x(1)-4,4*x(2)-6]';

一切完成就绪之后,打开Octave,并把这三个文件所在的目录加到Octave的工作目录(可以参考以下这篇博客)。接着运行命令:


代表着输出x1,x2。
接着直接调用最速下降法的函数:

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

运行结果:
在这里插入图片描述
最小值约在(0.6667,1.5)处取到,为-5.8333。

发布了38 篇原创文章 · 获赞 7 · 访问量 8761

猜你喜欢

转载自blog.csdn.net/weixin_44617722/article/details/103243636