我想解决一个线性方程组,AX = B,其中A是稀疏和正定的。 B是矩阵而不是列向量。所以我必须解决多个线性方程组(有多个右侧)。如何在Matlab中使用共轭梯度?
我可以使用适用于列向量B的那个。
答案 0 :(得分:2)
供应B是列向量B(:)而不是。此外,以功能形式提供A的有效实现,
[ma,na]=size(A);
[mb,nb]=size(B);
afun=@(x) reshape(A*reshape(x,na,[]),[],1);
X=pcg(afun,B(:));
X=reshape(X,na,nb);
答案 1 :(得分:2)
求解线性方程组AX = B,其中B是矩阵,将导致X也是矩阵。但是,X列将成为线性系统的解决方案,其中右侧是B的相应列。
所以,如果你已经有一个共轭梯度函数可以处理列向量B(在Matlab中是x = pcg(A,b);
),那么你可以找到解决方案,其中B是一个矩阵,通过循环遍历列:
X = zeros(size(A,2), size(B,2));
for i=1:size(B,2)
X(:,i) = pcg(A,B(:,i));
end