在学习计算方法的时候,线性方程组的迭代法中的雅可比(Jacobi)迭代法和高斯-塞德尔(Gauss-Seidel)迭代法的收敛条件中需要求矩阵的谱半径,而经过查阅资料,python numpy库中没有直接求谱半径的函数。
谱半径的定义为:
设A是n × n矩阵,λ1, …, λn是其特征值,则A的谱半径ρ(A)定义如下:
即矩阵A的谱半径等于矩阵A的特征值绝对值的最大值。
由于python numpy库中有直接求矩阵特征值的函数,所以我们只要对所得特征值集合求绝对值的最大值即可
import numpy as py
def spectral_radius(M):
a,b=np.linalg.eig(M) #a为特征值集合,b为特征值向量
return np.max(np.abs(a)) #返回谱半径