我一如既往地实现了四阶runge-kutta方法,但是这次给了我一个Value错误,我想这是使用返回四个元素的数组的函数来求解两个微分方程。有人可以告诉我我错了吗?要求解的方程式如下:
<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9USkIyVC5wbmcifQ==” alt =“在此处输入图像描述”>“ >>
我的代码是:
import numpy as np
import matplotlib.pyplot as plt
G=6.674184*(10**-11)
M=1.9891*(10**30)
def f(r,t): #definition of equations
x=r[0]
z=r[1]
y=r[2]
z1=[3]
R=np.sqrt((x**2)+(y**2))
fx=z
fz=-(G*M)*(x/(R**3))
fy=z1
fz1=-(G*M)*(y/(R**3))
return(np.array([fx,fz,fy,fz1],float))
a=0
b=500
N=1000
time=np.arange(a,b,h)
r=np.array([4e12,0,0,500],float) #initial conditions
xpositions=[]
vel_x=[]
ypositions=[]
vel_y=[]
for t in time: #Runge-Kutta Method
xpositions.append(r[0])
vel_x.append(r[1])
ypositions.append(r[2])
vel_y.append(r[3])
k1=h*f(r,t)
k2=h*f(r+0.5*k1,t+(h*0.5))
k3=h*f(r+0.5*k2,t+(h*0.5))
k4=h*f(r+k3,t+h)
r+=(1/6)*(k1+2*k2+2*k3+k4)
我一如既往地实现了四阶runge-kutta方法,但是这次给了我一个Value错误,我想这是使用返回一个...的函数来求解两个微分方程的。