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

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

1
同じソリューションで2つの逆問題を解決する
私には2つの逆問題があります、 あ1 x = b1あ2 x = b2あ1 バツ=b1あ2 バツ=b2A_1 ~ x = b_1 \qquad A_2 ~ x = b_2 これまでのところ、Tikhonov正則化を使用してそれらを個別に解決し、 2つの推定値を取得していバツバツxます。ただし、私の場合、バツバツxは両方の方程式で同じ解を表します。「同時に」解決することは可能ですか?理想的には私は答えを見つけるでしょう 分( ∥ A1x − b1∥2+ ∥ A2x − b2∥2+ ∥ Γ X ∥2)分(‖あ1バツ−b1‖2+‖あ2バツ−b2‖2+‖Γバツ‖2)\min \left( \lVert A_1 x - b_1 \rVert^2 + \lVert A_2 x - b_2 \rVert^2 + …

1
ランダム
次の質問があります。 私は2人の行列があるとX,YX,YX, Y両方のサイズのm×pm×pm\times pとランダムIIDガウス行列GGGのサイズのm×km×km \times k、m≫p>km≫p>km\gg p>k。 を計算する高速な方法はありexp(−XYT)Gexp⁡(−XYT)G\exp(-XY^T)Gますか?おそらく、XXXと両方YYYがよりはるかに小さいという事実を使用することによってXYTXYTXY^T?ここで、exp(⋅)exp⁡(⋅)\exp(\cdot)は、エントリごとの(つまり、行列のeach各\textbf{each}エントリの)指数を意味します。明らかに、指数がなければ、それは簡単で、単純にX(YTG)X(YTG)X(Y^TG)で実行できますが、問題は、要素単位の指数がもはや低ランクではないことです。 質問の動機は、フォームのカーネルを乗算することです Dij=exp(−dij)Dij=exp⁡(−dij)D_{ij}=\exp(-d_{ij})またはDij=exp(−d2ij)Dij=exp⁡(−dij2)D_{ij}=\exp(-d_{ij}^2) dij=∥xi−yj∥dij=‖xi−yj‖d_{ij}=\Vert x_i-y_j \Vert及び効率的にランダム行列による。xi,yi∈Rpxi,yi∈Rpx_i, y_i \in \mathbb{R}^p 近似解も問題ありません。

2
行列の条件数は、反復線形ソルバーの精度に影響しますか?
条件番号に関してかなり具体的な質問があります。複数の長さスケールを持つFEMシミュレーションを実行すると、マトリックス内の最大のエントリと最小のエントリの間に大きな差異が生じます。条件番号は、状況によっては10 ^ 15にもなることがあります。 数値解析では、直接法を使用して計算されたソリューションのエラーに適用されるため、条件番号のエラー限界をよく見ます。私の好奇心は、このロジックがCGのような反復型ソルバーやGMRESのエラーにも当てはまるかどうかです。収束率は行列の固有値の影響を受けることは知っています。このタイプの問題を実行すると、速度が大幅に低下することに気づきます。しかし、その正確さについては不明です。任意の助けいただければ幸いです。

4
MATLABでのインクリメンタルSVD実装
MATLABでインクリメンタルSVDを実装したライブラリ/ツールボックスはありますか?私はこのペーパーを実装しました、それは速いですがうまくいきません。私はこれを試しましたが、これでもエラーが速く伝播します(5〜10ポイントの更新内でエラーが高くなります)。

2
ガウスザイデル、実際のSOR?
SORについて知ったとき、それは主に反復法の最初の例の1つとして与えられ、その後、私が最終的に使用する反復法はクリロフ部分空間法になります。 Gauss-SeidelやSORのような反復法のいずれかが実際に使用されたことはありますか?デモ以外の目的でそれらを「真剣に」使用する実際のパッケージを知っていますか?

3
多くの小さな行列に対する行列-ベクトル乗算の最適化
私は行列-ベクトル積の高速化を検討していますが、私が読むすべては非常に大きな行列に対してそれを行う方法についてです。私の場合、行列は小さいですが、実行しなければならない回数は非常に多いです。 これを最適化する方法はありますか?小さな行列と小さなベクトルで構成される1つの大きなベクトルから非常に大きな対角ブロック行列を作成し、大きな行列ベクトルの高速化の手法を使用する方が高速でしょうか?または、グローバルマトリックスとベクトルを設定すると、そこでメリットが失われますか?

2
パラメトリック行列の固有ベクトルの連続性
私は次元の行列H(→ K)ベクターパラメータに応じ→ Kを。んnnH^(k⃗ )H^(k→)\mathrm{\hat{H}}(\vec{k})k⃗ k→\vec{k} ここで、固有値ルーチンは固有値を特定の順序で返しません(通常は並べ替えられます)が、固有値を→ kの滑らかな関数としてトレースしたいと思います。固有値は特定の順序で返されていないので、ちょうどトレースE Iを、いくつかの特定のインデックスのためのI ∈ { 1 、。。、n }は、以下の図に示すように、滑らかではない線のセットを返しますEiEiE_ik⃗ k→\vec{k}EiEiE_ii∈{1,..,n}i∈{1,..,n}i\in\{1,..,n\} k⃗ k→\vec{k}k⃗ +dk⃗ k→+dk→\vec{k}+d\vec{k}vi(k⃗ )⋅vj(k⃗ +dk⃗ )∼δpipjvi(k→)⋅vj(k→+dk→)∼δpipjv_i(\vec{k})\cdot v_j(\vec{k}+d\vec{k})\sim \delta_{p_i p_j}pi,pj∈π({1,...,n})pi,pj∈π({1,...,n})p_i, p_j\in \pi(\{1,...,n\})ππ\pi つまり、固有ベクトルの連続性を追跡します。 ただし、数値ルーチンではいくつかの問題が発生します。私が使用する点の特定の小さなサブセットでは、近くの点にあるいくつかの固有ベクトルがほとんど正規直交ではありません。私の最初の疑いは、それらの固有ベクトルが縮退した固有値に対応していることでしたが、常にそうであるとは限りません。 dk⃗ dk→d\vec{k} そのようなことが起こるのを許されていますか?または、数値ルーチンが連続固有ベクトルを返すことを保証することは可能ですか?私が使用するルーチンはnumpy.linalg.eighで、これはLAPACKのzheevdのインターフェースです。 (あなたの中の物理学者は私がバンド構造について話していることを認識するでしょう)

1
SLEPcを使用した線形安定性解析から大規模な非エルミート一般化固有値問題を解く
一般化された行列問題があります。線形安定性解析問題のスペクトル法からのです。私の行列Bは対角で正の半定値です。Aは非エルミートで複雑です。Ax=λBxAx=λBxA x = \lambda B x 私の問題は、SLEPcの一般化された固有値ソルバーを使用すると、「LU分解のピボットがゼロ」というエラーが発生することです。以下の残りの部分は、問題の詳細とこれまでに試したものです。助けてくれてありがとう! 問題の詳細 行列は最大で約48000 x 48000になり、固有値を見つけたいと思います。私が興味を持っている固有値は、0 + 0iの近くに実数部が最も大きいものです。理想的には、それらが内部にある場合(つまり、スペクトル内の正の実部がより大きい他の固有値がある場合)でもそれらを見つけられるようにしたいです。ただし、すべての固有値が対象の固有値以外の実部<0である問題に対して機能させることができれば幸いです。 現時点では、scipy linalg.eigおよびsparse.eigs関数を使用しています。私の知る限り、これらはそれぞれLAPACKとARPACKを使用して重い作業を行います。私は、SLEPcライブラリを使用することで、より良いパフォーマンスを達成できるかどうかを確認することにしました。これが悪い決定であるならば、私に知らせてください! SLEPc固有値ソルバーでPETScを使用したいと思います。私は、チュートリアルの一部として提供されている例を使用してSLEPcを試しました。演習7(http://www.grycap.upv.es/slepc/handson/handson3.html)は、ファイルから行列AおよびBを読み取り、解を出力します。提供されたマトリックスを使用してこれを正常に動作させました。ただし、問題の小さいサイズのテストバージョン(6000x6000)に置き換えると、指定したコマンドライン引数に応じてさまざまなエラーが発生します。 私が抱えている主な問題は、「LU分解のピボットがゼロ」というエラーです。デフォルト設定を使用する場合。 これは、Bにゼロの行が含まれているという事実に関連していると思いますが、線形代数の私の理解はやや基本的です。これは本当ですか? petscのWebサイトで提案されているオプション、-pc_factor_shift_type NONZEROなどを設定しようとしましたが、これらのオプションが使用されなかったという追加の警告が表示されます これは前提条件の問題であると想定したので、-eps_targetを0.1に設定し、-st_type sinvertとshiftを指定した場合と指定しない場合の両方を試しました。それでも同じエラーが発生します。 次に、-st_pc_type jacobiとst_pc_type bjacobiを試しました。jacobiは実行されますが、固有値は生成されません。ブロックjacobiはLU分解を実行し、同じエラーを再度表示します。 デフォルトの方法はkrylov-schurなので、-eps_type gdおよび-eps_type jdオプションを使用して実験しました。残念ながら、これらはナンセンス固有値を生成するようですが、scipyでLAPACKを使用して解決すると、スペクトルにまったく表示されません。 私の行列の問題は特異ではないことを知っています。なぜなら、私はscipyを使用してそれを解くことができるからです。 これらすべての異なるソルバーの動作を理解するために、PETSCとSLEPCのマニュアル以外に読む必要がある本/ガイドを知っていますか? コマンドラインオプションがない場合の出力を以下に示します。 私の最初の投稿を読んでいただきありがとうございます。 よろしく、トビー SLEPcからのターミナル出力 tobymac:SLEPC toby $ mpiexec ./ex7 -f1 LHS-N7-M40-Re0.0-b0.1-Wi5.0-amp0.02.petsc -f2 RHS-N7-M40-Re0.0-b0.1- Wi5.0-amp0.02.petsc -eps_view ファイルに保存されている一般化された固有問題。 [0] PETSC ERROR:---------------------エラーメッセージ--------------------- --------------- …

1
LSEの解の事前調整と精度への影響
数値解析に関する私のコースでは、線形方程式系の前処理の主な主な動機は、そのLSEの反復ソルバーの収束率を上げることであると教えられました。 しかし、計算された解の精度に影響はありますか? GolubとVan Loanによる行列計算(p。122)にある、ガウスの消去法の計算解の精度に関する結果を覚えています。(特定のノルムに関する)条件数は、そのアルゴリズムによって計算される数値解の精度に実際に影響します。 例えば、共役勾配法によって得られる解についても、同様のことが当てはまると期待できます。私はこれを計算実験で観察したと思います。いくつかの停止基準が満たされるまで(長い)条件なしのシステムで共役勾配法を実行すると、計算された解は依然として高い残差を示しました。したがって、条件数が少ないほど実行時間が短くなるだけでなく、計算されたソリューションの残差(またはエラー)も低くなるのではないかと思います。これは必然的に数値の安定性の問題であり、不正確な算術で作業する必要があることに注意してください。 (私はmath.SEでも同じ質問をしましたが、このサイトの方が適切かもしれません。)

4
カルマンフィルターのスパース行列の実装?
カルマンフィルターベースのモデリングコードを使用して、ほぼリアルタイムの地域電離層マッピングアプリケーション用に開発しました。このコードは、カルマンフィルターを使用して、さまざまなセンサーからのデータを(基本関数のセットで記述された)マップに同化します。 私はこれをより大きな領域とより多くのセンサーに拡大しようとしていますが、カルマンフィルターの行列代数部分は、関与する大きな行列(数千の行/列)のために非常に遅くなります。ランタイムの問題を攻撃する最善の方法は、これらの行列が通常、総要素の80%以上が非常にスパースであるという事実を使用することだと思います。これは、各センサーにマップ係数と一緒に推定されるバイアスパラメーターがあるためです。これは、カルマンHマトリックスのそのセンサーの列に1として表示され、他のすべてのセンサーおよびマップ係数の列には0が表示されます。数百のセンサーがあり、それぞれが各エポックで8〜10の観測値を提供しているため、多くのゼロがあります。 スパースアルゴリズム、特に乗算と反転*を使用してカルマンフィルターのコンポーネントを実装することを検討することもできますが、マトリックスがまばら?アンサンブルカルマンフィルターなどを使用できることはわかっていますが、可能であれば、純粋な線形カルマンフィルターの最適性を維持したいと思います。総データ量は禁止されていません。線形モデルから生じる大きなスパース行列だけです。 実装に関しては、これはIDLで行われますが、コア行列代数は、外部の最適化されたLAライブラリ(具体的にはATLAS)の呼び出しを介して行われます。 *最適なカルマンフィルターの実装では反転が回避され、代わりにUD分解が使用されます。私はこのようなものを実装することを検討しているので、それが答えになるかもしれませんが、マトリックスのスパース性を考慮してより良い解決策があるかどうかを探しています。

1
エントリがわからないときに、ほぼ対角行列の対角を抽出する
既にほぼ対角になっている対称マトリックスから対角を抽出するための良い方法は何ですか?マトリックス要素がない場合(ベクトルに適用する機能のみ)? さらに、(1)対角線を明示的に構築するためにn行n列の行列をn回適用すると、法外にコストがかかり、(2)対角線の小さな要素が大きな要素に加えて重要になります。 これは、(小規模なテストケースで)対角線を抽出するマトリックスの種類の例の画像です。

1
最大で8つのコアで並列密行列反転に使用するアルゴリズムは何ですか?
このための既存のライブラリがないように見える、使用している言語の並列密行列反転を実装する必要があります(特に、メッセージパッシングにIDLブリッジを使用するIDL)。C ++でMPIを使用した経験から、並列プログラミング方法に精通していますが、主に並列FFTおよびNボディメソッドが対象です。線形代数の計算方法について、シリアルまたはパラレルの経験や知識はほとんどありません。 私が探しているのは、(現在はシリアル)IDLタスクを実行するマシンには8つのコアがあるため、少数のコアに適した、堅牢で安定した並列行列反転アルゴリズムの明確な疑似コード記述です。実際には、おそらく4つだけを使用して、他のタスクのためにコアを解放します。 このタスクによく知られたアルゴリズムの範囲がある場合は、最先端のパフォーマンスよりも単純さを優先します。

1
行列の乗算パフォーマンスの急激な低下
行列がキャッシュに収まらない場合の密な行列乗算の実装について読んでいます。私が見たグラフの1つ(これらのスライドのスライド9 )は、単純なアルゴリズムを使用した場合のパフォーマンスの急激な低下を示しています。この低下は速度の約50%であり、マトリックスがまだキャッシュに収まっている間に発生し、1つまたは2つのサイズでのみ発生します。素朴なアルゴリズムを使用するつもりはありませんが、突然のパフォーマンス低下の原因を知りたいのですが。(低下はブロックされたアルゴリズムでも発生しますが、はるかに小さいです。)

1
線形システムのスパースパターンは、反復(KSP)ソルバーにとって重要ですか?
ほとんど問題です。一般的な疎で非対称な(数値的および構造的の両方の)行列を考えると、反復ソルバーのスパースパターン(つまり、行列/ベクトルの行/列の置換)はどのくらい重要ですか?フィルインの数に直接影響を与えることにより、直接ソルバー(LU)またはプレコンディショナー(ILU)にとって重要になることがわかります。 ただし、反復ソルバーの場合、最も重要な部分は、実際の行列パターンを気にしないように見えるMatVec操作であるようです。ここで考慮していないパターンに依存する可能性のあるコンポーネントはありますか? 並行してどうですか?マトリックスとベクトルの分布の仕方でパターンが重要になり、通信量/オーバーヘッドを決定するかもしれないが、他の考えや入力を見たいと思います。 私はこれを一般的に、そしてPETScのKSPソルバーに関しても尋ねています。

3
標準の線形代数/最適化法には大きすぎるものは何ですか?
異なる数値線形代数および数値最適化手法は、独自のプロパティに加えて、それらが「良いアイデア」である場合に異なるサイズ体制を持っています。たとえば、非常に大規模な最適化問題の場合、ヘッセ行列を扱う必要がないため、ニュートン法や内点法の代わりに勾配法、確率勾配法、座標降下法が使用されます。同様に、密な線形ソルバーメソッドは、特定のサイズになると実行できなくなります。 したがって、アルゴリズムとコンピューターハードウェアの両方が絶えず変化していることを考えると、標準の線形代数と最適化ソルバーにとってどれほどの大きさであるかを知るにはどうすればよいでしょうか。 (数値アルゴリズムのエンドユーザーである場合、それらのアルゴリズムを適用できるときはあいまいな考えを持つことが重要であるため、これについて考えています。その一部は、問題の構造と望ましいソリューションの種類ですが、一部は問題の大きさでもあります。) 編集:より具体的に言えば、これについて私が考えさせられたのは、問題の内点アルゴリズムが解決できる大きさの上限に関するさまざまな経験則でした。以前の論文では、次元数は約1000である必要があると述べていましたが、後の論文では5000に上方修正されており、最近の論文では、スパース性を利用できるかどうかに応じてさらに大きな値を認めています。これはかなり広い範囲なので、最先端の内点法では何が大きいのか知りたいです。

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