Я пытаюсь построить аранжировку и результат уравнения, используя данные аранжировки. Я получаю эту ошибку:

NameError: имя 'N' не определено

Код:

import numpy as np 
import matplotlib.pyplot as plt

T = np.linspace(0.01, 4.5, 0.01)

for i in T:
    N = (2.63*10**-16)*((2.71828**(6.93*i))-1)+((4.05*10**-6)*i)

plt.plot (N,T) 
plt.show()
2
Javier Eduardo Suarez Valencia 7 Июл 2019 в 01:36

3 ответа

Лучший ответ

Вы используете np.linspace неправильно. Третий параметр - это количество шагов.

import numpy as np
import matplotlib.pyplot as plt

T = np.linspace(0.01, 4.5, 450)
N = (2.63 * 10 ** -16) * ((2.71828 ** (6.93 * T)) - 1) + (
        (4.05 * 10 ** -6) * T)

plt.plot(N, T)
plt.show()

Также вам не нужен цикл for.

enter image description here

2
Stephen Rauch 6 Июл 2019 в 23:06

Как отметил @Stephen Rauch, третий аргумент linspace - это количество баллов. Таким образом, если num меньше 1, T пуст и N не назначен:

import numpy as np

T = np.linspace(0.01, 4.5, 0.01)
print(len(T)) # results 0

С помощью Numpy.arange вы можете определить начало Остановись и сделай шаг как:

import numpy as np 
import matplotlib.pyplot as plt

T = np.arange(0.01, 4.5, 0.01)
N = (2.63*10**-16)*((2.71828**(6.93*T))-1)+((4.05*10**-6)*T)

plt.plot (N,T) 
plt.show()
0
Masoud 6 Июл 2019 в 23:20

Помимо того, что вам нужно правильно использовать linspace, если вам интересно, как заставить цикл for работать, одним из способов является использование списков для хранения ваших значений, а затем построение списка сразу.

import numpy as np 
import matplotlib.pyplot as plt

T = np.linspace(0.01, 4.5, 450)
N = []

for i in T:
    N.append((2.63*10**-16)*((2.71828**(6.93*i))-1)+((4.05*10**-6)*i))

plt.plot (N,T) 
plt.show()
0
Sheldore 7 Июл 2019 в 13:15