Bất kỳ ai cũng có thể cung cấp một ví dụ về việc cung cấp một jacobian cho một hàm integrate.odeint
trong SciPy ?. Tôi cố gắng chạy mã này từ hướng dẫn SciPy odeint example nhưng dường như Dfunc (gradient) không bao giờ được gọi.Tại sao không phải là Dfunc (gradient) được gọi trong khi sử dụng integration.odeint trong SciPy?
from numpy import * # added
from scipy.integrate import odeint
from scipy.special import gamma, airy
y1_0 = 1.0/3**(2.0/3.0)/gamma(2.0/3.0)
y0_0 = -1.0/3**(1.0/3.0)/gamma(1.0/3.0)
y0 = [y0_0, y1_0]
def func(y, t):
return [t*y[1],y[0]]
def gradient(y,t):
print 'jacobian' # added
return [[0,t],[1,0]]
x = arange(0,4.0, 0.01)
t = x
ychk = airy(x)[0]
y = odeint(func, y0, t)
y2 = odeint(func, y0, t, Dfun=gradient)
print y2 # added
Hoàn hảo. Rõ ràng hơn tài liệu SciPy. Đây là chính xác những gì tôi muốn, cảm ơn ali_m! – lumartor