2014-03-13 4 views
0

다음 코드는 그래프를 생성하지 않습니다.빈 그래프 및 수학 도메인 오류

Y3 = (-1) *의 SQRT (E_y3/V-E_y3)

는 ValueError를 : 수학 도메인 오류

코드의 나머지 부분을 테스트하려면 내가 프로그램을 실행할 때 나는 다음과 같은 오류가 발생합니다 나는 그 라인을 빼고, 그것이 그 라인을 뺀 것이라고 생각했다. 그러나 그렇게하면 빈 그래프가 나타납니다. 제 목표는 0 내지 20의 값과 Y1 식을 그래프로되면, for 루프 내에서 0~20조차 값과 Y2 방정식 20

from pylab import plot,show 
from numpy import tan 
from math import sqrt 

w = 1 
v = 20 
m = 9.1094e-31 
h = 6.62606957e-34 

for E_y1 in range (21): 
    y1 = tan(sqrt(w**2*m*E_y1/2*h**2)) 
for E_y2 in range (2,22,2): 
    y2 = sqrt(v-E_y2/E_y2) 
for E_y3 in range (1,21,2): 
    y3 = (-1)*sqrt(E_y3/v-E_y3) 

x1 = E_y1 
x2 = E_y2 
x3 = E_y3 

plot(x1,y1) 
plot(x2,y2) 
plot(x3,y3) 
show() 

답변

0

0 내지 홀수 값으로 Y3 방정식는 할당 단일 값은 E_y1y1이고, 하나는 이고 다른 하나는 이후이며, 다른 하나는 이전 값보다 우선합니다. 원하는 것은 범위 나 목록을 나타내는 것입니다.

E_y1 = range(21) 
y1 = [tan(sqrt(w**2*m*x/2*h**2)) for x in E_y1] 
x1 = E_y1 
plot(x1,y1) 
show() 

지금 Ey1 숫자의 범위이며, y1는 목록입니다 구문은 다음과 같습니다.

그 도메인 오류에 대해 : 음수의 제곱근을 취하고있어 문제가 거의 발생하지 않습니다.

+0

감사합니다. 부정적인 오류의 근원이 해결되었고, 내가 거기에 있다는 것을 깨닫지 못했습니다. 당신이 준 구문은 매우 좋게 작동했습니다. 다시 한번 감사드립니다. – user3290682