最优化方法及其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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值