主要内容gydF4y2Ba

最小化梯度和黑森gydF4y2Ba

这个例子展示了如何解决与显式非线性最小化问题三对角海赛矩阵gydF4y2Ba HgydF4y2Ba (gydF4y2Ba xgydF4y2Ba )gydF4y2Ba 。问题是要找到gydF4y2Ba xgydF4y2Ba 最小化gydF4y2Ba

fgydF4y2Ba (gydF4y2Ba xgydF4y2Ba )gydF4y2Ba =gydF4y2Ba ∑gydF4y2Ba 我gydF4y2Ba =gydF4y2Ba 1gydF4y2Ba ngydF4y2Ba - - - - - -gydF4y2Ba 1gydF4y2Ba (gydF4y2Ba (gydF4y2Ba xgydF4y2Ba 我gydF4y2Ba 2gydF4y2Ba )gydF4y2Ba (gydF4y2Ba xgydF4y2Ba 我gydF4y2Ba +gydF4y2Ba 1gydF4y2Ba 2gydF4y2Ba +gydF4y2Ba 1gydF4y2Ba )gydF4y2Ba +gydF4y2Ba (gydF4y2Ba xgydF4y2Ba 我gydF4y2Ba +gydF4y2Ba 1gydF4y2Ba 2gydF4y2Ba )gydF4y2Ba (gydF4y2Ba xgydF4y2Ba 我gydF4y2Ba 2gydF4y2Ba +gydF4y2Ba 1gydF4y2Ba )gydF4y2Ba )gydF4y2Ba ,gydF4y2Ba

在哪里gydF4y2Ba ngydF4y2Ba = 1000。gydF4y2Ba

辅助函数gydF4y2BabrownfghgydF4y2Ba在gydF4y2Ba这个例子gydF4y2Ba计算gydF4y2Ba fgydF4y2Ba (gydF4y2Ba xgydF4y2Ba )gydF4y2Ba ,其梯度gydF4y2Ba ggydF4y2Ba (gydF4y2Ba xgydF4y2Ba )gydF4y2Ba ,它的黑森gydF4y2Ba HgydF4y2Ba (gydF4y2Ba xgydF4y2Ba )gydF4y2Ba 。指定的gydF4y2BafminuncgydF4y2Ba解算器使用导数信息,设置gydF4y2BaSpecifyObjectiveGradientgydF4y2Ba和gydF4y2BaHessianFcngydF4y2Ba选择使用gydF4y2BaoptimoptionsgydF4y2Ba。用麻绳gydF4y2BafminuncgydF4y2Ba,你必须使用gydF4y2Ba“信赖域”gydF4y2Ba算法。gydF4y2Ba

选择= optimoptions (@fminunc,gydF4y2Ba“算法”gydF4y2Ba,gydF4y2Ba“信赖域”gydF4y2Ba,gydF4y2Ba…gydF4y2Ba“SpecifyObjectiveGradient”gydF4y2Ba,真的,gydF4y2Ba“HessianFcn”gydF4y2Ba,gydF4y2Ba“目标”gydF4y2Ba);gydF4y2Ba

设置参数gydF4y2BangydF4y2Ba到1000年,并设置初始点gydF4y2BaxstartgydF4y2Ba为奇怪的组件和1 + 1甚至组件。gydF4y2Ba

n = 1000;xstart =的(n - 1);xstart (2:2: n) = 1;gydF4y2Ba

找到的最小值gydF4y2Ba fgydF4y2Ba 。gydF4y2Ba

[x, fval exitflag、输出]= fminunc (@brownfgh、xstart选项);gydF4y2Ba
局部最小值。优化完成因为梯度的大小小于最优值的宽容。gydF4y2Ba

检查解决方案和解决方案的过程。gydF4y2Ba

disp (fval)gydF4y2Ba
2.8709 e-17gydF4y2Ba
disp (exitflag)gydF4y2Ba
1gydF4y2Ba
disp(输出)gydF4y2Ba
迭代:7 funcCount: 8 stepsize: 0.0039 cgiterations: 7 firstorderopt: 4.7948平台以及算法:“信赖域”的信息:“局部最小值发现....“constrviolation: []gydF4y2Ba

这个函数gydF4y2Ba fgydF4y2Ba (gydF4y2Ba xgydF4y2Ba )gydF4y2Ba 平方和的权力,因此,是负的。解决方案gydF4y2BafvalgydF4y2Ba几乎为零,这显然是一个最小值。出口标志gydF4y2Ba1gydF4y2Ba也表明,gydF4y2BafminuncgydF4y2Ba找到一个解决方案。的gydF4y2Ba输出gydF4y2Ba结构表明,gydF4y2BafminuncgydF4y2Ba只需要七个迭代实现解决方案。gydF4y2Ba

显示解决方案的最大和最小的元素。gydF4y2Ba

disp (max (x))gydF4y2Ba
1.1987平台以及gydF4y2Ba
disp (min (x))gydF4y2Ba
-1.1987平台以及gydF4y2Ba

解决方案是很近的所有元素gydF4y2Bax = 0gydF4y2Ba。gydF4y2Ba

Helper函数gydF4y2Ba

这段代码创建了gydF4y2BabrownfghgydF4y2Bahelper函数。gydF4y2Ba

函数gydF4y2Ba[f, g, H] = brownfgh (x)gydF4y2Ba% BROWNFGH非线性最小化问题(函数,其梯度gydF4y2Ba%,黑森)gydF4y2Ba%的文档的例子gydF4y2Ba% 1990 - 2008版权MathWorks公司。gydF4y2Ba%评估函数。gydF4y2Ban =长度(x);y = 0 (n, 1);我= 1:(n - 1);y (i) = (x (i) ^ 2) ^ (x (i + 1) ^ 2 + 1) + (x (i + 1)。^ 2)。^ (x (i) ^ 2 + 1);f = (y)总和;gydF4y2Ba%gydF4y2Ba%计算梯度。gydF4y2Ba如果gydF4y2Banargout > 1 i = 1: (n - 1);g = 0 (n, 1);g (i) = 2 * (x (i + 1)。^ 2 + 1)。* x (i)。* ((x (i) ^ 2) ^ (x (i + 1)。^ 2)) +gydF4y2Ba…gydF4y2Ba2 * x (i)。* ((x (i + 1)。^ 2)。^ (x (i) ^ 2 + 1))。*日志(x (i + 1)。^ 2);g (i + 1) = g (i + 1) +gydF4y2Ba…gydF4y2Ba2 * x (i + 1) * ((x (i) ^ 2) ^ (x (i + 1) ^ 2 + 1))。*日志(x (i)。^ 2) +gydF4y2Ba…gydF4y2Ba2 * (x(我)^ 2 + 1)。* x (i + 1) * ((x (i + 1)。^ 2)。^ (x(我)^ 2));gydF4y2Ba结束gydF4y2Ba%gydF4y2Ba%评估(稀疏对称)海赛矩阵gydF4y2Ba如果gydF4y2Banargout > 2 v = 0 (n, 1);我= 1:(n - 1);v (i) = 2 * (x (i + 1)。^ 2 + 1)。* ((x (i) ^ 2) ^ (x (i + 1)。^ 2)) +gydF4y2Ba…gydF4y2Ba4 * (x (i + 1) ^ 2 + 1)。* (x (i + 1)。^ 2)。* (x (i) ^ 2) * ((x (i) ^ 2) ^ ((x (i + 1)。^ 2) 1)) +gydF4y2Ba…gydF4y2Ba2 * ((x (i + 1)。^ 2)。^ (x (i) ^ 2 + 1))。*(日志(x (i + 1)。^ 2));v (i) =(我)+ 4 * (x (i) ^ 2) * ((x (i + 1)。^ 2)。^ (x (i) ^ 2 + 1))。*((日志(x (i + 1)。^ 2)) ^ 2);v (i + 1) = (i + 1) +gydF4y2Ba…gydF4y2Ba2 * (x (i) ^ 2) ^ (x (i + 1) ^ 2 + 1)。*(日志(x(我)^ 2))+gydF4y2Ba…gydF4y2Ba4 * (x (i + 1)。^ 2)。* ((x (i) ^ 2) ^ (x (i + 1) ^ 2 + 1))。*((日志(x(我)^ 2))^ 2)+gydF4y2Ba…gydF4y2Ba2 * (x(我)^ 2 + 1)。* ((x (i + 1)。^ 2)。^ (x(我)^ 2));v (i + 1) = (i + 1) + 4 * (x (i) ^ 2 + 1)。* (x (i + 1)。^ 2)。* (x (i) ^ 2) * ((x (i + 1)。^ 2)。^ (x (i) ^ 2 - 1));v0 = v;v = 0 (n - 1, 1);v (i) = 4 * x (i + 1)。* x (i)。* ((x (i) ^ 2) ^ (x (i + 1)。^ 2)) +gydF4y2Ba…gydF4y2Ba4 * x (i + 1) * (x (i + 1) ^ 2 + 1)。* x (i)。* ((x (i) ^ 2) ^ (x (i + 1)。^ 2))。*日志(x(我)^ 2);v (i) = (1) + 4 * x (i + 1)。* x (i)。* ((x (i + 1)。^ 2)。^ (x(我)^ 2)。*日志(x (i + 1)。^ 2);v (i) = (i) + 4 * x (i)。* ((x (i + 1)。^ 2)。^ (x(我)^ 2)。* x (i + 1);v1 = v;i = [(1: n)”; (1: (n - 1)));j = [(1: n); (2: n));s = (v0; 2 * v1);H =稀疏(i, j s n, n);H = (H + H) / 2;gydF4y2Ba结束gydF4y2Ba结束gydF4y2Ba

相关的话题gydF4y2Ba