- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在使用 Scipy null_space 时遇到问题。举个例子:
A = np.array([[7,3,2],[3,9,4],[2,4,5]])
eigen = np.linalg.eig(A)
输出特征=
(array([13.477, 5. , 2.523]),
array([[ 0.486, 0.873, -0.041],
[ 0.74 , -0.436, -0.511],
[ 0.464, -0.218, 0.858]]))
我在特征值元组中有特征值和特征向量。现在如果e
是 A
的特征值(例如 13.477),显然是零空间 A - e I
但是,不应为空:
null = la.null_space(A-eigen[0][0]*np.eye(3))
返回
array([], shape=(3, 0), dtype=complex128)
这应该是对应于 eigen[0][0]
的特征向量(请注意,当我为 eigen[0][1]
和 eigen[0][2]
运行相同的代码时,它会正确返回我们上面看到的特征向量)。为了检查这一点,我要求 (A-eI)
的特征值和特征向量:
null_eigen = np.linalg.eig(A-eigen[0][0]*np.eye(3))
输出为 null_eigen =
(array([-1.243e-14, -8.477e+00, -1.095e+01]),
array([[ 0.486, 0.873, -0.041],
[ 0.74 , -0.436, -0.511],
[ 0.464, -0.218, 0.858]]))
显然,对应于特征向量 13.477 的第一个特征值“几乎”为零,但为什么 scipy.linalg.null_space 没有拾取它?
最佳答案
来自 null_space
的文档,
rcond
: Relative condition number. Singular values s smaller thanrcond * max(s)
are considered zero. Default:floating point eps * max(M,N)
.
因此 rcond
确定有效的零空间。 float 学并不精确,因此对于特征值来说,这恰好滑到了阈值之上。对 rcond
使用更大的数字将得到预期的结果:
import numpy as np
from scipy.linalg import null_space
A = np.array([[7, 3, 2],
[3, 9, 4],
[2, 4, 5]])
eigen = np.linalg.eig(A)
print(eigen[1][:, 0])
print(null_space(A - eigen[0][0]*np.eye(3), rcond=1e-14))
输出:
[0.48622704 0.74041411 0.46407996]
[[-0.48622704]
[-0.74041411]
[-0.46407996]]
更多详情您还可以查看at the source code .
关于python - Scipy null_space 没有给我正确的答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59091003/
我在使用 Scipy null_space 时遇到问题。举个例子: A = np.array([[7,3,2],[3,9,4],[2,4,5]]) eigen = np.linalg.eig(A) 输
根据文档,scipy.linalg 包中应该有一个 null_space 函数。我使用的是python3,但无法导入该函数: import scipy.linalg.null_space as nul
我是一名优秀的程序员,十分优秀!