gpt4 book ai didi

python - 实验确定矩阵行列式的计算复杂度

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

我需要帮助通过实验确定矩阵 nxn 的行列式的计算复杂度

我的代码:

    import numpy as np
import timeit
t0 = time.time()
for n in range(1, 10):
A = np.random.rand(n, n)
det = np.linalg.slogdet(A)
t = timeit.timeit(lambda: det)
print(t)

但是我得到每个 n 的相同时间,因此,计算复杂度:O(N) 这是不正确的,因为它应该是 O(N^3)。任何帮助将不胜感激。

最佳答案

就其值(value)而言,任何有意义的基准测试通常都需要足够大的 N 来为计算机提供一些可以咀嚼的东西。 10x10 的矩阵还不够大,无法开始观察复杂性。开始输入 100、1000、10000 等数字,然后您会看到缩放比例。

例如,如果我稍微修改一下你的代码

for n in range(1, 14):
t0 = time.time()
p = 2**n
A = np.random.rand(p,p)
det = np.linalg.slogdet(A)
print('N={:04d} : {:.2e}s'.format(p, time.time() - t0))

这导致

N=0002 : 4.35e-02s
N=0004 : 0.00e+00s
N=0008 : 0.00e+00s
N=0016 : 5.02e-04s
N=0032 : 0.00e+00s
N=0064 : 5.02e-04s
N=0128 : 5.01e-04s
N=0256 : 1.50e-03s
N=0512 : 8.00e-03s
N=1024 : 3.95e-02s
N=2048 : 2.05e-01s
N=4096 : 1.01e+00s
N=8192 : 7.14e+00s

您可以看到对于非常小的 N 值,一些小值优化和技巧使得很难看到 O() 的复杂性,但是作为值N 增长,您可以开始看到缩放。

关于python - 实验确定矩阵行列式的计算复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40687798/

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