scipy.linalg.pinv¶
- scipy.linalg.pinv(a, atol=None, rtol=None, return_rank=False, check_finite=True, cond=None, rcond=None)[源代码]¶
计算矩阵的(Moore-Penrose)伪逆。
利用矩阵的奇异值分解计算矩阵的广义逆
U @ S @ V
在经济模式中,并且仅拾取与显著奇异值相关联的列/行。如果
s
的最大奇异值。a
,则有效分界值由以下公式确定atol + rtol * s
。任何低于此值的奇异值都被认为是无关紧要的。- 参数
- a(M,N)类数组
要伪逆的矩阵。
- ATOL:浮点,可选
绝对阈值项,默认值为0。
1.7.0 新版功能.
- rtol:浮点,可选
相对阈值条件,默认值为
max(M, N) * eps
哪里eps
的数据类型的计算机精度值。a
。1.7.0 新版功能.
- return_rank布尔值,可选
如果为True,则返回矩阵的有效秩。
- check_finite布尔值,可选
是否检查输入矩阵是否仅包含有限个数字。禁用可能会带来性能提升,但如果输入确实包含无穷大或NAN,则可能会导致问题(崩溃、非终止)。
- 条件,条件浮动,可选
在旧版本中,这些值用于
atol
使用rtol=0
。如果两个都给了rcond
覆盖cond
因此密码是不正确的。因此,强烈建议使用以上公差,而不建议使用以上公差。事实上,如果提供,atol,rtol优先于这些关键字。在 1.7.0 版更改: 不赞成,而赞成
rtol
和atol
参数,并将在未来的SciPy版本中删除。在 1.3.0 版更改: 以前,缺省的中断值是
eps*f
哪里f
曾经是1e3
对于单精度和1e6
为了双倍精度。
- 退货
- B(N,M)ndarray
矩阵的伪逆 a 。
- rank集成
矩阵的有效秩。如果出现以下情况,则返回 return_rank 是真的。
- 加薪
- LinAlgError
如果奇异值分解计算不收敛。
示例
>>> from scipy import linalg >>> rng = np.random.default_rng() >>> a = rng.standard_normal((9, 6)) >>> B = linalg.pinv(a) >>> np.allclose(a, a @ B @ a) True >>> np.allclose(B, B @ a @ B) True