运行时 - mpmath 精度 | Python

问题描述

我正在使用 mpmath 库,并且有兴趣检查提高精度对计算/执行时间的影响。我遇到了一个奇怪的现象,我找不到解释。 当我检查逐项乘法的时间时,我得到精度 16 (mp.dps = 16) 和精度 1024 (mp.dps = 1024) 的相同 执行时间。但是,当我检查特征值计算的时间时,我发现时间有显着差异。时序之间的比率约为 7 (time_eig_1024prec/time_eig_16prec = 7)。 使用 5k-long 和 100k-long 复向量(用于条目乘法)和 16x16 矩阵执行的操作特征值。 我的代码

mp.dps = 16; 
#mp.dps = 1024; 
mp.pretty = False
AVG = 10
#element-wise vector multiplication
N=100000
times = np.zeros((1,AVG))
for i in range(AVG):
    r1 = 10*np.random.rand(1,N)
    i1 = 10*np.random.rand(1,N)
    c1 = np.vectorize(mpc)(np.vectorize(complex)(r1,i1))
    r2 = 10*np.random.rand(1,N)
    i2 = 10*np.random.rand(1,N)
    c2 = np.vectorize(mpc)(np.vectorize(complex)(r2,i2))
    start_time = time.time()
    prod = np.vectorize(fmul)(c1,c2)
    times[0,i] = time.time() - start_time
print("--- %s seconds | element-wise vector multiplication ---" % numpy.mean(times))

#calculating Eigenvalues
M = 16
times = np.zeros((1,AVG))
for i in range(AVG):
    mat = 10*np.random.rand(M,M)
    A = mp.matrix(mat)
    start_time = time.time()
    e = numpy.array(mp.eig(A)[0])
    times[0,i] = time.time() - start_time
print("--- %s seconds | eig ---" % numpy.mean(times))

如果有人能向我解释为什么提高精度不会影响逐项乘法运算的时间,而是乘以 7 倍的特征值计算执行时间,我将不胜感激。

谢谢大家! 以利

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)