8

私は現在、大規模なスパース線形代数問題用の C++ ベースのライブラリに取り組んでいます (はい、そのようなライブラリが多数存在することは知っていますが、主に反復ソルバー、スパース ストレージ コンテナーなどについて学ぶために独自のライブラリを作成しています ..)。

私は自分のソルバーを自分の他のプログラミング プロジェクトで使用するところまで来ており、自分のものではない問題に対してソルバーをテストしたいと考えています。主に、正定である対称スパース システムに対してテストすることを検討しています。次のようなシステム マトリックスのソースがいくつか見つかりました。

Matrix Market UF スパース マトリックス コレクション

そうは言っても、システム全体とシステムマトリックスとRHSを含む優れたテストマトリックスのソースをまだ見つけていません。これは、結果を確認するために持っているのに最適です。そのような完全なシステムをどこで見つけることができるか、またはオンラインで入手できるシステムマトリックスの「適切な」RHS を生成するために何をすればよいかについてのヒントはありますか? 私は現在、ランダムな値またはすべての値で行列を埋めていますが、これが必ずしも最善の方法であるとは限りません。

4

3 に答える 3

1

定義済みの「目標」ソリューション x から取得した右側のベクトルを使用することをお勧めします。

b = A*x

次に、ゴール ソリューション x と、ソルバーからの結果のソリューション x が得られます。これは、誤差 (目標と結果の解の差) と残差 (A*x - b) を比較できることを意味します。

反復ソルバーを慎重に評価するには、最初の x に何を使用するかについても考慮する必要があることに注意してください。

行列のオンライン コレクションには、主に左辺の行列が含まれていますが、右辺を含むものもあれば、解ベクトルを含むものもあります。

http://www.cise.ufl.edu/research/sparse/matrices/rhs.txt

ちなみに、UF疎行列コレクションについては、代わりにこのリンクをお勧めします:

http://www.cise.ufl.edu/research/sparse/matrices/

于 2011-08-19T11:07:35.283 に答える
0

まだ使用していませんが、使用する予定ですが、GiNAC は C++ で見つけた中で最高のもののようです。Maple の背後で使われている CAS 用のライブラリですが、 のパフォーマンスはわかりません。

http://www.ginac.de/

于 2011-07-28T03:52:45.270 に答える
0

解決している問題の種類を指定することはうまくいくでしょう...さまざまな問題では、有効性を確認するためにさまざまなRHSを使用する必要があります.....私が提案するのは、DUNEのようないくつかのプロジェクトからいくつかのサンプルコードを取得することです. Numerics (私は現在これに取り組んでいます)、FENICSdeal.iiは既にソルバーを使用して行列を解決しています...一般に、行列を何らかのファイルに出力する機能があります (DUNE Numerics には機能があります) matlab 準拠のファイルに行列と RHS を出力します)。

これをソルバーに供給し、再びライブラリ機能を使用して出力データを作成します (DUNE Numerics が VTK 形式を使用するように)... つまり、強力なツールを使用してデータを分析することができます... ..

これらのライブラリのコンパイルと使用について少し学ぶ必要があるかもしれません...しかし、それほど多くはありません...そして、得られる機能は、投資する価値があると信じています......

ライブラリをテストするには、明確に定義されたかなり複雑な問題が 1 つでもあれば十分だと思います。

于 2011-07-30T11:53:40.930 に答える