habe hier die "numdifftools" Bibliothek heruntergeladen und versuche damit die Jakobimatrix einer Funktion zu berechnen. Hier habe ich mal folgenden Miniquellcode:
Code: Alles auswählen
import numpy as numpy
import numdifftools as nd
def fun(x):
r = x[0]*2 + x[1]*5 + x[2]**2
return r
Jac = nd.Jacobian(fun)
print(Jac([1,1,1]))
Jac = [[dr/x[0] dr/x[1] dr/x[2]]]
d.h. die Ableitung der Funktion nach jeder einzelnen Variablen.
Meinem Verständnis nach müsste das Ergebnis Folgendes sein:
Jac = [[2 5 2*x[2]]]
Wenn ich nun den Lösungvektor [1,1,1] einsetze in der Form Jac([1,1,1]) hätte ich daher eigentlich als Ergebnis
[[2 5 2]] erwartet. Jedoch erscheint als Ergebnis
[[0.46791994 1.169799986 0.90064399]]
Könnt Ihr mir das erklären?
Und eine andere Frage noch hinterher: Benutzt ihr vielleicht eine andere Methode, die Jakobimatrix zu berechnen? Ich habe keine Standardbibliothek zur automatischen Differenzierung gefunden. Die oben verwendete Bibliothek ist eine finitie Elementemethode, bei der die Lösung lediglich angenähert wird, jedoch nicht exakt berechnet wird. Eine exakte Berechnung wäre natürlich besser.
Danke im Voraus!