cbroydeniterate.m

来自「基于Matlab的计算方法中常用的算法程序」· M 代码 · 共 26 行

M
26
字号
function s=CBroydenIterate(x,eps)
  % 逆Broyden秩1迭代法求非线性方程组
  % x为迭代初值,eps为允许误差值
  if nargin==1
      eps=1.0e-6;
  elseif nargin<1
      error
      return
  end
  x1=fx3(x); %第一次迭代
  b1=inv(dfx3(x));
  p=-b1*x1';
  x3=x'+p;
  d=fx3(x3');
  q=(d-x1)';
  b1=b1+(p-b1*q)*p'*b1*inv(p'*b1*q);
  while(norm(p)>=eps) %循环迭代
     % b1=b1+b3;
       x1=fx3(x3');
       p=-b1*x1';
       x3=x3+p;
       q=((fx3(x3'))-x1)';
       b1=b1+(p-b1*q)*p'*b1*inv(p'*b1*q);
   end
   s=x3;
   return

⌨️ 快捷键说明

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