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

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

1
有限集合のジェネレーターを与えられた行列リー代数の基底をどのように計算できますか?
(数値)正方複素行列の任意のセット所与、Iはによって生成された実行列リー代数計算に興味、それを呼び出します。つまり、 ここで再帰的に定義されるような、およびのための。A L A L A = S P A N R { B :B ∈ ∪ ∞ 、K = 1個のC K } C K C 1 = A C K + 1 = { [ X 、Y ] :X 、Y ∈ ∪A={A1,A2,⋯,Am}A={A1,A2,⋯,Am}\mathcal{A}=\{A_1,A_2,\cdots,A_m\}AA\mathcal{A}LALA\mathcal{L_\mathcal{A}}LA=spanR{B:B∈∪∞k=1Ck}LA=spanR{B:B∈∪k=1∞Ck} \mathcal{L_\mathcal{A}} = \mathbb{span_R}\{B:B\in\cup_{k=1}^{\infty}\mathcal{C}_k\} CkCk\mathcal{C}_kC1=AC1=A\mathcal{C_1}=\mathcal{A}K≥1Ck+1={[X,Y]:X,Y∈∪kj=1Cj}Ck+1={[X,Y]:X,Y∈∪j=1kCj}\mathcal{C_{k+1}}=\{[X,Y]:X,Y\in\cup_{j=1}^k\mathcal{C_j}\}k≥1k≥1k\geq 1 この計算は(量子)制御理論に基づいています。 現在、ここにあるメソッドを使用しています。このメソッドは、Lieブラケットの繰り返し(つまり)、終了が保証されています。ただし、他の(より高速な)方法があるかどうかを知りたいです。おそらく、P。Hallベースを使用しているのでしょうか?おそらく再帰アルゴリズムですか?私の現在のデフォルト言語はMatlabです。[Aj1,[Aj2,[Aj3,⋯[Ajn−1,Ajn]⋯]]][Aj1,[Aj2,[Aj3,⋯[Ajn−1,Ajn]⋯]]][A_{j_1},[A_{j_2},[A_{j_3},\cdots[A_{j_{n-1}},A_{j_n}]\cdots]]]

3
数値線形代数を学習する前に、どの線形代数テキストを読むべきですか?
数値線形代数を深く研究したい(そして、数値線形代数と行列理論のジャーナルに従う)と仮定すると、最初に取り上げる方が良いコース/より良い本になります。 HoffmanとKunzeで証明と厳密さ(厳密な数学の問題はありません)。 または 厳密ではない証明または「証明なしで述べられた」アプローチであるが、アプリケーションと「現実世界」の問題に重きを置いているStrangの本を使って。 または あなたがお勧めする他の何か?(Gene Golubの本はどうですか?) Strangの本(彼のオンラインレクチャーで補足)の一部と、TrefethenとBauの数値線形代数の一部を知っています。しかし、私は主題のより完全な理解を持ちたいです。私は本を​​主に自習します。

1
線形連立方程式を解くためのマルチグリッド法をどのように並列化できますか?
私が理解しているように、マルチグリッド法は、同じ問題のより粗いバージョンを解決することで線形システムを解決し(低周波誤差を除去することにより)、高精度誤差を滑らかにするために細かいグリッドに投影し直します。大規模なシステムの場合、各グリッドレベルで反復法を並列に実装する方法を確認できます。このアプローチは並行してうまく拡張できますか?アルゴリズムに並行して利用できる並行性の他のソースはありますか?

2
切り捨てられたSVDの計算、一度に1つの特異値/ベクトル
特異値を1つずつ計算する切り捨てSVDアルゴリズムはありますか? 私の問題:大きな密行列の最初の特異値(および特異ベクトル)を計算したいのですが、適切な値がわかりません。は大きいため、効率上の理由から、後で最小のSVを切り捨てるためだけに完全なSVDを評価するのではなく、kkkMMMkkkMMM 理想的には、特異値を最大()から最小()まで連続的に計算する方法があるでしょう。そうすれば、があるしきい値を下回った場合に、番目の特異値を計算した後で計算を停止することができます。σ1、σ2、…σ1,σ2,…\sigma_1, \sigma_2,\ldotsσ1σ1\sigma_1σんσn\sigma_nkkkσk/ σ1σk/σ1\sigma_k/\sigma_1 そのようなアルゴリズムは存在しますか(できればPython実装で)?私のグーグル検索では、kをパラメーターとして使用する切り捨てられたSVD関数のみを見つけたので、アプリオリに推測する必要があります。

2
小さなノルム調整の固有ベクトル
ゆっくりと変化するデータセットがあり、その共分散行列の固有ベクトル/固有値を追跡する必要があります。 私はを使用してきましたがscipy.linalg.eigh、高すぎるため、すでに少しだけ正しくない分解が既に存在しているという事実を使用していません。 誰もがこの問題に対処するためのより良いアプローチを提案できますか?

2
ハミルトニアン行列の行列指数
レッツ本当、正方形、密行列も。とは対称です。しましょうA,G,QA,G,QA, G, QGGGQQQ H=[A−Q−G−AT]H=[A−G−Q−AT]H = \begin{bmatrix} A & -G \\ -Q &-A^T \end{bmatrix} ハミルトニアン行列である。の行列指数を計算したい。行列とベクトルの積だけでなく、完全な行列指数が必要です。ハミルトニアン行列の指数を計算するために利用できる特別なアルゴリズムまたはライブラリはありますか?HHHetHetHe^{tH}


2
熱方程式の最大/最小原理は、クランクニコルソン離散化によって維持されますか?
クランクニコルソン有限差分スキームを使用して、1D熱方程式を解いています。熱方程式の最大/最小原理(つまり、最大/最小が初期条件または境界で発生する)も離散化された解に当てはまるかどうか疑問に思っています。 これはおそらく、クランクニコルソンが安定した収束型スキームであることによって暗示されています。しかし、Crank-Nicolsonステンシルから作成された行列を使用して、線形代数引数を介してこれを直接証明できる可能性があるようです。 これに関する文献へのポインタをいただければ幸いです。ありがとう。

2
行列引数を持つ線形システムを解く
私たちは、標準の線形システムを解くための多くの計算方法に精通しています Ax=b.Ax=b. Ax=b. ただし、次の形式のより一般的な(有限次元)線形システムを解くための「標準的な」計算方法があるかどうか知りたいです。 LA=B,LA=B, LA=B, ここで、AAAはm1×n1m1×n1m_1\times n_1行列、BBBはm2×n2m2×n2m_2\times n_2行列、LLLはm1×n1m1×n1m_1\times n_1行列からm2×n2m2×n2m_2\times n_2行列を取る線形演算子、これは、行列のベクトル化、つまりすべてを標準のAx=bAx=bAx=b形式に変換することを含みません。 私が尋ねる理由は、について次の方程式を解く必要があるためですuuu。 (R∗R+λI)u=f(R∗R+λI)u=f (R^*R+\lambda I)u=f ここでRRR 2Dラドン変換であり、R∗R∗R^*の随伴、両uuu及びfff、2D配列(画像)です。この方程式をベクトル化することは可能ですが、特に3Dに移行する場合は面倒です。 より一般的には、nDnDnD配列はどうですか?たとえば、AとBが3D配列である解く(ある時点でラドン変換を使用してこれを行う必要があります)。LA=BLA=BLA=BAAABBB 今後ともよろしくお願いいたします。必要に応じて、別のStackExchangeにお送りください。

2
密で不良な条件付き行列の対角化
いくつかの密で悪条件の行列を対角化しようとしています。マシン精度では、結果は不正確です(負の固有値を返す、固有ベクトルには期待される対称性がありません)。MathematicaのEigensystem []関数に切り替えて、任意の精度を利用しましたが、計算が非常に遅くなっています。私はいくつもの解決策を受け入れます。悪条件の問題に適したパッケージ/アルゴリズムはありますか?私はプレコンディショニングの専門家ではないので、これがどれだけ役立つかわかりません。それ以外の場合は、並列化された任意精度の固有値ソルバーしか考えられませんが、Mathematica、MATLAB、およびC ++以外には何も知りません。 問題の背景を説明するために、行列は大きくはありますが、巨大ではありません(最大で4096x4096〜32768x32768)。それらは実数で対称であり、固有値は0から1(排他的)の範囲にあり、多くの固有値は0に非常に近く、1に近いものはありません。行列は本質的に畳み込み演算子です。すべての行列を対角化する必要はありませんが、大きくできるほど良いです。多くのプロセッサと分散コンピューティング機能を備えたコンピューティングクラスタにアクセスできます。 ありがとうございました

3
スパース行列乗算のオーバーヘッドは何ですか
行列の乗算(Mat * MatとMat * Vecの両方)は、0以外の数、または行列のサイズでスケーリングされますか?または、2つの組み合わせ。 形状についてはどうでしょう。 たとえば、100個の値を含む100 x 100のマトリックス、または100個の値を含む1000 x 1000のマトリックスがあります。 これらの行列を2乗する(または、同様のスパース性を持つ同様の行列を掛ける)と、最初の(100x100)は2番目の(1000x1000)よりも速くなりますか?値がどこにあるかに依存しますか? 実装に依存している場合は、PETScの回答に興味があります。


2
正の半定行列に対して収束する反復線形ソルバーはどれですか?
私はこの問題のために収束することが保証されている古典的な線形ソルバー(例えば、ガウス・ザイデル、ヤコビ、SOR)のどちらかを知りたいAが正である半明確な、そしてもちろんのB ∈ I M (A )A x=bAx=bAx=bああAB ∈ I M (A)b∈私メートル(あ)b \in im(A) (通知は半確定であり、確定ではありません)ああA

3
Fortran 95とLAPACKを使用した実際の非対称行列の行列指数
最近、スキューエルミート行列について同じ質問をしました。その質問の成功に触発され、数時間壁に頭をぶつけた後、本当の非対称行列の行列指数を調べています。固有値と固有ベクトルを見つける方法はやや複雑で、迷ってしまったようです。 背景:先ほど、私は理論物理学SEについてこの質問をしました。その結果、マスター方程式を実際の非対称行列として表現できます。時間に依存しないケースでは、マスター方程式はこの行列をべき乗することによって解かれます。時間に依存するケースでは、統合が必要になります。現時点では、時間に依存しないことだけに関心があります。 様々なサブルーチンを見ている時に、私は私が呼び出しされるべきだと思う(?gehrd、?orghr、?hseqr ...)それから行列をキャストする方が簡単だろう場合、それは不明であるreal*8とcomplex*16、これらのルーチンの複雑な二重のバージョンでと進み、またはreal*8、私の配列の数を2倍にして、後でそれらの複雑な行列を作成するという制限を守ってください。 では、どのルーチンを(どのような順序で)呼び出す必要があり、実際のdoubleバージョンまたは複素doubleバージョンを使用する必要がありますか?以下は、実際のダブルバージョンでこれを行う試みです。の固有値と固有ベクトルを見つけるのに行き詰まっていL*tます。 function time_indep_master(s,L,t) ! s is the length of a side of L, which is square. ! L is a real*8, asymmetric square matrix. ! t is a real*8 value corresponding to time. ! This function (will) compute expm(L*t). integer, intent(in) :: s real*8, intent(in) :: …

2
最大の大きさの固有値に対応する密行列の固有ベクトルを計算する最も効率的な方法は何ですか?
密な実対称正方行列があります。寸法は約1000x1000です。最初の主成分を計算する必要があり、これを行うのに最適なアルゴリズムは何であるのかと思います。 MATLABはArnoldi / Lanczosアルゴリズム(の場合eigs)を使用しているようです。しかし、それらについて読んだだけでは、行列がスパースではなく、最初の固有ベクトルのみに関心があるため、単純な累乗反復よりも利点があるかどうかわかりません。 この場合の最速のアルゴリズムは何ですか?

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