问题描述
我正在尝试使用 Runge Kutta 方法,但我不断收到此错误。我试过改变 N 但即使它很低,它仍然有错误。当我尝试索引代码时,我似乎总是遇到此错误,请帮忙!
def rungekuta4(N,x0,y0,vx0,vy0,t0):
timetot=1000
h=timetot/N
x = np.zeros(N)
y = np.zeros(N)
vx = np.zeros(N)
vy = np.zeros(N)
t = np.zeros(N)
x[0]=x0
y[0]=y0
vx[0]=vx0
vy[0]=vy0
t[0]=t0
for i in range (N):
k1x=veLocityx(vx[i])
k1y=veLocityy(vy[i])
k1vx=accelerationx(x[i],y[i])
k1vy=accelerationy(x[i],y[i])
k2x=veLocityx(vx[i]+.5*h*k1vx)
k2y=veLocityy(vy[i]+.5*h*k1vy)
k2vx=accelerationx(x[i]+.5*h*k1x,y[i]+.5*h*k1y)
k2vy=accelerationy(x[i]+.5*h*k1x,y[i]+.5*h*k1y)
k3x=veLocityx(vx[i]+.5*h*k2vx)
k3y=veLocityy(vy[i]+.5*h*k2vy)
k3vx=accelerationx(x[i]+.5*h*k2x,y[i]+.5*h*k2y)
k3vy=accelerationy(x[i]+.5*h*k2x,y[i]+.5*h*k2y)
k4x=veLocityx(vx[i]+.5*h*k3vx)
k4y=veLocityy(vy[i]+.5*h*k3vy)
k4vx=accelerationx(x[i]+.5*h*k3x,y[i]+.5*h*k3y)
k4vy=accelerationy(x[i]+.5*h*k3x,y[i]+.5*h*k3y)
x[i+1]=x[i]+(h/6)*(k1x+2*k2x+2*k3x+k4x)
y[i+1]=y[i]+(h/6)*(k1y+2*k2y+2*k3y+k4y)
vx[i+1]=vx[i]+(h/6)*(k1vx+2*k2vx+2*k3vx+k4vx)
vy[i+1]=vy[i]+(h/6)*(k1vy+2*k2vy+2*k3vy+k4vy)
t[i+1]=t[i]+h
return t,x,y
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)