資源簡介
matlab預處理共軛梯度法求解線性方程組的函數文件
代碼片段和文件信息
%預處理共軛梯度法求解線性方程組
function?NewX=spcg(AbTimeserrtolmode)
%A??系數矩陣
%b??右邊向量
%Times??最大迭代次數
%errtol??誤差終止條件
%mode=1時,輸入的A和b是復數矩陣
if(mode==1)
????A=[real(A)?-imag(A);imag(A)?real(A)];
????b=[real(b);imag(b)];
end
n=size(A1);
%[E?che]=chol(A);
x=ones(n1);%?x的初始值
NewX=zeros(n1);
%?對A進行分解
D=diag(diag(A));
U=D-triu(A);
L=D-tril(A);
w=1;
M=(D-w*L)*inv(D)*(D-w*U)/(w*(2-w));%計算ssor預處理矩陣M
%ssor預處理共軛梯度法
r=b-A*x;
invm=inv(M);
z=invm*r;
p=z;
x0=x-1;
評論
共有 條評論