中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助
鲲鹏小智

linalg.slogdet

功能描述

计算数组行列式的符号和绝对值的(自然)对数。

如果数组具有非常小或非常大的行列式,那么对det的调用可能会下溢或上溢。对于这些问题,这个函数更稳健,因为它计算行列式的对数,而不是行列式本身。

必选输入参数

参数名

类型

说明

a

array_like

输入数组,必须是正方形二维数组。

可选输入参数

无。

返回数据

参数名

类型

说明

sign

ndarray

代表行列式符号的数字。对于实矩阵,这是1、0或-1。对于复矩阵,这是一个绝对值为1的复数(即它在单位圆上),否则为0。

logdet

ndarray

行列式绝对值的自然对数。

如果行列式为零,则sign为0,logdet为-Inf。在所有情况下,行列式等于sign * np.exp(logdet)。

示例

>>> import numpy as np
>>> #二维数组[[a,b],[c,d]],行列式结果 ad - bc
>>> a = np.array([[1,2],[3,4]])
>>> a
array([[1, 2],
       [3, 4]])
>>> 
>>> (sign, logdet) = np.linalg.slogdet(a)
>>> (sign, logdet)
(-1.0, 0.6931471805599455)
>>> 
>>> sign * np.exp(logdet)
-2.0000000000000004
>>> 
>>> 
>>> a = np.array([[[1,2],[3,4]], [[1,2],[2,1]], [[1,3],[3,1]]])
>>> a
array([[[1, 2],
        [3, 4]],

       [[1, 2],
        [2, 1]],

       [[1, 3],
        [3, 1]]])
>>> 
>>> (sign, logdet) = np.linalg.slogdet(a)
>>> (sign, logdet)
(array([-1., -1., -1.]), array([0.69314718, 1.09861229, 2.07944154]))
>>> sign * np.exp(logdet)
array([-2., -3., -8.])
>>> 
>>> 
>>> np.linalg.det(np.eye(500) * 0.1)
0.0
>>> np.linalg.slogdet(np.eye(500) * 0.1)
(1.0, -1151.2925464970251)
>>>