conjgrad.m

来自「麻省理工ComputationalMethod」· M 代码 · 共 32 行

M
32
字号
function xs=conjgrad(A,b,x0)
%CONJGRAD Conjugate Gradient (educational)

r0=b-A*x0;
x=x0;
r=r0;

ps=[];
xs=x;
i=0;
while norm(r)>norm(r0)*1e-3
  i=i+1;

  p0=r;
  p=p0;

  if i>1
    pk=rold;
    beta=-(p0'*A*pk)/(pk'*A*pk);
    p=p+beta*pk;
  end
  
  Ap=A*p;
  alpha=(p'*r)/(p'*Ap);
  x=x+alpha*p;
  rold=r;
  r=r-alpha*Ap;
 
  xs=[xs,x];
  ps=[ps,p];
end

⌨️ 快捷键说明

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