Qualcuno può fornire un esempio di fornitura di un jacobiano a una funzione integrate.odeint
in SciPy ?. Cerco di eseguire questo codice dal tutorial di SciPy odeint example ma sembra che Dfunc (gradiente) non venga mai chiamato.Perché non viene chiamato il Dfunc (gradiente) durante l'utilizzo di integr.odeint in 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
Perfetto. Più chiaro della documentazione di SciPy. Questo è esattamente quello che voglio, grazie ali_m! – lumartor