Python 使用四元函数求解二阶 ODE

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

我正在研究阻尼驱动摆的动力学,其二阶 ODE 定义如 so,具体来说,我正在编程:

d^2y/dt^2 + c * dy/dt + sin(y) = a * cos(wt)

import numpy as np
import matplotlib.pyplot as plt
from scipy import integrate


def pendeq(t,y,a,c,w):
    y0 = -c*y[1] - np.sin(y[0]) + a*np.cos(w*t)
    y1 = y[1]
    z = np.array([y0, y1])
    return z

a = 2.1
c = 1e-4
w = 0.666667     # driving angular frequency

t = np.array([0, 5000])   # interval of integration
y = np.array([0, 0])      # initial conditions

yp = integrate.quad(pendeq, t[0], t[1], args=(y,a,c,w))

这个问题看起来确实与需要帮助解决python中的二阶非线性ODE,但我收到了错误

Supplied function does not return a valid float.

我做错了什么??

python numpy scipy numerical-integration
1个回答
3
投票

integrate.quad
要求提供的函数(
pendeq
,在您的情况下)仅返回浮点数。您的函数正在返回一个数组。

© www.soinside.com 2019 - 2024. All rights reserved.