2016-05-12 3 views
1

Wenn ich die Ableitung von Sin (x)^4 durch direkte Ableitung der Ableitung von 4 Sin (x)^3 Cos berechnet und plotte (x) für x = [0 bis 180 Grad] mit dem folgenden Code bekomme ich das richtige Ergebnis.Der Gradient von Sin (x)^4 ist nicht gleich, wenn er aus seiner Ableitung berechnet wird

import numpy as np 
import matplotlib.pyplot as plt 

a = np.power(np.sin( np.deg2rad(range(0,180)) ),4) 
c = 4 * np.sin(np.deg2rad(range(0,180)))**3 * np.cos(np.deg2rad(range(0,180))) 
plt.plot(a) 
plt.plot(c)  
plt.show() 

Aber wenn ich versuche, das gleiche mit der numpy Gradient-Funktion zu tun, dann gibt es mir ein anderes Ergebnis heißt der Gradient ist einfach wie gerade Linie. Zum Beispiel mit dem folgenden Code:

import matplotlib.pyplot as plt 
a = np.power(np.sin( np.deg2rad(range(0,180)) ),4) 
plt.plot(a) 
plt.plot(np.gradient(a))  
plt.show() 

Ich bin nach wie vor nicht in der Lage des den Grund des Unterschieds zu verstehen. Könnte mir bitte jemand einen Hinweis geben, warum sie anders sind? Eigentlich habe ich in der Simulationsarbeit Werte in einem Array und ich muss die Ableitung von ihnen über phi = Bereich (0,180) berechnen.

Antwort

2

Sie geben den Abstand zwischen den Beispielen nicht korrekt an (der Standardwert ist 1). Ihre Antwort ist daher falsch skaliert.

Versuchen:

a = np.power(np.sin(np.deg2rad(range(0,180))),4) 
plt.plot(a) 
plt.plot(np.gradient(a, np.deg2rad(1))) 

Jetzt c und np.gradient(a, np.deg2rad(1)) sollte fast identisch sein.

Verwandte Themen