下面粘贴的是我的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()
```