我创建了以下代码来实现Runge-Kutta RK4方法:
import numpy as np
u = np.zeros((steps+1, 3))
u[0] = u0.copy()
i=0
h6=h/6
for step in range(steps):
k1 = f(u[i])
k2 = f(u[i] + (k1/2)*h)
k3 = f(u[i] + (k2/2)*h)
k4 = f(u[i] + h*k3)
u[i+1] = u[i] + (k1 + 2*k2 + 2*k3 + k4)*h6
i+=1
return u
f()
是派生函数,在这种情况下不依赖于t
。该方法生成一个3d数组点,这是问题的解决方案。现在我想通过将for
循环转换为matricial形式来使这更有效,但我还没有能够做到这一点。有人能帮助我吗?