Не могу построить данные после - PullRequest
2 голосов
/ 07 июля 2019

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

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()

Ответы [ 3 ]

2 голосов
/ 07 июля 2019

Вы используете 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

0 голосов
/ 07 июля 2019

Помимо того, что вам нужно правильно использовать 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 голосов
/ 07 июля 2019

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