Holen Ableitung von Daten in python

Schreibe ich ein Programm, um-Derivat. InterpolatedUnivariateSpline ist für die Berechnung von f(x+h). Die rote Linie ist die Ableitung des Cosinus, die grüne Linie ist Cosinus consine, die Blaue Linie ist die Sinus-Funktion. Die rote und Blaue Linie sind aufeinander abgestimmt. Es funktioniert gut in den folgenden.

Holen Ableitung von Daten in python

from scipy.interpolate import InterpolatedUnivariateSpline
import numpy as np 
import matplotlib.pyplot as plt

pi = np.pi
x = np.arange(0,5*pi,0.2*pi)
y = np.cos(x) 
f2 = InterpolatedUnivariateSpline(x, y)
#Get dervative
der = []
for i in range(len(y)):

    h = 1e-4
    der.append( ( f2(x[i]+h)-f2(x[i]-h) )/(2*h) )
der = np.array(der)   

plt.plot(x, der, 'r', x, y, 'g', x, -np.sin(x),'b')
plt.show()

Aber stoße ich auf ein problem. In meinem Projekt, meine variable x(Frequenz) variieren von 10^7 bis 2.2812375*10^9, der Schritt ist 22487500,so dass ich ändern, array x.
Als Ergebnis bekomme ich Folgendes Ergebnis.

Holen Ableitung von Daten in python

Die Ableitung ist eine Linie und fast nahe 0, ist Es nicht -Sinus-Funktion. Wie kann ich dieses Problem lösen?

  • InterpolatedUnivariateSpline hat ein derivitive - Methode. Gibt es einen Grund, warum du es nicht benutzt?
  • Wie es scheint, ein Bedeutungsverlust problem. Könnten Sie teilen x durch so etwas wie 1e7 oder erhöhen h zu etwas um die Größenordnung der 1e5. Auch wenn x hat die genug hohe Auflösung eine einfachere numerisch differenzieren Sie die Funktion wäre dy = np.diff(y) / np.diff(x). Diese Weise tun Sie keine sorgen über die Einstellung h.
  • Hi! wwii, ich versuche auch derivitive in InterpolatedUnivariateSpline Es das gleiche Ergebnis erhalten Sie unten.
  • Ja! Ich Teile x durch 1e9 um abgeleitete Rechte. Auch dy = np.diff(y) / np.- diff(x) funktioniert gut, Aber ich brauche Sie zum anpassen der Länge von x ist.
  • Super!!! Froh, dass ich helfen konnte.
  • Ich umgewandelt mein Kommentar in eine richtige Antwort, um sich an die Richtlinien halten.
  • Wow!!! Vielen Dank für deine Antwort! Ich bin besorgt über diese Seite gelöscht werden, wenn es keine Antwort gibt.

InformationsquelleAutor radiosan | 2016-06-03
Schreibe einen Kommentar