Python 使用 RK4 评估二阶 ODE

计算科学 Python 龙格库塔
2021-11-30 23:30:03

下面粘贴的是我的python代码。这是一个 4 阶 runge kutta,它评估 2 阶 ode:y'' +4y'+2y=0,初始条件 y(0)=1, y'(0)=3。

我需要帮助修复它。当我运行我的代码时,我的解析解与我的数值解不匹配,我的教授说它们应该是一样的。我试过编辑这一堆,似乎无法弄清楚出了什么问题。如果有人可以查看我的代码并让我知道是否有问题,那就太好了。谢谢!

import numpy as np
    import matplotlib.pyplot as plt

    def ode(y):
        return np.array([y[1],(-2*y[0]-4*y[1])])

    tStart=0

    tEnd=5

    h=.1

    t=np.arange(tStart,tEnd+h,h)

    y=np.zeros((len(t),2))

    y[0,:]=[1,3]

    for i in range(1,len(t)):
        k1=ode(y[i-1,:])
        k2=ode(y[i-1,:]+h*k1/2)
        k3=ode(y[i-1,:]+h*k2/2)
        k4=ode(y[i-1,:]+h*k3)
    
    y[i,:]=y[i-1,:]+(h/6)*(k1+2*k3+2*k3+k4)

    plt.plot(t,y[:,0])
    plt.plot(t,1-t)
    plt.grid()
    plt.gca().legend(('y(t)',"y'(t)"))
    plt.show()
```
0个回答
没有发现任何回复~