双共轭梯度算法的基本流程如下所示,具体如下所示:
1)、初步给定 x 0
2)、计算 r0=b-Ax 0 ; 令 r0=r0 ;
3)、循环体计算:
for i=1,2,…
if i=1
pi =ri -1 ; pi =ri -1 ;
else
pi =ri -1+βi-1 pi-1 ; pi =ri -1+βi-1 pi-1 ;
end
αi =ri -1Tri -1pi TApi
x i =x i -1+αi pi
if x i -x i-1 x i-1 <accuracy
break ;
end
ri =ri-1-αi Api ri =ri-1-αi ATpi
βi =ri Triri -1Tri -1
end
具体双共轭梯度算法的MATLAB核心代码如下所示:
仿真结果如下所示: