不能用det判断哦,得用cond
m = np.random.randn(500, 4); m = m.T @ m * 1e-12; print(f'det = {np.linalg.det(m)}'); print('-' * 32); print(np.linalg.inv(m) @ m); print('-' * 32); print(m @ np.linalg.inv(m)); print('-' * 32); print(f'cond = {np.linalg.cond(m)}')
det = 5.6088940463798e-38
--------------------------------
[[ 1.000 -0.000 0.000 -0.000]
[ 0.000 1.000 -0.000 -0.000]
[ 0.000 0.000 1.000 -0.000]
[ 0.000 -0.000 0.000 1.000]]
--------------------------------
[[ 1.000 -0.000 0.000 0.000]
[ 0.000 1.000 0.000 -0.000]
[ 0.000 -0.000 1.000 0.000]
[-0.000 -0.000 -0.000 1.000]]
--------------------------------
cond = 1.203413506219224
【 在 bluegangster 的大作中提到: 】
: 矩阵的秩是0,矩阵奇异,见下面的代码:
: import numpy as np
: mul=np.array([[ 2.79358336e-03, -4.33801272e-03, 1.49405606e-01, -1.49494674e-01],
: ...................
--
FROM 148.75.74.*