怎么用Python求矩阵的范数和行列式
时间:2023-05-11 02:44
在 在 其中 若 核范数又称“迹范数” (trace norm),表示矩阵的所有奇异值之和。 Frobenius范数可定义为 其实质是向量的2-范数在矩阵中的自然推广。 除了 其中 在 示例如下 其中 以上就是怎么用Python求矩阵的范数和行列式的详细内容,更多请关注Gxl网其它相关文章!scipy.linalg
的函数中,往往会提供两种参数,其一是check_finite
,当为True
时将进行有限检查,另一类是overwrite_xxxx
,表示xxxx
在计算过程中是否可以被覆写。简洁起见,后文中说a
提供覆写开关,就表示存在一个参数overwrite_a
,当其为True
时,a允许计算过程中被覆写;若说提供有限检查开关,则代表提供check_finite
参数。范数
scipy.linalg
中提供了函数norm
用来求范数,其定义为norm(a, ord=None, axis=None, keepdims=False, check_finite=True)
ord
用于声明范数的阶 ord 矩阵范数 向量范数 None 弗罗贝尼乌斯范数 2-范数 'fro'
弗罗贝尼乌斯范数 - 'nuc'
核范数 - inf max(sum(abs(a), axis=1))
max ( ∣ a ∣ ) -inf min(sum(abs(a), axis=1))
min ( ∣ a ∣ ) 0 - sum(a!=0)
1 max(sum(abs(a), axis=0))
-1 min(sum(abs(a), axis=0))
2 2-范数(最大奇异值) -2 最小奇异值 a
为向量,若ord
为非零整数,记作n nn,设a i a_iai为矩阵a aa中的元素,则矩阵的n nn范数为scipy.linalg
之外,numpy.linalg
中也提供了norm
,其参数为norm(x, ord=None, axis=None, keepdims=False)
order
的可选参数与scipy.linalg
中的norm
函数相同。行列式
scipy.linalg
中,行列式函数为det
,其定义非常简单,除了待求矩阵a
之外,就只有a
的覆写开关和有限检查。import numpy as npfrom scipy import linalga = np.array([[1,2,3], [4,5,6], [7,8,9]])linalg.det(a)# 0.0a = np.array([[0,2,3], [4,5,6], [7,8,9]])linalg.det(a)# 3.0
迹
scipy.linalg
不提供trace
函数,但是numpy
提供,其定义为umpy.trace(a, offset=0, axis1=0, axis2=1, dtype=None, out=None)
offset
为偏移量,表示相对于主对角线的偏移axis1, axis2
表示坐标轴dtype
用于调整输出值的数据类型>>> x = np.random.rand(3,3)>>> print(x)[[0.26832187 0.64615363 0.09006217] [0.63106319 0.65573765 0.35842304] [0.66629322 0.16999836 0.92357658]]>>> np.trace(x)1.8476361016546932