ValueError:超出允许的最大大小,变量范围为0到3e33

时间:2017-08-05 07:26:38

标签: python numpy matplotlib

我对np.arange有这个奇怪的问题。我想绘制一个简单的方程式,基本上看起来像y = Ax ^ { - 1/3}(1-Bx ^ {4/3})^ {1/2}

然而,我可以用我提供的方程从wolfram mathematica获得一个几乎工作质量的情节,但我很难在python中生成相同的情节!

import numpy as np
import matplotlib.pyplot as plt
import math

# evenly sampled time at 200ms intervals
x = np.arange(0., 10**33, 10**8.)

plt.plot(x**(-1/3)*(1.102*10**20)*(1-(x**(4/3)*2.424*10**(-45)))**(1/2))

plt.xlim(math.pow(10,31), 3*math.pow(10,33))
plt.ylim(5*math.pow(10,8), 2.5*math.pow(10,9))

plt.xlabel("M(g)", fontsize =13)
plt.ylabel("R(cm)", fontsize=13)
plt.show()

我的变量x应该从0到3e33运行,我想在线性和loglog图中看到该图,但我有x范围的内存问题,如果我设置较小的范围,我基本上没有得到的情节所有。我相信我在这里做错了,我只是没有看到它。感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

代码中有几个问题:

  1. x分数过多。减少点数,例如1000分。
  2. x不应该从0开始,因为0**(-1/3)未定义(您不能除以0)。因此,x的合理定义可能是

    x = np.linspace(1e30, 1e33, 1001)
    
  3. x值实际上并未显示在图中,因为您只绘制yplt.plot(y)而不是yx:{{ 1}}
  4. 总的来说,

    plt.plot(x,y)

    将提供

    enter image description here