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

📄 example4_4.m

📁 This complete matlab for neural network
💻 M
字号:
%写一个函数,它计算目标函数值、目标函数的梯度和稀疏三阶海色矩阵。
function [f,g,H] = brownfgH(x)

% 计算目标函数。
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
% 计算稀疏对称海色矩阵。
if nargout > 2
v=zeros(n,1);
i=1:(n-1);
v(i)=2*(x(i+1).^2+1).*((x(i).^2).^(x(i+1).^2))+4*(x(i+1).^2+1).*(x(i+1).^2).*(x(i).^2).* ... 
((x(i).^2).^((x(i+1).^2)-1))+ 2*((x(i+1).^2).^(x(i).^2+1)).*(log(x(i+1).^2));
v(i)=v(i)+4*(x(i).^2).*((x(i+1).^2).^(x(i).^2+1)).*((log(x(i+1).^2)).^2);
v(i+1)=v(i+1)+2*(x(i).^2).^(x(i+1).^2+1).*(log(x(i).^2))+... 
4*(x(i+1).^2).*((x(i).^2).^(x(i+1).^2+1)).*((log(x(i).^2)).^2)+2*(x(i).^2+1).*((x(i+1).^2).^(x(i).^2)); 
v(i+1)=v(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=zeros(n-1,1);
 v(i)=4*x(i+1).*x(i).*((x(i).^2).^(x(i+1).^2))+4*x(i+1).* ... 
(x(i+1).^2+1).*x(i).*((x(i).^2).^(x(i+1).^2)).*log(x(i).^2);
 v(i)=v(i)+4*x(i+1).*x(i).*((x(i+1).^2).^(x(i).^2)).*log(x(i+1).^2);
 v(i)=v(i)+4*x(i).*((x(i+1).^2).^(x(i).^2)).*x(i+1);
 v1=v;
 i=[(1:n)';(1:(n-1))'];
 j=[(1:n)';(2:n)'];
 s=[v0;2*v1];
H=sparse(i,j,s,n,n);
 H=(H+H')/2;
End

%调用求非线性最小函数fminunc。
n = 1000;
xstart = -ones(n,1);
xstart(2:2:n,1) = 1;
options = optimset('GradObj','on','Hessian','on');
[x,fval,exitflag,output] = fminunc(@brownfgh,xstart,options);

⌨️ 快捷键说明

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