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

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

3
代数的マルチグリッドソルバーの延長および制限演算子の作成方法は?
私は、スパースであるが連帯構造のない線形連立方程式を解こうとしています。暗黙の有限差分スキームのマルチグリッドソルバーの原理を一般的な線形問題に拡張する方法があると聞いたことがあります(誤解しない限り、代数的マルチグリッドソルバーと呼ばれます)。それに関するいくつかの文献を読んだ後、私は有限差分スキームからのもののような縞模様の行列の素晴らしい構造を利用せずに、粗いグリッドと細かいグリッドの間を補間する方法(つまり、延長と制限)にまだ混乱しています。ヒューリスティックなものはありますか?誰でも例を挙げられますか?

1
逐次過緩和(SOR)メソッドを最適化するためのヒューリスティックはありますか?
私はそれを理解したように、連続オーバー緩和がAのパラメータを選択することによって動作しますと(準)ガウス・ザイデル反復と前のタイムステップでの値の線形結合を使用して...であることを 0≤ω≤20≤ω≤20\leq\omega\leq2 uk+1=(ω)ugsk+1+(1−ω)ukuk+1=(ω)ugsk+1+(1−ω)uk{u}^{k+1} = (\omega){u_{gs}}^{k+1} + (1-\omega)u^{k} ugsk+1ugsk+1{u_{gs}}^{k+1}は、任意のタイムステップでこのルールに従って更新された最新の情報が含まれているため、「準」と述べています。(ω=1ω=1\omega=1場合、これはまさにgauss-seidelです)。 いずれにせよ、空間分解能がゼロに近づくにつれて、ポアソン問題の2に近づく(反復が他よりも速く収束する)最適な選択でそれを読みましたωω\omega。同様の傾向が他の対称的で対角線的に支配的な問題に存在しますか?つまり、適応最適化スキームに埋め込むことなく最適にオメガを選択する方法はありますか?他の種類の問題に対する他のヒューリスティックはありますか?緩和不足(ω&lt;1ω&lt;1\omega<1)はどのような問題に最適ですか?


2
RBFカーネルマトリックスは悪条件になる傾向がありますか?
RBFカーネル関数を使用して、1つのカーネルベースの機械学習アルゴリズム(KLPP)を実装します。結果のカーネル行列はKKK K(i,j)=exp(−(xi−xj)2σ2m)K(私、j)=exp⁡(−(バツ私−バツj)2σメートル2)K(i,j)= \exp\left({\frac{-(x_{i}-x_{j})^2}{ \sigma_{m}^2}}\right) 極めてL2ノルムの悪いconditioned.The条件数が来ることが示されている1017−10641017−106410^{17}-10^{64} 条件を整える方法はありますか?パラメータを調整する必要があると思いますが、正確にはわかりません。σσ \sigma ありがとう!

4
部分特異値分解(SVD)のメモリー効率の高い実装
モデルの縮小のために、行列の最大20の特異値に関連付けられた左特異ベクトルを計算したい A ∈ RN、kあ∈RN、kA \in \mathbb R^{N,k}、 どこ N≈ 106N≈106N\approx 10^6 そして K ≈ 103k≈103k\approx 10^3。残念ながら、私のマトリックスああA どんな構造もなしで密になります。 このサイズのランダムマトリックスに対してPython svdのnumpy.linalgモジュールからルーチンを呼び出すだけの場合、メモリエラーが発生します。これは、V∈ RN、NV∈RN、NV\in \mathbb R^{N,N} 分解のために A = VSUあ=VSUA = VSU。 この落とし穴を回避するアルゴリズムが周りにありますか?たとえば、非ゼロの特異値に関連付けられた特異ベクトルのみを設定します。 計算時間と精度をトレードする準備ができています。

3
LAPACKが(反射ベクトルを正規化する代わりに)QR分解でを使用する理由は何ですか?
LAPACKのQRルーチンは、Qをハウスホルダーリフレクターとして保存します。反射ベクトルをでスケーリングするため、結果の最初の要素はになるため、保存する必要はありません。そして、必要なスケールファクターを含む個別のベクトルを格納します。したがって、リフレクタマトリックスは次のようになりますvvv1/v11/v11/v_1111ττ\tauH=I−τvvT,H=I−τvvT,H=I-\tau v v^T, ここで、は正規化されていません。教科書では、反射板の行列はvvv H=I−2vvT,H=I−2vvT,H = I-2vv^T, ここで、は正規化されています。vvv LAPACKはを正規化する代わりに、でスケーリングするのはなぜですか?vvv1/v11/v11/v_1 必要なストレージは同じであり(代わりに、を格納する必要があります)、と乗算する必要がないため、適用をより高速に実行できます(教科書バージョンのとの乗算を最適化できます)。単純な正規化の代わりに、はによってスケーリングされます。ττ\tauv1v1v_1HHHττ\tau222vvv2–√/∥v∥2/‖v‖\sqrt 2/\|v\| (私の質問の理由は、QRおよびSVDルーチンを作成していることです。私がそれに従う必要があるかどうかにかかわらず、この決定の理由を知りたいのですが)

4
小さな正方行列(10x10)の最速線形システム解決
小さな行列(10x10)(小さな行列と呼ばれることもある)の線形システム解法の地獄を最適化することに非常に興味があります。これのための準備ができた解決策はありますか?行列は非特異と見なすことができます。 このソルバーは、Intel CPUでマイクロ秒単位で1 000 000回を超えて実行されます。コンピューターゲームで使用される最適化のレベルについて話しています。アセンブリやアーキテクチャ固有でコーディングしたり、精度や信頼性のトレードオフの削減を検討したり、浮動小数点ハックを使用したりしても(-ffast-mathコンパイルフラグを使用します。問題ありません)。ソルブは約20%の時間失敗することさえあります! EigenのpartialPivLuは私の現在のベンチマークで最速で、-O3と優れたコンパイラーで最適化するとLAPACKよりも優れています。しかし今、私はカスタム線形ソルバーを手作りする段階にあります。何かアドバイスをいただければ幸いです。私は自分のソリューションをオープンソースにし、出版物などで重要な洞察を認めます。 関連:ブロック対角行列を使用して線形システムを解く速度 何百万もの行列を反転する最も速い方法は何ですか? https://stackoverflow.com/q/50909385/1489510

1
マトリックスバランスアルゴリズム
私は制御システムのツールボックスをゼロから作成し、純粋にPython3(恥知らずなプラグイン:)で作成していharoldます。私の過去の調査から、Riccatiソルバーについて、care.m技術的/無関係な理由で常に不満を持っています。 したがって、私は自分の一連のルーチンを作成しています。私が回避策を見つけることができない1つのことは、少なくともと同等の高性能バランシングアルゴリズムを取得することbalance.mです。言及する前に、xGEBALファミリはScipyで公開されており、基本的には次のようにScipyから呼び出すことができます。float型の2D配列があるとしますA。 import scipy as sp gebal = sp.linalg.get_lapack_funcs(('gebal'),(A,)) # this picks up DGEBAL Ab, lo, hi, scaling , info = gebal(A, scale=1 , permute=1 , overwrite_a=0 ) 次のテストマトリックスを使用する場合 array([[ 6. , 0. , 0. , 0. , 0.000002], [ 0. , 8. , 0. , 0. , 0. ], …

1
以下のための反復「ソルバー」
私が次の問題について最初に考えるとは思えないので、リファレンスで満足します(ただし、完全で詳細な回答は常に高く評価されます)。 あなたは対称正定持っていると言う。nは非常に大きいと考えられるため、Σをメモリに保持することは不可能です。ただし、評価することができますΣは、xは任意のため、X ∈ Rのn個。与えられたいくつかのx ∈ R nは、あなたが検索したいのx T Σ - 1のx。Σ∈Rn×nΣ∈Rn×n\Sigma \in \mathbb{R}^{n \times n}nnnΣΣ\SigmaΣxΣx\Sigma xx∈Rnx∈Rnx \in \mathbb{R}^{n}x∈Rnx∈Rnx \in \mathbb{R}^{n}xtΣ−1xxtΣ−1xx^t\Sigma^{-1}x 心に来る最初の解決策は見つけることです(例えば)共役勾配を使用しました。ただし、これは多少無駄が多いようです。スカラーを探すと、R nに巨大なベクトルが見つかります。(つまり、通過せずに直接スカラーを計算する方法を考え出すために、より理にかなっているようだΣ - 1 xと)。このような方法を探しています。Σ−1xΣ−1x\Sigma^{-1}xRnRn\mathbb{R}^{n}Σ−1xΣ−1x\Sigma^{-1}x

1
ヘッセンベルク行列の指数を計算するアルゴリズム
[1]のように、クリロフ法を使用してODEのラージシステムの解を計算することに興味があります。このような方法には、指数関数に関連する関数(いわゆる関数)が含まれます。これは基本的に、Arnoldi反復を使用してクリロフ部分空間を作成し、この部分空間に関数を投影することにより、行列関数のアクションを計算することで構成されます。これにより、はるかに小さいヘッセンバーグ行列の指数を計算する問題が軽減されます。φφ\varphi 指数を計算するアルゴリズムがいくつかあることを知っています([2] [3]とその参照を参照)。行列がヘッセンバーグであることを利用できる指数を計算するための特別なアルゴリズムがあるのだろうか? [1] Sidje、RB(1998)。Expokit:行列指数を計算するためのソフトウェアパッケージ。ACM Transactions on Mathematical Software(TOMS)、24(1)、130-156。 [2] Moler、C。、およびVan Loan、C。(1978)。行列の指数を計算する19の疑わしい方法。SIAMレビュー、20(4)、801〜836。 [3]モーラーC.、およびバンローンC.(2003)。25年後のマトリックスの指数を計算する19の疑わしい方法。SIAMレビュー、45(1)、3-49。

2
フロートなしのアイゼンシュタイン数の表現
具体的には、2次フィールドを使用する必要があるプロジェクトがあります。具体的にはの形式でます。a+b−3−−−√a+b−3a + b \sqrt{-3}a,b∈Qa,b∈Qa,b \in \mathbb{Q} たとえば、次はアイゼンシュタイン整数の素数です。 セージは使いたくない。 組み込む独自のデータ型を記述したいと思いnumpyます。PARIは便利ですが、Pythonとの互換性はありません。 これらのオブジェクトの追加はかなり明確です(a1+b1−3−−−√)+(a2+b2−3−−−√)=(a1+a2)+(b1+b2)−3−−−√(a1+b1−3)+(a2+b2−3)=(a1+a2)+(b1+b2)−3(a_1 + b_1 \sqrt{-3}) + (a_2 + b_2 \sqrt{-3}) = (a_1 + a_2) + (b_1+b_2) \sqrt{-3} 乗算は少しデリケートですが、ハードコーディングもできます (a1+b1−3−−−√)×(a2+b2−3−−−√)=(a1a2−3b1b2)+(a1b2+a2b1)−3−−−√(a1+b1−3)×(a2+b2−3)=(a1a2−3b1b2)+(a1b2+a2b1)−3(a_1 + b_1 \sqrt{-3}) \times (a_2 + b_2 \sqrt{-3}) = (a_1 a_2 - 3 b_1 b_2) + (a_1 b_2 + a_2 b_1)\sqrt{-3} 私のデータ型も除算に対応する必要があります。簡単にするために、逆数を取ってみましょう: 1a+b−3−−−√=a−b−3−−−√a2+3b21a+b−3=a−b−3a2+3b2 …

2
適応FEMで使用される新しいデータ構造はどれですか?
適応FEMライブラリの多くは、たとえばなどのノード、エッジ、三角形、四面体を、追加/削除処理するために、より高度なメッシュデータ構造を使用し、p4estライブラリの使用は、解適合格子法のためのデータ構造をオクトリ。静的メッシュでの計算に使用されるオクツリーはあまりありません。 適応FEMの線形代数側で何が変わりますか? 私が考えることができる最も率直な方法は、メッシュが洗練または粗くされるときはいつでも、すべてのシステム行列を完全に再構築することです。メッシュ適応が十分に頻度の低い操作である場合、そのための費用は最終的に残りの計算に渡って償却されます。このアプローチでは、既存のスパース線形代数ソフトウェア(PETSc、Trilinosなど)を簡単に活用できます。 この鈍い方法が最も一般的に使用されていますか、それとも洗練中に古いマトリックスを再利用または変更するためのライブラリがありますか?結局のところ、メッシュと対応する行列のほとんどは、メッシュの適応中に変更されません。

1
大きな行列の条件数をどのように概算するのですか?
がフーリエ変換(不均一または均一)、有限差分、および対角行列組み合わせである場合、大きな行列の条件数をどのように近似しますか?G F R SGGGGGGFFFRRRSSS 行列は非常に大きく、メモリには保存されず、関数としてのみ使用できます。 特に、次のマトリックスがあります。 Gμ= SHFHFS+ μ RHRGμ=SHFHFS+μRHRG_\mu=S^HF^HFS+\mu R^HR と条件数の関係を調べたい。K (G μ)μμ\muk (Gμ)k(Gμ)k(G_\mu) ある種の反復的なアプローチが必要だと思いますか?最適には、利用可能なMATLABコードがいくつかあります。


1
小さなランクの対角更新でシステムを解く
元の大規模でスパースな線形システムます。今、Aは因数分解やAのあらゆる分解に対応するには大きすぎるため、A − 1はありませんが、反復解法で解x 0が見つかったと仮定します。A x0= b0Ax0=b0A\textbf{x}_0=\textbf{b}_0あ− 1A−1A^{-1}あAAバツ0x0\textbf{x}_0 ここで、Iは、(対角エントリの数を変更する)Aの対角に小さなランク更新を適用したい: Dは、その対角線と数にほとんど0の対角行列でありますゼロ以外の値。もし私がA − 1を持っていれば、ウッドベリーの公式を利用して更新を逆に適用することができます。ただし、これは利用できません。システム全体をもう一度解決する以外にできることはありますか?私は、前提条件を考え出すことができるかもしれないといういくつかの方法があるM反転が容易\簡単であるように、M A 1 ≈(A + D )x1= b0(A+D)x1=b0(A+D)\textbf{x}_1=\textbf{b}_0DDDA−1A−1A^{-1}MMM、つまり x 0の場合に適用する必要があるのは M - 1を適用することだけであり、反復法は数回/数回の反復で収束しますか?MA1≈A0MA1≈A0MA_1 \approx A_0x0x0\textbf{x}_0M−1M−1M^{-1}

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