tangle1984 发表于 2006-5-25 12:15

求高手指正用matlab求解AX=b的预处理公轭梯度法

求解的问题是Ax=b,其中A为28*792,b为28*1,解x为792*1的矩阵。
防真结果出现的问题是图象质量结果不理想,而且时间要得比没预处理的时间更长!
高手指教啊,请发到tanger1984@163.com或者就在论坛回帖指教。十万火急!
load F:\biyesheji\data2\zxL\da_ss01%Initialization
load F:\biyesheji\data2\zxL\da_cnij1.txt
J=ss01';
A=J'*J;
I=eye(792,792);
=svd(A+0.5*I);
=size(S);
M=zeros(n,m);
for i=1:n
if S(i,i)>0.01
M(i,i)=1/S(i,i);
end
end %%%%%%%%%%%%%%得到预处理矩阵M
max_it=40;
b=J'*da_cnij1;
x=zeros(length(J),1);
r=b;
z=M*b;
p=z;
error=norm(r);
resvec(1)=error;
tic
% Begin iteration
for iter=1:max_it
ap=A*p;
normm=r'*z;
alaf=normm/(ap'*p) ;
x=x+alaf*p; %Update solution
r=r-alaf*ap;%compute residual
z=M*r;
error=norm(z); %check convergence
resvec=;
beta=(r'*z)/normm;
p=z+beta*p;
end
toc
save F:\biyesheji\data2\CL\tangle.txt x -ascii

tangle1984 发表于 2006-5-25 18:54

沉了,郁闷,有没有人有这个好的程序
给我发下啊
页: [1]
查看完整版本: 求高手指正用matlab求解AX=b的预处理公轭梯度法