function [iter,normr]=HSS(alpha,nelemi,nelemj)
A=CDEquation(nelemi,nelemj,1,1);
n=length(A);
H=1/2*(A+A');
S=1/2*(A-A');
I=speye(n);
M1=alpha*I+H;
M1ni=I/M1;
N1=alpha*I-S;
M2=alpha*I+S;
N2=alpha*I-H;
%M=1/(2*alpha)*(alpha*I+H)*(alpha*I+S);
%N=1/(2*alpha)*(alpha*I-H)*(alpha*I-S);
b=ones(n,1);
x=sparse(n,1);
r=b-A*x;
normr = norm(r);
iter=0;
maxit=10000;
tol=1e-05;
tic
while normr>=tol
x=N1*x+b;
x=M1ni*x;
x=N2*x+b;
x=M2\x;
iter=iter+1;
if(iter>=maxit)
disp('Warning: 迭代次数太多,可能不收敛!');
return;
end
r=b-A*x;
normr = norm(r);
end
time=toc
normb=norm(b);
Re=normr/normb
评论2