本篇内容介绍了“如何用Python求矩阵的范数和行列式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
创新互联建站凭借在网站建设、网站推广领域领先的技术能力和多年的行业经验,为客户提供超值的营销型网站建设服务,我们始终认为:好的营销型网站就是好的业务员。我们已成功为企业单位、个人等客户提供了成都做网站、成都网站设计服务,以良好的商业信誉,完善的服务及深厚的技术力量处于同行领先地位。
在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范数为

核范数又称“迹范数” (trace norm),表示矩阵的所有奇异值之和。
Frobenius范数可定义为

其实质是向量的2-范数在矩阵中的自然推广。
除了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 np from scipy import linalg a = np.array([[1,2,3], [4,5,6], [7,8,9]]) linalg.det(a) # 0.0 a = 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
“如何用Python求矩阵的范数和行列式”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!