
pythonで、lamda = np.linalg.inv(sigma)
でsigmaが2x2の変数で、これを繰り返し計算していると、何回めかに
下記のようなエラーが出ます。下の値で、pythonでインターラクティブに計算して
見たのですが、ちゃんと逆行列は求まります。何が悪いのでしょうか?
lamda=[[ 0.16138508 0.03359245]
File "/Users/tetsuomiyoshi/PycharmProjects/nonparametricbayes2/nonparamerticbayes2.py", line 255, in <module>
[ 0.03359245 0.14452796]]
p_rate = p_update(X, c_first, mu, beta, nu)
lank=1
File "/Users/tetsuomiyoshi/PycharmProjects/nonparametricbayes2/nonparamerticbayes2.py", line 170, in p_update
lamda = np.linalg.inv(sigma + sigma0)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy/linalg/linalg.py", line 519, in inv
ainv = _umath_linalg.inv(a, signature=signature, extobj=extobj)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy/linalg/linalg.py", line 90, in _raise_linalgerror_singular
raise LinAlgError("Singular matrix")
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
先に行列式を求めて、絶対値がある程度以下なら逆行列は求めない。
という方法で回避自体はできますが。
ただ、それでいいのか
ロジックやデータがおかしいのが真の原因ではないか
ということは確認するのがいいかと思います。
念の為
array([[ -1.69855324e+08, 9.27898313e+07],
[ 9.27898313e+07, -5.06899188e+07]])
の e はエラーではありません。 -1.69855324e+07 は -1.69855324 * (10**7) の意味です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel VABについて 下記記述が...
-
End Sub が必要です。
-
DLL内からの外部変数の参照
-
MATLABのコンパイルについて
-
エクセルで特定の列が0表示の場...
-
教えて下さい
-
UserForm1.Showでエラーになり...
-
メッセージボックスのOKボタ...
-
TERA TERMを隠す方法
-
特定のPCだけ動作しないVBAマク...
-
String""から型'Double'への変...
-
配列数式の解除
-
ExcelのVBA。public変数の値が...
-
一つのTeratermのマクロで複数...
-
文字列内で括弧を使うには
-
エクセルで縦に並んだデータを...
-
Excel_マクロ_現在開いているシ...
-
エクセルで別のセルにあるふり...
-
メモ帳(テキストデータ)をExc...
-
配列でデータが入っている要素...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
End Sub が必要です。
-
Excel VABについて 下記記述が...
-
フォートランのエラーについて...
-
intel fortranのエラーで困って...
-
他クラスからForm1内コントロル...
-
ラズパイ上の、pythonのエラー...
-
初歩的な質問ですが・・・
-
プロシージャ名のところでエラ...
-
python プログラミング vim
-
C言語の質問です。
-
Texに詳しい方よろしくお願いい...
-
構造体のポインタ参照
-
C++のことで・・教えてください。
-
VBでエラー'ActiveX component ...
-
ダブルコートのエスケープ
-
ISLispのsetq関数について教え...
-
typedef による2重定義
-
43:syntax error at end of input
-
解説サイトに従ったfortran並列...
-
コンパイル時のエラー
おすすめ情報
a = np.array([[0.24183635, 0.44269067], [0.44269067, 0.81036215]])
の逆行列を求めている所で、
これは実際にpythonで計算すると、
array([[ -1.69855324e+08, 9.27898313e+07],
[ 9.27898313e+07, -5.06899188e+07]])
になるようなのですが、
行列式の値がほとんど0に近い値なので起きているエラーのような気がするのですが、
これを回避する方法とかあるのでしょうか?