繁体   English   中英

当我认为我已经定义了它时,我的变量出现未定义

[英]My variable is coming up as not defined, when I think I have defined it

这是我的代码

#project starts here
import numpy as np
import scipy.integrate
import matplotlib.pyplot as plt
from numpy import pi
from scipy.integrate import odeint

def deriv(cond,t):
    for q in range (0,N):
        i=6*q
        dydt[i]=cond[i+3]
        dydt[i+1]=cond[i+4]
        dydt[i+2]=cond[i+5]
        r=sqrt((cond[i])**2 +(cond[i+1])**2 +(cond[i+2])**2)
        dydt[i+3]=-G*M*cond[i]/(r**3)
        dydt[i+4]=-G*M*cond[i+1]/(r**3)
        dydt[i+5]=-G*M*cond[i+2]/(r**3)
    return dydt

G=1
M=1
N=12
vmag=((G*M)/(2))**(0.5)
theta = np.linspace(0,2*pi,N)
x=2*np.cos(theta)
y=2*np.sin(theta)
vx=-vmag*np.sin(theta)
vy=vmag*np.cos(theta)
z=np.zeros(N)
vz=np.zeros(N)
t=np.linspace(0,30,100)

cond=list(item for group in zip(x,y,z,vx,vy,vz) for item in group)
sln=odeint(deriv, cond, t, args=(G,M))

我收到有关未定义 dydt 的错误消息。 我以为我已经在我的导数函数中定义了它。 我的目的是让它成为一个向量,其中包含 cond 数组的适当导数(因此使用 i)。 为什么我的定义错误?

“dydt”未定义,您应该先定义它,然后才能对其使用索引。

关于您的代码,您可以执行以下操作:

i = 6*q
dydt = list(range(i))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM