【发布时间】:2019-07-05 11:29:54
【问题描述】:
我正在使用scikits.odes.odeint 求解一个相对较大的 ODE 系统(40 个变量,100 个动力学参数)。我想通过为求解器提供一个雅可比来加快这个过程。但是,我不知道如何最好地为此目的定义 jacobian 并将其提供给求解器。
【问题讨论】:
我正在使用scikits.odes.odeint 求解一个相对较大的 ODE 系统(40 个变量,100 个动力学参数)。我想通过为求解器提供一个雅可比来加快这个过程。但是,我不知道如何最好地为此目的定义 jacobian 并将其提供给求解器。
【问题讨论】:
这是一个非常基本的符号 Jacobion,但它适用于大多数 ODE 求解器。
import sympy as sp
def rhs(t, y):
return [y[0],2*y[1]]
def jacob(t, y):
ydot = rhs(t,y)
J = sp.Matrix(ydot).jacobian(y)
J_func = sp.lambdify((t, y) , J)
return J_func
有更深入的指南here。
【讨论】: