gpt4 book ai didi

python - python中具有大值的矩阵的矩阵求逆

转载 作者:太空宇宙 更新时间:2023-11-03 14:49:32 25 4
gpt4 key购买 nike

我正在 python 中进行矩阵求逆,我发现很奇怪,结果因数据规模而异。

在下面的代码中,预计 A_inv/B_inv = B/A。然而,它表明 A_inv/B_inv 和 B/A 之间的差异随着数据规模的增加而变得越来越大......这是因为 Python 无法精确计算大值矩阵的矩阵逆吗?

此外,我检查了 B 的条件数,无论比例如何,它都是一个常数 ~3.016。

谢谢!!!

import numpy as np
from matplotlib import pyplot as plt

D = 30
N = 300

np.random.seed(10)
original_data = np.random.sample([D, N])
A = np.cov(original_data)
A_inv = np.linalg.inv(A)


B_cond = []
diff = []

for k in xrange(1,10):
B = A * np.power(10,k)
B_cond.append(np.linalg.cond(B))
B_inv = np.linalg.inv(B)

### Two measurements of difference are used

diff.append(np.log(np.linalg.norm(A_inv/B_inv - B/A)))
#diff.append(np.max(np.abs(A_inv/B_inv - B/A)))



# print B_cond

plt.figure()
plt.plot(xrange(1,10), diff)
plt.xlabel('data(B) / data(A)')
plt.ylabel('log(||A_inv/B_inv - B/A||)')
plt.savefig('Inversion for large matrix')

最佳答案

我可能是错的,但我认为它来自机器中的数字表示。当您处理大量数字时,您的逆矩阵的大小将非常小(接近于零)。而且接近于零, float 的表示不够精确,我猜...... https://en.wikipedia.org/wiki/Floating-point_arithmetic

关于python - python中具有大值的矩阵的矩阵求逆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45983852/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com