如何用Python求矩阵的范数和行列式


本篇内容介绍了“如何用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'核范数-
infmax(sum(abs(a), axis=1))max ? ( ∣ a ∣ )
-infmin(sum(abs(a), axis=1))min ? ( ∣ a ∣ )
0-sum(a!=0)
1max(sum(abs(a), axis=0))
-1min(sum(abs(a), axis=0))
22-范数(最大奇异值)
-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的覆写开关和有限检查。

示例如下

importnumpyasnpfromscipyimportlinalga=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.268321870.646153630.09006217][0.631063190.655737650.35842304][0.666293220.169998360.92357658]]>>>np.trace(x)1.8476361016546932

“如何用Python求矩阵的范数和行列式”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注主机评测网网站,小编将为大家输出更多高质量的实用文章!


上一篇:如何用Python制作我的核酸检测日历

下一篇:如何用Python实现点云的地面检测


Copyright © 2002-2019 测速网 https://www.inhv.cn/ 皖ICP备2023010105号 城市 地区 街道
温馨提示:部分文章图片数据来源与网络,仅供参考!版权归原作者所有,如有侵权请联系删除!
热门搜索