タグ付けされた質問 「linear-algebra」

線形システムの解、最小二乗問題、固有問題、その他の問題を含む、線形代数のアルゴリズム/計算的側面に関する質問。

4
変数を並べ替えて最小帯域幅のバンド行列を生成する方法は?
私は有限差分によって2Dポアソン方程式を解こうとしています。このプロセスでは、各方程式に変数がしかないスパース行列を取得します。たとえば、変数が場合、離散化の結果は次のようになります。555UUU うんi−1,j+Ui+1,j−4Ui,j+Ui,j−1+Ui,j+1=fi,jUi−1,j+Ui+1,j−4Ui,j+Ui,j−1+Ui,j+1=fi,jU_{i-1,j} + U_{i+1,j} -4U_{i,j} + U_{i,j-1} + U_{i,j+1} = f_{i,j} 私はこのシステムを反復法で解くことができることを知っていますが、変数を適切に順序付ければ、直接法(すなわち、ガウス消去法w / oピボット)。これは可能ですか?他の、おそらく構造化されていないスパースシステムでこれを行うための戦略はありますか?



6
大きな行列の近似スペクトル
大きなスパース行列(数十万行)のスペクトル(すべての固有値)を計算したい。これはきつい。 近似値に落ち着きます。これを行う近似方法はありますか? この質問に対する一般的な回答を希望する一方で、次の特定の場合の回答にも満足します。私の行列は、大きなグラフの正規化ラプラシアンです。固有値は0から2の間であり、それらの多くは1前後にクラスター化されます。

2
PETScは密行列にどの程度役立ちますか?
私が見たところどこでも、PETScのチュートリアル/ドキュメントなどは、線形代数に有用であり、通常、スパースシステムが有益であることを指定しています。密行列はどうですか?密なAのを解くのが心配です。A x = bAバツ=bAx=bAAA FortranでCGとQMRのコードを独自に作成しました。基本的な構成は、疑似コードをリッピングし、可能な限りBLASルーチン(ddot、dnrmおよびdgemv)を少しの自己調整で追加することです。これはPETScと比較してどうですか? 最善の答えは自分で試してみることだと思いますが、時間やその他の理由により不可能です。 どんな助けも大歓迎です。


2
計算科学者が独自のバージョンのstd :: complexを実装する必要があるのはなぜですか?
ような計算科学における良好知らC ++ライブラリの多くの固有、Trilinos、及びdeal.IIは、標準C ++テンプレートヘッダライブラリオブジェクトを使用し、std::complex<>複雑な浮動小数点数を表現します。 ジャックPoulsonのでは答えデフォルトコンストラクタについての質問に、彼は彼が彼の独自の実装を持っていることを指摘std::complexしてエレメンタル「いくつかの理由のために」。それらの理由は何ですか?このアプローチの長所と短所は何ですか?

4
密行列が低ランクかどうかを迅速に判断する
私が取り組んでいるソフトウェアプロジェクトでは、特定の計算は、高密度の低ランクマトリックスに対して非常に簡単です。いくつかの問題の例には、高密度の低ランクマトリックスが含まれていますが、それらは要因としてではなく、完全に与えられているので、低ランク構造を利用したい場合は、ランクをチェックしてマトリックスを分解する必要があります。 問題のマトリックスは通常、完全にまたはほぼ完全に高密度で、nは100から数千までの範囲です。行列のランクが低い場合(5〜10未満など)、SVDを計算し、それを使用して低ランクの因数分解を行うことは労力に値します。ただし、マトリックスのランクが低い場合、労力は無駄になります。 したがって、完全なSVD分解を行うための労力を投資する前に、ランクが低いかどうかを判断するための高速で合理的に信頼できる方法を見つけたいと思います。ランクがカットオフを超えていることが明らかになった場合、プロセスはすぐに停止できます。手順が誤って低ランクであるとマトリックスを宣言した場合、これは大きな問題ではありません。低ランクを確認して低ランクの因数分解を見つけるために完全なSVDを実行しているからです。 私が検討したオプションには、LU分解またはQR分解を示すランクの後にチェックとして完全なSVDが含まれます。他に考慮すべきアプローチはありますか?

2
非常に大きくて非常に疎な隣接行列のすべての固有値を計算する
それぞれ約n〜100000個のノードを持つ2つのグラフがあります。両方のグラフで、各ノードはちょうど3つの他のノードに接続されているため、隣接行列は対称で非常にまばらです。 難しい部分は、隣接行列のすべての固有値が必要ですが、固有ベクトルは必要ないことです。正確に言うと、これは私の生涯に1回(少なくとも私が見る限りでは!)になるので、すべての固有値を取得したいのですが、それらを取得するのに数日待つことは気にしません。 scipyラッパーを試してみましたARPACKが、時間がかかりすぎます。複数のライブラリを見つけましたが、最大/最小の固有値のサブセットを取得するのに最適です。すべての固有値を取得するために、おそらく並列実装で対称スパース行列に機能するライブラリはありますか?

1
Krylov加速マルチグリッド(MGを前提条件として使用)はどのように動機付けられますか?
マルチグリッド(MG)は、線形システム解くために使用されてもよい初期推定構築することによって、X 0とするための次の繰り返しiは= 0 、.. 1収束するまで:A x = bAバツ=bAx=bバツ0バツ0x_0i = 0、1 ...私=0、1 ..i=0,1.. 残差r i = b − A x iを計算しますr私= b − A x私r私=b−Aバツ私r_i = b-Ax_i 近似を得るためにマルチグリッドサイクルを適用、ここで、A 、E 、I = R I。ΔのX私≈ E私△バツ私≈e私\Delta x_i \approx e_iA e私= r私Ae私=r私Ae_i = r_i アップデートは、バツi + 1← x私+ Δ X私バツ私+1←バツ私+△バツ私x_{i+1} \gets x_i + \Delta …

2
行列を反転するための「補因子技術」には実用的な意味がありますか?
タイトルは質問です。この手法は、「コファクターの行列」または「補助行列」の使用を含み、正方行列の逆の成分の明示的な公式を提供します。たとえばよりも大きい行列を手作業で行うのは簡単ではありません。以下のためマトリックスは、マトリックス自体の行列式を計算し、計算する必要の決定行列を。だから、私はそれがアプリケーションにとってそれほど有用ではないと推測しています。しかし、確認をお願いします。3×33×33\times 3n×nn×nn\times nn2n2n^2(n−1)×(n−1)(n−1)×(n−1)(n-1)\times(n-1) 私は、行列に関する定理を証明する上での手法の理論的意義については質問していません。

1
複雑な対称三重対角一般化固有値問題のための特別な方法
私は一般固有値問題を解決する必要がここで、A及びBが両方とも三重対角であり、Bは対称正定値と実であるが、Aは、唯一の複合対称(明確またはエルミートではない)です。さらに、完全な固有分解が必要です。私は現在、Lapackの一般化された固有値ソルバーを呼び出しているだけですが、この特定の高度に構造化された問題により良い方法があるかどうか疑問に思っています。特に、自由に利用可能なコード(C ++)を用意することが最善です。A X = λ B XAバツ=λBバツAx = \lambda BxAAABBBBBBAAAZGGEV

3
50x50マトリックスの最大固有値を見つけるためのSVD —かなりの時間を無駄にしていますか?
すべての特異値分解を実行することにより、多くの実対称50x50行列の最大固有値を計算するプログラムがあります。SVDはプログラムのボトルネックです。 最大の固有値を見つけるのにはるかに速いアルゴリズムがありますか、またはこの部分を最適化しても投資収益率があまり高くないでしょうか?

3
NumpyがSVDを実行する方法を理解する
私は、行列のランクと行列方程式の解の両方を計算するために、さまざまな方法を使用しています。関数linalg.svdに出会いました。これを、Gaussian Eliminationでシステムを解くという私自身の努力と比較すると、より速く、より正確に見えるようです。私はこれがどのように可能かを理解しようとしています。 私の知る限り、linalg.svd関数はQRアルゴリズムを使用して、行列の固有値を計算します。私はこれが数学的にどのように機能するかを知っていますが、Numpyがどのようにそれを迅速かつあまり正確に失うことなく行うのかわかりません。 私の質問:numpy.svd関数はどのように機能し、より具体的には(ガウス消去と比較して)高速かつ正確にどのように処理するのですか?

2
krylovメソッドを別のkrylovメソッドで事前調整する
gmresやbicgstabのようなメソッドでは、別のkrylovメソッドを前提条件として使用すると魅力的です。結局のところ、それらは、マトリックスを使用しない方法および並列環境で簡単に実装できます。たとえば、1つのcoulは、gmresまたはkrylovメソッドのその他の組み合わせの事前調整子として、事前調整されていないbigcstabのいくつかの(たとえば〜5回)反復を使用します。私は文学ではそのようなアプローチにあまり言及していないので、あまり効果的ではないからだと思う。なぜそれが効率的でないのかを理解したいと思います。それが良い選択である場合はありますか? 私の研究では、並列(mpi)環境での3D楕円問題の解決に興味があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.