問題タブ [qr-decomposition]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
algorithm - コンパニオン マトリックスを使用したルート検索
一変数多項式の実根をすべて見つけたいと思います。たとえば、Jenkins-Traub アルゴリズムを使用できますが、コンパニオン マトリックスを使用してそれを解決する方法を学びたいと考えています。
多項式をコンパニオン行列に変換する方法を知っており、QR 分解を行うスクリプトを見つけました: http://quantstart.com/articles/QR-Decomposition-with-Python-and-NumPy
ここで迷ってしまいます。次に何をすればよいのでしょうか? 複数の分解を計算する必要があると思いますが、そうすると、常に同じ結果が得られます(明らかに)。また、最初にコンパニオン行列をヘッセンベルグ形式に変換すると役立つ可能性があることも読みましたが、どうすればよいでしょうか? 次に、「シフト」があります-それらは何ですか?
http://www.nr.com/webnotes/nr3web17.pdfも見つけましたが、何も理解していないので、もっと簡単な方法があるかどうかを知りたいです (遅くても安定性が低い場合でも)。
つまり、http://en.wikipedia.org/wiki/QR_algorithmを読む
「固有値を計算したい実数行列を A とします」 わかりました、これは
私のコンパニオン行列ですよね?「QR分解Ak = QkRkを計算します」
これはQ, R = householder(A)
最初のリンクからのものですよね?「その後、Ak+1 = RkQk を形成します」
簡単です。R と Q を乗算するだけです「特定の条件下で、[2] 行列 Ak は A の Schur 形式である三角行列に収束します。三角行列の固有値は対角線上にリストされ、固有値の問題が解決されます。」
/li>
...待って、何?私は試した:
しかし、何の進歩も見られず、正しい根に近い数字さえ見当たりません。
お願いします、誰か私にこれを説明してもらえますか?
PS: 少なくとも非常に単純化された用語で、LAPACK の仕組みを理解したいので、やみくもに LAPACK などを使用したくありません。
PPS: http://adorio-research.org/wordpress/?p=184もあります(最初の方法とどう違うのかわかりませんが...)
r - Rで列ピボットを使用してQR分解でRマトリックスを計算する
A
次のコードで取得できるマトリックスがあります。
matrix の列ピボットで qr 分解を適用したいのですA
が、次のコードを実行して matrix を取得しますが、これはmatrix と同じである必要があることがR
わかっています。行または列の順序に従って同じではないのはなぜですか? の正しい行列を取得するにはどうすればよいですか?t(R)%*%R
A
R
matlab - QR 分解を使用して Matlab で最小二乗法を解く
私は、Matlab を使用して、通常の最小二乗法 (OLS) で回帰モデルを推定しています。
モデルはy = xB
で、x
は次元 の非常にまばらな行列500000 x 2500
です。QR分解を使用しています:
そして、次のように見積もりb
ます
私の質問は、ここで数値エラーを心配する必要があるかどうかです。追加の反復が必要ですか? R
、またはの条件番号を確認する必要がありR'R
ますか? どんなガイダンスでも大歓迎です。
python - scipy/numpy で n > m の長方形行列の QR 分解
n > m の amxn 長方形行列 A があります。A のランク r <= m が与えられると、簡約 QR 分解により、mxr 次元の行列 Q と rxn 次元の行列 R が得られます。Q の列は、A の範囲の正規直交基底です。R は上三角になりますが、階段状になります。ピボットを持つ R の列は、A の独立した列に対応します。
numpy.linalg から qr 関数を適用すると (同じように思われる scipy.linalg にもこの関数のバージョンがあります)、mxm 次元の行列 Q と mxn 次元の R を返します。行列 A は m 未満です。これは、Q の列が Re^m の正規直交基底である「完全な」QR 分解のようです。numpy.linalg;scipy.linalg の関数 qr によって返されるこの R 行列を通じて、A の独立した列を識別することは可能ですか?
c++ - Eigen SparseQR 逆行列は、Matlab のように正確ではありません
私のアルゴリズムでは、疎行列の逆演算を採用し、QR 分解法を使用した A*x=b 法を使用して解いています。Matlab では、QR 操作は正常に実行されます。
しかし、Eigen ライブラリを使用してコードを C++ に変換しようとすると、同じ答えが得られませんでした。場合によっては、Matlab の結果と比較して、ベクトル x の各要素に沿って何らかの値のシフトがあります。ただし、シフトを引き起こすこの値は、ベクトル内のすべての要素で一定です。
私がしていることを垣間見る:
x は、 A.inverse()*b の結果を含む最終的なベクトルですよね?
さらに、完全な行列として解こうとしましたが、Matlab と比較して C++ で異なる答えが得られました。
ここで誰かが同様の問題に直面しましたか? はいの場合は、ヘルプやポインターを歓迎します。一方、私の理解に何か問題がある場合は、修正も歓迎します。
ありがとう。