Runge-Kutta方法针对绕太阳运行的轨道的四阶—设置具有序列的数组元素

问题描述 投票:0回答:1

我一如既往地实现了四阶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错误,我想这是使用返回一个...的函数来求解两个微分方程的。

python-3.x differential-equations runge-kutta
1个回答
0
投票
您的错误是行
© www.soinside.com 2019 - 2024. All rights reserved.