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

📄 gong_e1.m

📁 最优化算法
💻 M
字号:
function [ output_args ] = Gong_E1( input_args )
%GONG_E Summary of this function goes here
%  Detailed explanation goes here
times=1;
circles=1;
x1=input('请输入初始点[x1,x2]=');
s=input('请输入精度s=');
xk=x1;
xk_1=x1;
d_x1=D_F(x1);%求出初始点导数
d_xk=d_x1;
d_xk_1=d_x1;
H1=eye(2);
Hk=eye(2);
Hk_1=eye(2);
if(norm(d_x1,2)<s)%求出向量d_x1的范数 
    fprintf('最小值为\n:') ;
     disp(x1);
     fprintf('迭代步数:\n');
     disp(circles);
     return;      
else
     while(norm(d_xk_1)>s)
          d_x1=D_F(x1);
          d_x1=d_x1.';
          z_1=-H1*d_x1;%求出搜索方向
          z_k=z_1;
          z_k=z_k.';
       while(times<2)
               circles=circles+1;         
               p=min_f3(xk,z_k);
           xk_1=xk+p.*z_k;
               d_xk_1=D_F(xk_1);  
               if(norm(d_xk_1)<s)
                  fprintf('最小值为\n:') ;
                  disp(xk_1);
              fprintf('迭代步数:\n');
                  disp(circles);
                  return;       
               else
                  times=times+1;
                  Sub_x=xk_1-xk;   %Sub_x为行向量;
                  T_subx=Sub_x.';
                  Sub_d=d_xk_1-d_xk;
                  T_subd=Sub_d.';    %转为列向量;
                  Yk=Hk*T_subd;
              T_Yk=Yk.';         %转为行向量;
                  Hk_1=Hk+(T_subx*Sub_x)./(Sub_x*T_subd)-(Yk*T_Yk)./(Sub_d*Yk);             
                  z_k=-Hk*(d_xk.');
                  z_k=z_k.';
              xk=xk_1;
                  d_xk=d_xk_1;
                  Hk=Hk_1;
               end
          end
          times=1;
          x1=xk_1;    
     end 
end   

⌨️ 快捷键说明

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