タグ付けされた質問 「matrix」

行列は、列と行に配置された要素(eq番号、シンボル、または式)の長方形配列です。

3
MATLAB行列乗算(最高の計算アプローチ)
2つの参照系(軸)間で座標変換を行う必要があります。そのためには、いくつかの中間軸が使用されているため、3つの行列()を乗算する必要があります。これを解決する2つのアプローチについて考えました。3×33×33\times3 方法#1:乗算を直接行う、つまり、 vf=R1 R2 R3 vivf=R1 R2 R3 viv_f = R_1\ R_2\ R_3\ v_i 方法#2:ステップに分割: v3i=R3 viv3i=R3 viv_{3i} = R_3\ v_i v23=R2 v3iv23=R2 v3iv_{23} = R_2\ v_{3i} vf=R1 v23vf=R1 v23v_f = R_1\ v_{23} どこ: 、 R 2および R 3は 3 × 3行列ですR1R1R_1R2R2R_2R3R3R_33×33×33\times3 、 v i、 v 3 i、 v 23は …

1
高速で、後方安定(左)
非常に少数の退化したケース(&lt; 0.1 %)で、多くの3×33×33\times3行列逆行列(ニュートン反復極分解の場合)を計算する必要があります。&lt;0.1%&lt;0.1%<0.1\% 明示的な逆行列(行列のマイナーを行列式で割ったもの)は機能しているようで、約32〜40の融合フロップです(行列式の逆数の計算方法によって異なります)。detスケールファクターを考慮しない場合、18のフューズフロップのみです(9つの要素はそれぞれab-cd、2のフューズフロップの形式です)。 質問: 18(任意のスケール)未満または32(1の逆数を考慮した適切なスケール)の融合フロップを使用して逆を計算する方法はあり3×33×33\times 3ますか? 3×33×33\times 3行列の逆安定左逆行列を計算するための経済的な方法(〜50 fフロップを使用)はありますか? 単精度のフロート(iOSゲーム)を使用しています。後方安定性は私にとって興味深い新しい概念であり、実験してみたいと思います。ここだ記事の考えを引き起こしました。

1
正定対称行列の逆行列とその行列式を計算する最速のアルゴリズムは何ですか?
正定対称行列が与えられた場合、逆行列とその行列式を計算するための最速のアルゴリズムは何ですか?私が興味を持っている問題については、行列の次元は30以下です。 高い精度とスピードが本当に必要です。(数百万行列が実行されます) 行列式が必要です。各計算では、iverse行列の要素が1つだけ必要です。ありがとう!

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ルーチンを作成していることです。私がそれに従う必要があるかどうかにかかわらず、この決定の理由を知りたいのですが)

2
FEMで、剛性マトリックスが正定であるのはなぜですか?
FEMクラスでは、通常、剛性マトリックスが正定であることが当たり前とされていますが、その理由を理解できません。誰か説明してもらえますか? 例えば、我々は、ポアソン問題を考えることができます: その剛性行列である: K I J = ∫ Ω ∇ φ I ⋅ ∇ φ jを−∇2u=f,−∇2u=f, -\nabla^2 u = f,Kij=∫Ω∇φi⋅∇φjdΩ,Kij=∫Ω∇φi⋅∇φjdΩ,K_{ij} = \int_\Omega\nabla\varphi_i\cdot\nabla\varphi_j\, d\Omega, 対称正定です。対称性は明白な特性ですが、正の明確さは私にはそれほど明白ではありません。

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
大きな共分散行列の並列計算
サイズがから100000 × 100000の範囲の共分散行列を計算する必要があります。GPUとクラスターにアクセスできます。これらの計算を高速化するための最適な並列アプローチは何でしょうか。10000×1000010000×1000010000\times10000100000×100000100000×100000100000\times100000


2
対角支配行列での反復法の安全な適用
次の線形システムが与えられたと仮定 Lx=c,(1)(1)Lx=c,Lx=c,\tag1 ここで、LLL正であることが知られているラプラシアン重み付けsemi−semi−semi-で張ら一次元のヌル空間と明確1n=(1,…,1)∈Rn1n=(1,…,1)∈Rn1_n=(1,\dots,1)\in\mathbb{R}^n、そして、の翻訳分散x∈Rnx∈Rnx\in\mathbb{R}^{n}、すなわち、x+a1nx+a1nx+a1_nその誘導体である関数値(変化しない(1)(1)(1))。の唯一の正のエントリはLLL、対角線上にあります。これは、負の非対角線上のエントリの絶対値の合計です。 私は非常にも、その場で学業に引用いずれかで見出さLLLであるnot strictlynot strictlynot~strictly斜めドミナント、例えば共役勾配、ガウスSeidl、ヤコビのような方法は、まだ安全に解決するために使用することができるが(1)(1)(1)。理論的根拠は、変換不変性のため、1つの点を固定しても安全です(たとえば、最初の行と列LLLおよび最初のエントリをから削除するccc)。したがって、LLLをa s t r i c t l yに変換します。strictlystrictlystrictly対角線的に支配的な行列。いずれにしても、元のシステムは、完全な形で解決される(1)(1)(1)と、L∈Rn×nL∈Rn×nL\in\mathbb{R}^{n\times n}。 この仮定は正しいですか、正しい場合、代替の根拠は何ですか?メソッドの収束がどのように維持されるかを理解しようとしています。 ヤコビ法を有する収束である場合(1)(1)(1)、どのスペクトル半径約状態可能性ρρ\rho繰り返し行列のD−1(D−L)D−1(D−L)D^{-1}(D-L)、DDDのエントリを有する対角行列であるLLLその対角線上には?あるρ(D−1(D−L)≤1ρ(D−1(D−L)≤1\rho(D^{-1}(D-L)\leq1、のための一般的な収束を保証からしたがって、異なるρ(D−1(D−L))&lt;1ρ(D−1(D−L))&lt;1\rho(D^{-1}(D-L))<1?私はラプラシアン行列の固有値ので、これを求めているD−1LD−1LD^{-1}L対角線上のものが持つべき範囲であることが[0,2][0、2][0, 2]。 原作より: ...................................... 各反復で、次の線形システムを解くことで新しいレイアウト(x(t +1)、y(t + 1))を計算します: L⋅x(t+1)=L(x(t),y(t))⋅x(t)L⋅y(t+1)=L(x(t),y(t))⋅y(t)(8)(8)L・バツ(t+1)=L(バツ(t)、y(t))・バツ(t)L・y(t+1)=L(バツ(t)、y(t))・y(t) L · x(t + 1) = L(x(t),y(t)) · x(t) \\ L · y(t + 1) = L(x(t),y(t)) · y(t) \tag 8 一般性を失うことなく、センサーの1つの位置を固定できます(ローカライズされたストレス)、厳密に対角線的に支配的な行列を取得します。したがって、(8)を解くためにJacobi反復を安全に使用できます。 ................................................. 上記の「反復」の概念は、基礎となる最小化手順に関連しており、Jacobi反復と混同しないでください。したがって、システムはJacobiによって(反復的に)解決され、ソリューションは(8)の右側に購入されますが、今度は、基礎となる最小化の別の反復のためです。これで問題が明確になることを願っています。 正の半定値行列に対して収束する反復線形ソルバーが見つかりましたか?、しかしより複雑な答えを探しています。

3
スパースマトリックスストレージとデンスマトリックスストレージの経験則
マトリックスの予想されるスパース性(つまり、非ゼロの数/非ゼロの可能な合計数)がわかっているとします。スパースマトリックスストレージ(具体的には、圧縮された行ストレージ)を使用するか、高密度マトリックスとして保存するかを決定するための経験則(おそらくおおよそ)はありますか? 私のアプリケーションでは、メモリよりも速度が重要です。しかし、一般的な好奇心から、スピードとメモリの両方の観点からの回答に興味があります。 行列を生成した後は、加算と乗算の演算のみを適用します。 私は定性的な答えしか見つけることができませんでした。たとえば、この質問とこの質問ですが、次のようなものを探しています ...スパース性が約超える場合は、高密度ストレージを使用します。x%x%x\%

6
Armadilloによる行列乗算のSuper C ++最適化
私はArmadilloを使用して、辺の長さが非常に集中的な行列乗算を行っています。ここで、は最大20以上にすることができます。私が使用しているアルマジロをしてOpenBLAS私は、パフォーマンスの最適化のためのスーパーアルマジロでの乗算の形式主義に問題があることを除いて、並列コアで非常に良い仕事をしているように見える行列乗算、ため。 n2ん2ん2^nんんn 次の形式のループがあるとします。 arma::cx_mat stateMatrix, evolutionMatrix; //armadillo complex matrix type for(double t = t0; t &lt; t1; t += 1/sampleRate) { ... stateMatrix = evolutionMatrix*stateMatrix; ... } 基本的なC ++では、私はここでの問題を見つけることはC ++での新しいオブジェクトに割り当てるということであるcx_mat店にしevolutionMatrix*stateMatrix、その後に新しいオブジェクトをコピーstateMatrixしてoperator=()。これは非常に非効率的です。大きなデータ型の複雑なクラスを返すのは悪い考えだということはよく知られていますよね? この方法がより効率的であると私が考える方法は、次の形式で乗算を行う関数を使用することです。 void multiply(const cx_mat&amp; mat1, const cx_mat&amp; mat2, cx_mat&amp; output) { ... //multiplication of mat1 and mat2 and then store …

2
効率的な行列-ベクトル乗算のための行列のパターンの活用
私は次のような状況にあります。一連のベクトルあり、それぞれ、が最初に固定されている積を計算します。の構造に関する情報はありませんが、には通常、多くの値が繰り返される特定のパターンがあり、これらの積をできるだけ高速に計算したいと考えています。x1,x2,..x1,x2,..x_1, x_2,.. AxiAxiAx_iAAAxixix_iAAA 1つの例は次のようになります。AAA ここで白い領域は0です。 に関する情報を格納する方法、または何らかの方法でそれを変更して、各製品の操作の数を減らすことができる方法があるのでしょうか。すべて0の行の場合、これは簡単です。そのような行を示す行インデックスを格納するだけです。行の計算を再利用するために、複製された行に関する情報を保存することもできます。また、各行の平均差を最小化し、各行の差だけを計算するなど、行列の行の順序付けも検討しました。しかし、これはより複雑なパターンの問題にぶつかるようです。AAA この種の問題に対する既知の方法があるのか​​と思っていました。 編集:私が持っていたもう一つのアイデアは、それ以来ないということです。マトリックス内の一意の値の数はかなり少ないため、として製品を分解できます。ここで、は一意の値が1つしか含まれていませんが、これがこの問題に何らかの利点をもたらすかどうかはまだません。Ax=A1x+A2x+…AnxAx=A1x+A2x+…AnxAx = A_1x + A_2x + \dots A_nxAiA私A_i

1
ランダム
次の質問があります。 私は2人の行列があるとX,YX,YX, Y両方のサイズのm×pm×pm\times pとランダムIIDガウス行列GGGのサイズのm×km×km \times k、m≫p&gt;km≫p&gt;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 近似解も問題ありません。

1
次の式を計算する改良された方法はありますか?
対称行列と任意の行列X \ in \ mathbb {R} ^ {n \ times n}、およびベクトルv \ in \ mathbb {R } ^ {n \ times 1}、O(n ^ 2)時間で次の式を計算することは可能ですか?Y∈Rn×nY∈Rn×nY \in \mathbb{R}^{n \times n}X∈Rn×nX∈Rn×nX \in \mathbb{R}^{n \times n}v∈Rn×1v∈Rn×1v \in \mathbb{R}^{n \times 1}O(n2)O(n2)O(n^2) diag(XTYX)⋅vdiag(XTYX)⋅vdiag(X^TYX) \cdot v ここで、diag(X)diag(X)diag(X)は、主な対角要素がXの要素に等しく、非対角要素が0に等しいn×nn×nn \times n行列を返します。X^ TはXの転置行列です。XXXXTXTX^TXXX

1
循環三重対角行列を使用した線形方程式の解法
私の教科書にこの問題があります: 形である環状三対角行列、線形方程式系を解くための効率的なアルゴリズムを提案する: 行と列を交換せずに。複雑さを推定します。⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢a1c20⋮0d2b1a2⋱⋮⋯00b2⋱cn − 2⋯⋯⋯0⋱an − 2cn − 100⋮0bn − 2an − 1cんd10⋮0bn − 1aん⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥[a1b10⋯0d1c2a2b20⋮00⋱⋱⋱0⋮⋮⋮cn−2an−2bn−200⋯⋯cn−1an−1bn−1d20⋯0cnan]\begin{bmatrix} a_1&b_1&0&\cdots&0&d_1\\c_2&a_2&b_2&0&\vdots&0\\0&\ddots&\ddots&\ddots&0&\vdots\\\vdots&\vdots&c_{n-2}&a_{n-2}&b_{n-2}&0\\0&\cdots&\cdots&c_{n-1}&a_{n-1}&b_{n-1}\\d_2&0&\cdots&0&c_n&a_n\end{bmatrix} そして、私はこれにどのように取り組むか知りません。クラシック除去は非常に効率的に働くだろうこの行列との時間が、LETだと言うが、私は排除したいときに、問題があるcを2と1秒の行に追加され-st行- C 2O (n )O(n)O(n)c2c2c_{2}111のとき1=0。私はそれを行うことができない、としても1≠0、同じ問題は、このproccessの途中のどこかで発生する可能性があります。さらに、問題のテキストに記載されているように、行や列を入れ替えることは許可されていないため、このアプローチを何らかの方法で修正できるかどうかはわかりません。誰か助けてもらえますか?− c2a1⋅ [ a1b10⋯0d1]−c2a1⋅[a1b10⋯0d1]\frac{-c_{2}}{a_{1}}\cdot \begin{bmatrix} a_1&b_1&0&\cdots&0&d_1 \end{bmatrix}a1= 0a1=0a_1=0a1≠ 0a1≠0a_1\neq 0

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