La matrice restituisce la funzione numpy.gradient
in base al numero di punti dati/spaziatura dei punti dati. È questo comportamento previsto? Ad esempio:Funzione gradiente numpy e derivati numerici
y = lambda x: x
x1 = np.arange(0,10,1)
x2 = np.arange(0,10,0.1)
x3 = np.arange(0,10,0.01)
plt.plot(x1,np.gradient(y(x1)),'r--o')
plt.plot(x2,np.gradient(y(x2)),'b--o')
plt.plot(x3,np.gradient(y(x3)),'g--o')
restituisce il grafico .
Solo il gradiente di y (x1) restituisce il risultato corretto. Che cosa sta succedendo qui? C'è un modo migliore per calcolare la derivata numerica usando numpy?
Acclamazioni
Impressionante, grazie pabaldonedo. Ho visto che nel manuale ma la "distanza di campionamento" era una terminologia sconosciuta per me. Un'ultima domanda: cosa succede se la distanza del campione non è uniforme? Non c'è nulla nel manuale. – user1654183
Se la distanza non è uniforme, è necessario calcolarla manualmente. – pabaldonedo
@ user1654183 Ho modificato la mia risposta per includere una possibile soluzione per il caso in cui la distanza del campione non è uniforme. – pabaldonedo