Python求矩阵的范数和行列式
Posted 微小冷
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 ∣ ) \\max(\\vert a\\vert) max(∣a∣) |
-inf | min(sum(abs(a), axis=1)) | min ( ∣ a ∣ ) \\min(\\vert a\\vert) 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
n
n,设
a
i
a_i
ai为矩阵
a
a
a中的元素,则矩阵的
n
n
n范数为
∥ a ∥ n = ∑ i a i n n \\Vert a\\Vert_n=\\sqrt[n]\\sum_ia_i^n ∥a∥n=ni∑ain
核范数又称“迹范数” (trace norm),表示矩阵的所有奇异值之和。
Frobenius范数可定义为
∥ a ∥ f = ∑ i = 1 m ∑ j = 1 n ∣ a i j ∣ 2 = trace ( A T A ) = ∑ i = 1 min m , n σ i 2 \\Vert a\\Vert_f=\\sqrt\\sum_i=1^m\\sum^n_j=1\\vert a_ij\\vert^2=\\sqrt\\operatornametrace(A^TA)=\\sqrt\\sum_i=1^\\min\\m,n\\\\sigma_i^2 ∥a∥f=i=1∑mj=1∑n∣aij∣2=trace(ATA)=i=1∑minm,nσi2
其实质是向量的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
《数值分析》-- 向量和矩阵的范数Ax=b的误差分析
一、向量和矩阵的范数
范数用来度量向量和矩阵的大小。
1.1 向量的范数
- 定义
- 常用范数
1.2 矩阵的范数
- 定义
- 定理
二、误差分析
- 数据扰动
δ x = A − 1 δ b = > ∣ ∣ δ x ∣ ∣ < ∣ ∣ A − 1 ∣ ∣ ⋅ ∣ ∣ δ b ∣ ∣ \\delta x = A^-1 \\delta b => ||\\delta x|| < || A^-1|| · ||\\delta b|| δx=A−1δb=>∣∣δx∣∣<∣∣A−1∣∣⋅∣∣δb∣∣
∣ ∣ b ∣ ∣ = ∣ ∣ A x ∣ ∣ ||b|| = ||Ax|| ∣∣b∣∣=∣∣Ax∣∣ ≤ \\le ≤ ∣ ∣ A − 1 ∣ ∣ ⋅ ∣ ∣ x ∣ ∣ = > || A^-1|| · ||x|| => ∣∣A−1∣∣⋅∣∣x∣∣=> 1 ∣ ∣ x ∣ ∣ \\frac 1||x|| ∣∣x∣∣1 ≤ \\le ≤ ∣ ∣ A ∣ ∣ ∣ ∣ b ∣ ∣ \\frac ||A||||b|| ∣∣b∣∣∣∣A∣∣
总结
- 理论
以上是关于Python求矩阵的范数和行列式的主要内容,如果未能解决你的问题,请参考以下文章