matlab中的块共轭梯度



我想求解一个线性方程组,AX=B,其中a是稀疏的,是正定的。B是一个矩阵,而不是列向量。所以我必须求解多个线性方程组(有多个右手边)。如何在Matlab中使用共轭梯度?

我可以使用适用于列向量B.的

Supply 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);

求解线性方程组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

相关内容

  • 没有找到相关文章

最新更新