以下の2つの特異行列があります。
[[1,2,3],[6,5,4],[9,8,7]]
[[0,0,0],[10,20,30],[1,4,-3]]
それぞれの逆行列を以下で記載するコードで算出しようとすると、一方は例外が発生せず何かしらの値が出力され、もう一方は"Singular matrix"の例外が発生します。
どうして前者の特異行列は"Singular matrix"の例外が発生しないのでしょうか?
この例外が発生しないと、特異行列であるか否かが判定できません。
◆例外が発生しないケース
python
1import numpy as np 2 3A = np.array([[1,2,3],[6,5,4],[9,8,7]]) 4x = np.linalg.inv(A) 5print(x)
実行結果
[[-8.50330000e+14 -2.83443333e+15 1.98410333e+15] [ 1.70066000e+15 5.66886666e+15 -3.96820666e+15] [-8.50330000e+14 -2.83443333e+15 1.98410333e+15]]
◆例外が発生するケース
python
1import numpy as np 2 3A = np.array([[0,0,0],[10,20,30],[1,4,-3]]) 4x = np.linalg.inv(A) 5print(x)
実行結果
Traceback (most recent call last): File "/Users/xxx/xxx/xxx/test.py", line 4, in <module> x = np.linalg.inv(A) File "<__array_function__ internals>", line 180, in inv File "/opt/homebrew/lib/python3.9/site-packages/numpy/linalg/linalg.py", line 552, in inv ainv = _umath_linalg.inv(a, signature=signature, extobj=extobj) File "/opt/homebrew/lib/python3.9/site-packages/numpy/linalg/linalg.py", line 89, in _raise_linalgerror_singular raise LinAlgError("Singular matrix") numpy.linalg.LinAlgError: Singular matrix
実行環境:mac Monterey、python 3.9.13、numpy 1.23.1

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/08/02 02:17