矩阵的范数、谱半径和条件数

🏷️ 必发365手机在线登录 📅 2025-07-21 02:53:22 👤 admin 👀 9060 ❤️ 622
矩阵的范数、谱半径和条件数

1. 矩阵范数

范数常被用来度量某个向量空间(或矩阵)中的每个向量的长度或大小。

其性质具有:

1) 非负性(正定性):$\left\| x\right\|\geqslant 0$,当且仅当$x=0$时,$\left\| x\right\|=0$

2) 齐次性:$\left\| \alpha x\right\|=\left| \alpha \right| \left\| x\right\|,\alpha \in R$

3) 三角不等式:$\left\|x+y\right\|\leqslant \left\|x\right\|+\left\|y\right\|,x,y\in S$

有三种常用范数:

1-范数:$\left \| A \right \|_{1}= \mathop{max}\limits_{1\le j\le n}\sum\limits_{i=1}^m\left | a_{i,j} \right |$,又被称为列和范数 ,是矩阵中每个列向量中元素绝对值之和的最大值;

2-范数:$\left \| A \right \|_{2}=\sqrt{\lambda _{1}}$,其中,$\lambda _{1}$为矩阵$A^{T}A$的特征值绝对值中的最大值,又被称为谱范数,是矩阵$A^{T}A$的特征值绝对值中的最大值的开平方;

$\infty$-范数:$\left \| A \right \|_{\infty}= \mathop{max}\limits_{1\le i\le n}\sum\limits_{j=1}^{m}\left | a_{i,j} \right |$,又被称为行和范数,是矩阵中每个行向量中元素绝对值之和的最大值。

在Python中 常用numpy.linalg.norm求范数,其形式为:numpy.linalg.norm(A, ord = B)

其中,A为矩阵,ord为范数类型,默认为2,$\infty$-范数为np.inf

例如:

import numpy as np

A=np.array([[1,-1,2],[0,2,-3],[4,1,1]])

x=np.array([[1],[1],[-1]])

Ax=np.dot(A,x)#矩阵相乘,求Ax

Ax_norm = np.linalg.norm(Ax,ord = np.inf)#计算∞范数

print(Ax)

print(Ax_norm)

其结果为:

[[-2]

[ 5]

[ 4]]

5.0

2. 矩阵的谱半径

矩阵的谱半径为矩阵的特征值的绝对值中的最大值,表示为:$\rho(A)=max(\left| \lambda _{i}\right|) $

对于求解谱半径的问题,可以转化为求特征值的绝对值中的最大值,求特征值常采用numpy.linalg.eig(A)

e,v=np.linalg.eig(A)#求A的特征值和特征向量e,v

spectural_radius = np.max(np.abs(e))#选择特征值的绝对值的最大值

print(spectural_radius)

其结果为:

4.060647027554143

3. 矩阵的条件数

矩阵A的条件数是判断矩阵病态与否的一种度量,条件数越大矩阵越病态。其表达式通常为:$cond(A)=\left \| A^{-1} \right \|\left \| A \right \| $

由此可以看出矩阵的条件数与范数有关。

通常使用的条件数有:

(1) $cond(A)_{\infty}=\left \| A^{-1} \right \| _{\infty} \left \| A \right \| _{\infty} $

(2) $cond(A)_{2}=\left \| A \right \| _{2} \left \| A^{-1} \right \| _{2}=\sqrt{\frac{\lambda _{max}(A^{T} A) }{\lambda _{min} (AA^{T}) } } $

又被称为谱条件数,当A为对称矩阵时,

$cond(A)_{2} =\sqrt{\frac{\lambda _{1} }{\lambda _{n} } } $

其中,$\lambda _{1}$和$\lambda _{n}$为A的特征值的绝对值的最大和最小值。

A_norm = np.linalg.norm(A,ord = np.inf)

A_inverse = np.linalg.inv(A)

A_inverse_norm = np.linalg.norm(A_inverse,ord = np.inf)

cond_A = A_norm * A_inverse_norm

print(cond_A)

结果为:

132.0

相关推荐

绍兴创维热水器维修
365bet.com游戏奖金

绍兴创维热水器维修

📅 07-09 👀 4887
单县位置图,区位图、单县在哪里
365bet.com游戏奖金

单县位置图,区位图、单县在哪里

📅 07-10 👀 9200
揭秘《幽明录》:人死了变鬼 鬼死了变什么呢?
365bet.com游戏奖金

揭秘《幽明录》:人死了变鬼 鬼死了变什么呢?

📅 06-27 👀 7394