Построение графика, но возникли проблемы с диапазоном - PullRequest
1 голос
/ 07 августа 2020

Вот мой код для построения графика, но я не понимаю ошибку, пожалуйста, помогите

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

Пожалуйста, помогите мне понять

1 Ответ

4 голосов
/ 07 августа 2020

Это потому, что 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...