我想计算矩阵的秩,并引入一定的相对容差来考虑数值误差。我使用以下代码:
A = np.random.randn(n,n)
r = np.linalg.matrix_rank(A, rtol = 1e-5)
但我收到以下错误:'TypeError:matrix_rank() 得到了意外的关键字参数 'rtol''
如此处所写:https://numpy.org/doc/stable/reference/ generated/numpy.linalg.matrix_rank.html,我不明白为什么它不起作用。
您的 NumPy 版本不支持 np.linalg.matrix_rank 中的 rtol 关键字,因此您可以升级它或使用此代码
import numpy as np
A = np.random.randn(4, 4)
tol = 1e-5
u, s, vh = np.linalg.svd(A)
rank = np.sum(s > tol * np.max(s))
print("Rank:", rank)