python - 精确的计算和绘图

标签 python numpy scipy

我正在使用以下代码绘制一个函数。

from __future__ import division
from scipy.misc import comb
import matplotlib.pyplot as plt
import numpy as np

N = 100
X = np.arange(2,N)

def k_loop(w,n):
    K = np.arange(0, w+1)
    return (comb(w,K)*(comb(w,K)/2**w)**(3*float(n)/np.log(n))).sum()

def w_loop(n):
    v = [comb(n,w)*k_loop(w,n) for w in range(1,n+1)]
    return sum(v)

Y = [w_loop(n) for n in X]
plt.plot(X,Y)
plt.show()

但是我想确定没有数字错误。是否有可能让 python 准确地进行计算并且只在绘图时的最后一刻转换为 float ?日志可能不准确,但我希望尽可能保持其他一切准确。

最佳答案

如果您希望使用以 10 为基数的数字进行尽可能精确的计算,请尝试使用 decimal模块。

不过,这将需要重写您的代码。

  • decimal 有一个 lnlog10 函数,以及一个 power 函数。
  • 但您可能需要根据 decimal 重写 comb,或者使用 exact=True 并将结果转换为 十进制

关于python - 精确的计算和绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20593177/

相关文章:

python - scipy logsumexp() 是否处理下溢挑战?

python - Pandas - 将特定 iloc 的值添加到新的数据框列中

python - 奇怪的 numpy issubdtype 行为

python - Numpy,3d 数组的所有成对相关性

Python Pandas (Excel) 数据表代码问题

python - 完美模仿继承与组合

python - 将行和列的总和附加到矩阵

python - 值错误: object arrays are not supported

python - Kivy:使用一个切换按钮来更改另一个切换按钮的状态

python - 如果 Jinja2 没有小数值,如何四舍五入为零小数?