Python中的常用数学操作

Python中的常用数学操作

矩阵

范数

numpy.linalg.norm(x, ord=None, axis=None, keepdims=False)

x: 矩阵
ord: 范数的阶。默认为‘fro’。
当ord是正整数时,矩阵范数由对应的向量范数决定,(称为该向量范数的从属范数)。
∣ ∣ x ∣ ∣ o r d = ( ∑ i = 1 n x i o r d ) 1 / o r d ||x||_{ord} = (\sum_{i = 1}^{n}x_{i}^{ord})^{1/ord} xord=(i=1nxiord)1/ord
∣ ∣ A ∣ ∣ = max ⁡ x ≠ 0 ∣ ∣ A x ∣ ∣ o r d ∣ ∣ x ∣ ∣ o r d = max ⁡ ∣ ∣ x ∣ ∣ o r d = 1 ∣ ∣ A x ∣ ∣ o r d ||A|| = \max_{x\ne 0}\frac{||Ax||_{ord}}{||x||_{ord}} = \max_{||x||_{ord}= 1}||Ax||_{ord} A=x=0maxxordAxord=xord=1maxAxord
特别的,
o r d = 1 , ∣ ∣ A ∣ ∣ 1 = m a x 1 ≤ j ≤ n ∑ i = 1 n ∣ a i j ∣ (最大列和) ord = 1, \quad ||A||_{1} = max_{1\leq j \leq n}\sum_{i=1}^{n}|a_{ij}| \quad \text{(最大列和)} ord=1,A1=max1jni=1naij(最大列和)
o r d = inf ⁡ , ∣ ∣ A ∣ ∣ inf ⁡ = m a x 1 ≤ i ≤ n ∑ j = 1 n ∣ a i j ∣ (最大行和) ord = \inf, \quad ||A||_{\inf} = max_{1\leq i \leq n}\sum_{j=1}^{n}|a_{ij}| \quad \text{(最大行和)} ord=inf,Ainf=max1inj=1naij(最大行和)
o r d = 2 , ∣ ∣ A ∣ ∣ 2 = [ ρ ( A T A ) ] 1 / 2 (最大奇异值, ρ  为谱半径) ord = 2, \quad ||A||_{2} = [\rho(A^TA)]^{1/2}\quad \text{(最大奇异值,$\rho$ 为谱半径)} ord=2,A2=[ρ(ATA)]1/2(最大奇异值,ρ 为谱半径)
o r d ord ord为负整数时,其实不再是数学上的范数,表示的是对应的
∣ ∣ A ∣ ∣ = min ⁡ ∣ ∣ x ∣ ∣ o r d = 1 ∣ ∣ A x ∣ ∣ o r d ||A|| = \min_{||x||_{ord}= 1}||Ax||_{ord} A=xord=1minAxord
此外,
o r d = ‘ f r o ’ , ∣ ∣ A ∣ ∣ f r o = ( ∑ i , j = 1 n ∣ a i j ∣ 2 ) 1 / 2 (Frobenius范数) ord = ‘fro’, \quad ||A||_{fro} = (\sum_{i,j=1}^{n}|a_{ij}|^2)^{1/2}\quad \text{(Frobenius范数)} ord=fro,Afro=(i,j=1naij2)1/2Frobenius范数)
o r d = ‘ n u c ’ , ∣ ∣ A ∣ ∣ n u c = 所有奇异值之和 (nuclear范数) ord = ‘nuc’, \quad ||A||_{nuc} = \text{所有奇异值之和 (nuclear范数)} ord=nuc,Anuc=所有奇异值之和 (nuclear范数)

条件数

对于矩阵 A A A,条件数
c o n d ( A ) = ∣ ∣ A ∣ ∣ ⋅ ∣ ∣ A − 1 ∣ ∣ cond(A) = ||A||\cdot||A^{-1}|| cond(A)=AA1

numpy.linalg.cond(x, p=None)

x: 矩阵
p: 用于确定使用哪种矩阵范数。同numpy.linalg.norm的参数ord。注意,默认为2-norm!

特征值

numpy.linalg.eig(x)

x: 矩阵
return:分为两部分,一个一维数组w表示全体特征值,和一个二维数组,第i列为 w [ i ] w[i] w[i]的归一化的特征向量。

当求特征值算法不收敛时会报错。

谱半径

数学上,称一个矩阵 A A A的全体特征值的集合为谱,记作 σ ( A ) \sigma(A) σ(A)。谱半径
ρ ( A ) = max ⁡ λ ∈ σ ( A ) ∣ λ ∣ \rho(A) = \max_{\lambda\in\sigma(A)} |\lambda| ρ(A)=λσ(A)maxλ

谱半径在数值分析中很有用,例如,判断迭代法是否收敛。numpy没有直接的函数可以调用,可以通过eig得到

max(abs(eig(x)[0]))

行列式

numpy.linalg.det(x)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值