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

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

17
Python用の高品質な非線形プログラミングソルバーはありますか?
解決すべきいくつかの挑戦的な非凸のグローバル最適化問題があります。現在、MATLABのOptimization Toolbox(特にfmincon()algorithm ='sqp'を使用)を使用していますが、これは非常に効果的です。ただし、私のコードのほとんどはPythonで作成されているため、Pythonでも最適化を行いたいと考えています。競合できるPythonバインディングを備えたNLPソルバーはありfmincon()ますか?ちがいない 非線形等式および不等式の制約を処理できる ユーザーがヤコビアンを提供する必要はありません。 グローバルな最適化を保証していなくても構いません(保証fmincon()しません)。私は、困難な問題や、それよりもわずかに遅い場合でも、ローカル最適にロバストに収束するものを探していfmincon()ます。 OpenOptで利用できるソルバーをいくつか試しましたが、MATLABのソルバーより劣っていfmincon/sqpます。 強調するために、私はすでに扱いやすい定式化と優れたソルバーを持っています。私の目標は、ワークフローをより合理化するために、単に言語を変更することです。 Geoffは、問題のいくつかの特性が関連している可能性があると指摘しています。彼らです: 10-400の決定変数 4〜100の多項式等式制約(1〜8の範囲の多項式次数) 決定変数の数の約2倍に等しい合理的な不等式制約の数 目的関数は決定変数の1つです 不等式制約のヤコビアンと同様に、等式制約のヤコビアンは密です。

6
マトリックス式のシンボリックソフトウェアパッケージ?
は対称で正定であることを知っています。Bは直交することがわかっています。AA\mathbf ABB\mathbf B 質問:ある対称正定値?回答:はい。B ⋅ A ⋅ B⊤B⋅A⋅B⊤\mathbf B \cdot\mathbf A \cdot\mathbf B^\top 質問:コンピューターがこれを教えてくれましたか?回答:おそらく。 行列に関する既知の事実を処理および伝播する記号代数システム(Mathematicaなど)はありますか? 編集:明確にするために、抽象的に定義されたマトリックスについてこの質問をしています。すなわち、私はとBの明示的なエントリを持っていません、私はそれらが両方とも行列であり、対称、正定等のような特定の属性を持っていることを知っています。AAABBB

4
正定対称(共分散)行列の逆行列を処理しますか?
統計とそのさまざまなアプリケーションでは、さまざまな用途で共分散行列を計算することがよくあります。場合によっては、さまざまな計算のためにこの行列の逆行列が必要になります(たとえば、この逆行列を(唯一の)中心行列とする2次形式)。このマトリックスの品質と使用目的を考えると、私は疑問に思います: 数値安定性の観点から、この逆を計算または使用する方法(2次形式または一般的な行列ベクトル乗算の場合)の最良の方法は何ですか?便利になる可能性のある因数分解?

10
SVDの堅牢なアルゴリズム
行列のSVDを計算するための簡単なアルゴリズムは何ですか?2×22×22 \times 2 理想的には、数値的に堅牢なアルゴリズムが欲しいのですが、単純な実装とそれほど単純ではない実装の両方を見てみたいと思います。Cコードが受け入れられました。 論文やコードへの参照はありますか?

5
スパース行列乗算で非ゼロの数を決定する最良の方法は何ですか?
両方の行列がCSCまたはCSR形式であると仮定して、スパース行列の乗算演算で事前に非ゼロの数を見つけるための高速で効率的な方法があるかどうか疑問に思いました。 smmpパッケージにあるものは知っていますが、CまたはC ++で既に実装されているものが必要です。 任意の助けをいただければ幸いです。前もって感謝します。

2
マトリックスを反転することが良くない理由の実際的な例
行列を反転して線形システムを解くことは、システムを直接解くか、LU、Cholesky、またはQR分解を使用するほど正確で効率的ではないため、お勧めできません。 しかし、実際の例ではこれを確認できませんでした。このコードを試しました(MATLABで) M = 500; A = rand(M,M); A = real(expm(1i*(A+A.'))); b = rand(M,1); x1 = A\b; x2 = inv(A)*b; disp(norm(b-A*x1)) disp(norm(b-A*x2)) 残差は常に同じ次数(10 ^ -13)です。 inv(A)* bがA \ bよりもはるかに不正確ではない実用的な例を提供できますか? ------質問の更新------ ご回答ありがとうございます。ただし、システム倍を解く必要があるとします。ここで、は常に同じ行列です。それを考慮してくださいnnnA x = bAバツ=bAx = bAAA -満杯であるため、と同じメモリ・ストレージが必要。AAAA− 1A−1A^{-1}AAA 条件数が小さいため、を正確に計算できます。AAAA− 1A−1A^{-1} その場合、LU分解を使用するよりもを計算する方が効率的ではないでしょうか?たとえば、私はこのMatlabコードを試しました:A− 1A−1A^{-1} %Set A and b: M = 1000; A ...

3

4
行列の行優先レイアウトと列優先レイアウト
密行列計算のプログラミングで、列優先レイアウトより行優先レイアウトを選択する理由はありますか? 選択したマトリックスのレイアウトに応じて、速度を上げるためにキャッシュメモリを効果的に使用するために適切なコードを記述する必要があります。 行優先レイアウトは、より自然でシンプルに見えます(少なくとも私には)。しかし、Fortranで書かれたLAPACKのような主要なライブラリは列の主要なレイアウトを使用するため、この選択をした理由がいくつかあるに違いありません。
16 matrix  fortran 

4
なぜHouseholder反射は行列を対角化できないのですか?
実際にQR分解を計算するときは、Householder反射を使用して、マトリックスの下部をゼロにします。対称行列の固有値を計算するために、Householder反射でできる最善の方法は、三重対角形にすることです。この方法で完全に対角化できない理由を確認する明白な方法はありますか?私はこれを簡単に説明しようとしていますが、明確なプレゼンテーションを思い付くことができません。

3
マトリックス平方根逆関数の効率的な計算
統計の一般的な問題は、対称正定行列の逆平方根を計算することです。これを計算する最も効率的な方法は何でしょうか? 私が出会ったいくつかの文献(私はまだ読んでいない)、およびいくつかの偶発Rコードここで私は便宜のためにここに再現されます、 # function to compute the inverse square root of a matrix fnMatSqrtInverse = function(mA) { ei = eigen(mA) d = ei$values d = (d+abs(d))/2 d2 = 1/sqrt(d) d2[d == 0] = 0 return(ei$vectors %*% diag(d2) %*% t(ei$vectors)) } 私はその行を理解しているかどうかはよくわかりませんd = (d+abs(d))/2。マトリックスの平方根逆関数を計算するより効率的な方法はありますか?R eigen関数はLAPACKを呼び出します。

3
行列ベクトル乗算のスケーリングが行われないのはなぜですか?
長い投稿で申し訳ありませんが、最初の段階で関連があると思ったものをすべて含めたかったのです。 私が欲しいもの Krylov Subspace Methods for Dense Matricesの並列バージョンを実装しています。主にGMRES、QMRおよびCG。(プロファイリング後)私のDGEMVルーチンは哀れなことに気付きました。それで、私はそれを分離することによってそれに集中することに決めました。12コアのマシンで実行してみましたが、以下の結果は4コアのIntel i3ラップトップ用です。傾向に大きな違いはありません。 私のKMP_AFFINITY=VERBOSE出力はここにあります。 私は小さなコードを書きました: size_N = 15000 A = randomly_generated_dense_matrix(size_N,size_N); %Condition Number is not bad b = randomly_generated_dense_vector(size_N); for it=1:n_times %n_times I kept at 50 x = Matrix_Vector_Multi(A,b); end これは、50回の反復でCGの動作をシミュレートすると思います。 私が試したもの: 翻訳 私はもともとFortranでコードを書いていました。C、MATLAB、Python(Numpy)に翻訳しました。言うまでもなく、MATLABとPythonは恐ろしいものでした。驚くべきことに、上記の値ではCはFORTRANよりも1〜2秒優れていました。一貫して。 プロファイリング 実行するコードのプロファイルを作成し、46.075数秒間実行しました。これは、MKL_DYNAMICがに設定されFALSE、すべてのコアが使用されていたときです。MKL_DYNAMICをtrueとして使用した場合、特定の時点で使用されていたコアの数は(およそ)半分だけです。詳細は次のとおりです。 Address Line Assembly CPU Time 0x5cb51c mulpd %xmm9, ...


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

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

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

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