擅长:python、mysql、java
<p>除了使用<code>numpy.exp</code>而不是<code>math.exp</code>,还需要将<code>X</code>的数据类型指定为<code>float</code>,而不是{<cd5>}。对于<code>int32</code>,可表示的最大数为</p>
<pre><code>In [46]: np.iinfo('int32').max
Out[46]: 2147483647
</code></pre>
<p>并且<code>y=v**3</code>超过此值:</p>
^{pr2}$
<p>因此,您的值看起来像常量的原因是因为算术溢出。在</p>
<p>所以改变</p>
<pre><code>X = np.arange(x0, xf, dx)
</code></pre>
<p>到</p>
<pre><code>X = np.arange(x0, xf, dx, dtype='float')
</code></pre>
<hr/>
<pre><code>import matplotlib.pyplot as plt
import numpy as np
pi = np.pi
def planck(v,T):
h=6.62606957*(10**-34.0)
c=3*(10**8.0)
k=1.3806488*(10**-23.0)
x=(h*8*pi/c**3.0)
y=v**3
exponente = (h*v/k*T)
ex = np.exp(exponente)-1
PLANCK=(x*y)*(ex**-1)
return PLANCK
x0, xf, dx = 800,2*(10**8),1000
X = np.arange(x0, xf, dx, dtype='float')
P1 = planck(X, 3000)
plt.plot(X, P1)
plt.show()
</code></pre>
<p><img src="https://i.stack.imgur.com/rWldz.png" alt="enter image description here"/></p>