Это потому, что np.linspace(0,2001,100)
создает массив в диапазоне от 0 до 2001, но только с 100 точками, поэтому l[100]
выходит за границы.
Совершенно другим тоном: вам обязательно нужно попробовать векторизацию, a мощный инструмент, поддерживаемый 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()