⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 example4_5.m

📁 MATLAB7辅助控制系统设计与仿真 第4章
💻 M
字号:
%第一步:写一个函数文件brownfg.m计算目标函数和函数梯度。
function [f,g] = brownfg(x,dummy)
% 计算目标函数值
n=length(x); y=zeros(n,1);
i=1:(n-1);
y(i)=(x(i).^2).^(x(i+1).^2+1) + (x(i+1).^2).^(x(i).^2+1);
f=sum(y);

% 计算函数梯度
if nargout > 1
i=1:(n-1); g = zeros(n,1);
g(i) = 2*(x(i+1).^2+1).*x(i).*((x(i).^2).^(x(i+1).^2))+ 2*x(i).*((x(i+1).^2).^(x(i).^2+1)).*log(x(i+1).^2);
g(i+1) = g(i+1) + 2*x(i+1).*((x(i).^2).^(x(i+1).^2+1)).* ... 
log(x(i).^2) +2*(x(i).^2+1).*x(i+1).* ((x(i+1).^2).^ (x(i).^2));
end

%第二步:调用求非线性最小函数fminunc。
fun = @brownfg;
% Get Hstr, structure of the Hessian
load brownhstr
% View the sparsity structure of Hs
spy(Hstr) tr
n = 1000;
xstart = -ones(n,1);
xstart(2:2:n,1) = 1;
options = optimset('GradObj','on','HessPattern',Hstr);
[x,fval,exitflag,output] = fminunc(fun,xstart,options);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -