【发布时间】:2014-04-15 05:58:48
【问题描述】:
我有一个微分方程系统,需要计算雅可比行列式。下面的代码抛出AttributeError: 'list' object has no attribute 'ravel'。我错过了什么?
import numpy as np
import numdifftools as ndt
def rhs(z, t=0):
x,y = z
xdot = (x/5 + y)*(-x**2+1)
ydot = -x*(-y**2+1)
return [xdot, ydot]
Jfun = ndt.Jacobian(rhs)
Jfun([1,1])
【问题讨论】:
-
旁白:如果您使用的是 Python 2,请记住使用
from __future__ import division、传递浮点数或编写x/5.0。否则你会遇到整数除法的问题(否则你的固定代码会返回零雅可比矩阵。) -
因为这个系统将是一个用户输入,因此我不能保证浮动输入,我猜
from __future__ import division是正确的做法吗? -
当然。或者您可以直接在用户输入上调用
float,或者通过创建float dtype 的array。两者都行。