2014-01-07 1 views
4

선형 방정식 AX = B의 시스템을 풀고 싶습니다. 여기서 A는 희소하고 양수입니다. B는 열 벡터가 아니라 행렬입니다. 그래서 여러 선형의 방정식을 여러개의 우변으로 풀어야합니다. Matlab에서 이것을 위해 어떻게 공액 그래디언트를 사용할 수 있습니까?matlab에서 블록 공액 그라디언트

I 열에 벡터 B.

+0

[당신의 관련 포스트] (http://stackoverflow.com/questions에서 언급 한 바와 같이 : 매트랩) x = pcg(A,b); 인에 B는 열을 통해 반복에 의한 행렬이고, 당신은 경우에 해결책을 찾을 수 있습니다/21366379/issues-with-using-pcg), A가 MLDIVIDE에 의해 처리되기에 충분히 작고 B가 많은 열을 가지고있을 때 이것을하지 말아야합니다. MLDIVIDE가 더 효율적입니다. –

답변

2

공급 B 작동 하나를 사용할 수는 (열 벡터이다 : B 대신. 또한, B는 행렬 X는 매트릭스 당할 것이다 방정식 AX = B의 선형 시스템을 해결

[ma,na]=size(A); 
[mb,nb]=size(B); 
[email protected](x) reshape(A*reshape(x,na,[]),[],1); 

X=pcg(afun,B(:)); 

    X=reshape(X,na,nb); 
2

기능성 형태의 효율적인 구현을 제공. 그러나 X의 열은 오른쪽의 열이 B의 해당 열인 선형 시스템의 해가됩니다.

따라서 이미 열 벡터 B에서 작동하는 공액 기울기 기능이있는 경우 (

X = zeros(size(A,2), size(B,2)); 
for i=1:size(B,2) 
    X(:,i) = pcg(A,B(:,i)); 
end