我想解一个非线性常微分方程
θ2=(C+j(θ2))**-1*(f(t)–g(θ1)–h(θ0))
其中f()、g()、h()和j()是已经定义的函数,它们将θ2、θ1、θ0或t作为输入。θ2和θ1是θ0随时间t的二阶和一阶导数
我一直在用SciPy.odeint公司函数使用以下代码:
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)
方程式可改写为:
其中a和b是常数,F对应于(F(t)–g(θ1)–h(θ0))。你知道吗
它是θ“”的二阶多项式函数,有2个解(考虑b!=0和a^2+4*b*F>;0):
这个新方程的形式是y'=f(t,y),可以用正则ODE解算器求解。你知道吗
下面是使用solve_ivp替换odeint的示例:
相关问题 更多 >
编程相关推荐