私は、線形方程式の系を解くことを望んでいます、AX = B、ここでAは比較的大きな疎かつ正のJxJ行列です。 Bは次元JxSの列ベクトルではなく行列です。上記、しかしmatlabのブロック共役勾配のための前処理器
design=kron(speye(S),A)
X=pcg(design,B(:));
行列design
があまりにも単純であるため、私のために可能ではない。どこへ行く
一つの方法は、標準PCGルーチンがうまくいくように、例えば、この問題を「微調整」することですそのスパース性を利用した後でさえ、大きなものに保存される。よりよい解決策が行列design
を格納することなく、PCGを実行することであり、それは
[email protected](x) reshape(A*reshape(x,J,[]),[],1);
X=pcg(afun,B(:));
X=reshape(X,J,S);
ある今、私は私の質問に取得する:上記の記述されたコードに、前提条件(例えばichol
から)を可能にする方法がありますは追加の行列を格納していませんか?
X=pcg(afun,B(:));
はいつまでも収束するため、この場合は前提条件が役立つことがあります。
こんにちはアンダー、ご返信ありがとうございます。私はおそらく十分ではなかったでしょう。私の質問は、行列Lを格納せずに最初に説明したようなブロックの斜めのpcgフレームワークを渡すことができるかどうかです。私は元の投稿を修正したのでうまくいけばそれは明らかです... – kb87
@ kb87あなたがそれを保存しなければなりません。しかし、この関数を 'pcg(A、b、1e-8,100、ichol(A)、ichol(A) ')'と呼びますが、内部で保存されます。 –