Python différence finie de fonctions?

J'ai été en regardant autour de Numpy/Scipy pour les modules contenant de différence finie de fonctions. Cependant, la chose la plus proche que j'ai trouvé est numpy.gradient(), ce qui est bon pour le 1er ordre différences finies d'ordre 2 de la précision, mais pas tellement si vous êtes désireux d'ordre supérieur des instruments dérivés ou des méthodes plus précises. Je n'ai pas encore trouvé de nombreux modules spécifiques pour ce genre de chose; la plupart des gens semblent être en train de faire un "rouler propre" chose qu'ils ont besoin d'eux. Donc ma question est si quelqu'un sait de tous les modules (soit une partie de Numpy/Scipy ou un module tiers) qui sont spécifiquement dédiés à l'ordre supérieur (à la fois en termes de précision et de produits dérivés) méthodes des différences finies. J'ai mon propre code sur lequel je travaille, mais c'est actuellement une sorte de lent, et je ne vais pas tenter de l'optimiser si il y a quelque chose de déjà disponibles.

Note que je parle de différences finies, pas de produits dérivés. J'ai vu les deux scipy.misc.derivative() et Numdifftools, qui prennent la dérivée d'une fonction analytique, je n'en ai pas.

  • Serait en interpolant les données, puis à l'aide de scipy.misc.derivative sur la fonction d'interpolation de travail pour vous?
  • Jetez un oeil à numpy.diff (docs.scipy.org/doc/numpy/reference/generated/numpy.diff.html).
  • Aussi, si vos données est périodique, il est scipy.fftpack.diff (docs.scipy.org/doc/scipy/reference/generated/...). Il est un exemple de son utilisation ici: wiki.scipy.org/Cookbook/KdV
  • Je suppose que, en théorie, cela pourrait fonctionner, si je suis en train de lire la documentation correctement, en définissant le paramètre dx être le même que l'espacement de la grille et de les forcer x0 être à l'un des points de la grille. Cependant, mon but est de l'utiliser pour les 2 - et 3 - dimensions des tableaux, donc, pour une MxNxP tableau, je dois créer NxP interp1d objets d'un dérivé dans le M sens, ce qui semble un peu lent. Il faudrait également une boucle Python, que je voudrais éviter, pour la même raison.
  • Les données ne seront pas périodique, en général. Je n'avais pas trouvé numpy.diff (en quelque sorte), mais qui ressemble à elle seule ne 1st-précision de l'ordre (avant - arrière ou de différenciation).
  • Que voulez-vous dire exactement par "1er-précision de l'ordre"?
  • La précision se réfère ici à l'erreur dans les méthodes de différences finies rapprochement résultant de la troncature de la série de Taylor. Plus précise des différences finies méthodes de garder autour de plus de termes de la série de Taylor, et sont donc plus proches de la vraie dérivée en ce point. 1ère commande maintient autour de peu de termes d'ordre 2, et ainsi de suite.
  • OK je ne suis pas sûr de comprendre comment vous pouvez avoir un développement en série de taylor pour un numérique tableau où chaque coefficient a plus d'un ordre de précision, mais ce n'est probablement pas l'endroit pour essayer de l'apprendre 😛 Avez-vous essayé de convolution avec la dérivée nième d'une gaussienne?
  • Je devrais avoir dit que la série de Taylor est utilisé dans le calcul de l'approximation. Je suis pas familier avec la convolution avec une dérivée nième d'une méthode Gaussienne, cependant, peut vous fournir tout complément d'information?

InformationsquelleAutor Tim Supinie | 2013-09-24