首页 > 解决方案 > 绘制图表但存在范围问题

问题描述

这是我绘制图表的代码,但我不理解错误请帮助

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

请帮我理解

标签: python

解决方案


这是因为np.linspace(0,2001,100)生成了一个范围从 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()

推荐阅读