Python 绘制图形但存在范围问题

Python 绘制图形但存在范围问题,python,Python,这是我的代码画一个图表,但我不理解错误,请帮助 import matplotlib.pyplot as plt import math l=np.linspace(0,2001,100) c=3*(10**8) h=6.626*(10**-34) K=1.38*(10**-23) E=[] for i in range(100,2001): y=2*(math.pi)*h*(c**2)/((l[i]**5)*math.exp((h*c/l[i]*K*T)-1)) E.appen

这是我的代码画一个图表,但我不理解错误,请帮助

import matplotlib.pyplot as plt
import math

l=np.linspace(0,2001,100)
c=3*(10**8)
h=6.626*(10**-34)
K=1.38*(10**-23)
E=[]
for i in range(100,2001):
    y=2*(math.pi)*h*(c**2)/((l[i]**5)*math.exp((h*c/l[i]*K*T)-1))
    E.append(y)

plt.plot(l,E)
plt.show
以下是错误:

y=2*(math.pi)*h*(c**2)/((l[i]**5)*math.exp((h*c/l[i]*K*T)-1))
IndexError: index 100 is out of bounds for axis 0 with size 100

请帮助我理解

这是因为
np.linspace(02001100)
生成的数组范围为0到2001,但只有100个点,因此
l[100]
是不允许的

以完全不同的基调:您绝对应该尝试矢量化,这是一种由numpy数组支持的强大工具,使代码更易于实现:

import numpy as np
import matplotlib.pyplot as plt

l = np.linspace(0,2001,100)
c = 3*(10**8)
h = 6.626*(10**-34)
K = 1.38*(10**-23)
y = 2*np.pi*h*(c**2) / ( (l**5)*np.exp((h*c/l*K*T)-1) )

plt.plot(l,y)
plt.show()

这是因为
np.linspace(02001100)
生成的数组范围为0到2001,但只有100个点,因此
l[100]
是不受限制的

以完全不同的基调:您绝对应该尝试矢量化,这是一种由numpy数组支持的强大工具,使代码更易于实现:

import numpy as np
import matplotlib.pyplot as plt

l = np.linspace(0,2001,100)
c = 3*(10**8)
h = 6.626*(10**-34)
K = 1.38*(10**-23)
y = 2*np.pi*h*(c**2) / ( (l**5)*np.exp((h*c/l*K*T)-1) )

plt.plot(l,y)
plt.show()

但问题是,使用您的代码,我得到的最大值为2,但我的代码在修复错误后给出的最大值为1。为什么?你用的是什么代码?你是如何修复这个错误的?我已经在这个帖子中重新提交了这个问题,并附上了图表。你能帮帮我吗?解决了。这是我这边表达的一个错误。很抱歉谢谢兄弟,但问题是,使用你的代码,我得到的最大值为2,但我的代码在修复错误后给出的最大值为1。为什么?你用的是什么代码?你是如何修复这个错误的?我已经在这个帖子中重新提交了这个问题,并附上了图表。你能帮帮我吗?解决了。这是我这边表达的一个错误。很抱歉谢谢你,兄弟