【发布时间】:2020-01-14 02:26:45
【问题描述】:
我想求解形式为
的非线性常微分方程Theta2 = (C + j(Theta2))**-1 * (f(t) – g(Theta1) -h(Theta0))
其中 f()、g()、h() 和 j() 是已经定义的函数,它们以 Theta2、Theta1、Theta0 或 t 作为输入。 Theta2 和 Theta1 是 Theta0 随时间 t 的二阶和一阶导数。
我一直在使用以下代码使用 SciPy.odeint 函数求解没有 j(Theta2) 项的方程:
from scipy.integrate import odeint
def ODE():
def g(Theta, t):
Theta0 = Theta[0]
Theta1 = Theta[1]
Theta2 = (1/C)*( f(t) - g(Theta1) - h(Theta0))
return Theta1, Theta2
init = 0, 0 # Initial conditions on theta0 and theta1 (velocity) at t=0
sol=odeint(g, init, t)
A = sol[:,1]
B = sol[:,0]
return(A, B)
【问题讨论】:
-
这里是一个起点:stackoverflow.com/a/50796835/8069403你能提供更多关于函数
j(Theta2)的信息吗? -
@xdze2 J(Theta2) 仅将 Theta2 作为输入,并为 Theta 2 的每个值生成一个输出。该函数由一系列常数乘以 Theta2 组成。简化了它的 C * Theta2 = 输出。我已经编辑了缺少 ^-1 的代码,这会使问题变得不清楚。