当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python SciPy linalg.det用法及代码示例


本文简要介绍 python 语言中 scipy.linalg.det 的用法。

用法:

scipy.linalg.det(a, overwrite_a=False, check_finite=True)#

计算矩阵的行列式

行列式是一个标量,它是相关方阵系数的函数。对于奇异矩阵,行列式值为零。

参数

a (…, M, M) 数组

用于计算行列式的输入数组。

overwrite_a 布尔型,可选

允许覆盖 a 中的数据(可能会提高性能)。

check_finite 布尔型,可选

是否检查输入矩阵是否仅包含有限数。禁用可能会提高性能,但如果输入确实包含无穷大或 NaN,则可能会导致问题(崩溃、非终止)。

返回

det (…) 浮点数或复数

a 的行列式。对于堆叠数组,为输入的最后两个维度中的每个 (m, m) 切片返回一个标量。例如,形状为 (p, q, m, m) 的输入将产生形状为 (p, q) 的结果。如果所有维度均为 1,则无论 ndim 为何,都会返回标量。

注意

行列式的计算方法是使用 LAPACK 例程 ‘getrf’ 对输入执行 LU 分解,然后计算 U 因子的对角线项的乘积。

即使输入数组是单精度(float32或complex64),结果也会以双精度(float64或complex128)返回,以防止溢出。

例子

>>> import numpy as np
>>> from scipy import linalg
>>> a = np.array([[1,2,3], [4,5,6], [7,8,9]])  # A singular matrix
>>> linalg.det(a)
0.0
>>> b = np.array([[0,2,3], [4,5,6], [7,8,9]])
>>> linalg.det(b)
3.0
>>> # An array with the shape (3, 2, 2, 2)
>>> c = np.array([[[[1., 2.], [3., 4.]],
...                [[5., 6.], [7., 8.]]],
...               [[[9., 10.], [11., 12.]],
...                [[13., 14.], [15., 16.]]],
...               [[[17., 18.], [19., 20.]],
...                [[21., 22.], [23., 24.]]]])
>>> linalg.det(c)  # The resulting shape is (3, 2)
array([[-2., -2.],
       [-2., -2.],
       [-2., -2.]])
>>> linalg.det(c[0, 0])  # Confirm the (0, 0) slice, [[1, 2], [3, 4]]
-2.0

相关用法


注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.linalg.det。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。