索引 10 超出轴 0 的边界,大小为 10 错误

问题描述

我正在尝试使用 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 (将#修改为@)