类型错误:“模块”对象不可使用 rungekutte 调用

问题描述

我有一个作业,我在这里使用我的代码使用 Runge-Kutta 方法求解对称方程

import numpy as np
import matplotlib.pyplot as plt
import scipy.integrate as integrate
from matplotlib.legend_handler import HandlerLine2D
#input data
b=0.0529
cd=0.0        
cl=0.0     
cs=0.0
g=9.8
#persamaan diferensial biasa
def F(x,y):
  F=np.zeros(6)
  v=np.sqrt(y[0]**2+y[1]**2+y[2]**2)
  v0=np.sqrt(y[0]**2+y[1]**2)
  F[0]=-b*v*((cd*y[0])+((cl*y[0]*y[2]+cs*v*y[1])/v0))
  F[1]=-b*v*((cd*y[1])+((cl*y[1]*y[2]+cs*v*y[0])/v0))
  F[2]=b*v*(-cd*y[2]+cl*v0)-g
  F[3]=y[0]
  F[4]=y[1]
  F[5]=y[2]
  return F
x = 0.0 #mulai menghitung
xStop = 2.0 #selesai menghitung
y= np.array([10.0,10.0,0.0,0.0]) #kondisi awal{y}
h=0.01 #step size
freq = 20
#solusi numerik menggunakan Runge-Kutta orde4
X,Y = integrate(F,x,y,xStop,h)

但结果是这样

---> 29 X,h)
TypeError: 'module' object is not callable

我该如何解决这个问题?

解决方法

您的代码从 integrate 导入子模块 scipy。它是一个程序模块,而不是一个可调用的函数,因此是错误信息。

该模块也不包含固定步长 RK4 算法的实现,您必须从其他地方获取。另外,给它一个更具体的名称,如 RK4_integrate