2017-10-23 3 views
-1

Wenn ich eine Funktion als Array haben, und ich will seine Steigung berechnen dann werde ich die Steigung-Funktion:Python - Berechnen eines Gradienten

from numpy import gradient 
g = gradient(f) 

Dann bekomme ich die Steigung, aber Wenn ich will Lass die Steigung gleich Null sein, wie finde ich die Extrempunkte?

Normalerweise bin ich kein Programmierer und ich benutze Python. Ich verstehe noch nicht, wie ich eine Funktion schreiben soll. Es ist für mein Physikprojekt. Ich verstehe, dass, wenn ich nur schreibe, dass der Gradient gleich Null ist, ich nur den Wert Null speichern werde. Aber als ich versuchte, diese Funktion (Millionen mal) zu schreiben, habe ich immer versagt, meistens Syntaxproblem. Habe ich recht, es wird bitte "wenn" funktionieren? Hat jemand ein Beispiel? Vielen Dank.

+0

np.gradient den Gradienten einer n- zurück dimensionales Array. Ich verstehe nicht, was Sie meinen, wenn ich eine Funktion bin? Siehe die Dokumentation hier: [np gradient] (https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.gradient.html) – skrubber

+0

Ich meinte eigentlich Array. – Leif

Antwort

0

Ich bin mir nicht sicher, ob ich verstehe Ihre Frage, aber wenn man die Positionen müssen, wo der Gradient Null ist, kann man so etwas schreiben:


from numpy import gradient 

g = gradient(f) 
zeros = [ i for i,x in enumerate(g) if x.any() == 0 ] 
print(zeros) 
+0

Ich denke, das ist, was ich gesucht habe. Ich bin mir eigentlich nicht sicher, was ich gerade jetzt mache, deshalb habe ich versucht zu fragen, vielleicht würde ich meine Gedanken sortieren. Und ich bin schlecht im Programmieren, danke. – Leif

+0

Und was tun, wenn es mir nur [] zurückgibt? So wie ich den Gradienten von 'f' berechnen muss, der Array ist, aber mit dem Respekt von 'h', was ein anderes Array ist. – Leif

+0

Verwenden Sie '== 0' nicht für etwas, das zu einem Float führen kann. Gleitkommafehler machen eine exakte Gleichheit nahezu unmöglich. –

Verwandte Themen