怎么用Python求矩阵的范数和行列式

WBOY
发布: 2023-05-10 23:10:06
转载
1242 人浏览过

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范数为

怎么用Python求矩阵的范数和行列式

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

Frobenius范数可定义为

怎么用Python求矩阵的范数和行列式

其实质是向量的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求矩阵的范数和行列式的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
来源:yisu.com
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!