Ich muss die Krümmung eines Vektorfeldes berechnen und es mit Matplotlib plotten. Ein einfaches Beispiel für das, wonach ich suche, könnte so formuliert werden:
Wie kann ich die Krümmung des Vektorfeldes in der quiver3d_demo.py in der matplotlib-Galerie berechnen und plotten? ?
Sie können sympy.curl()
verwenden, um die Krümmung von zu berechnen ein Vektorfeld.
Beispiel :
Angenommen, Sie haben:
F = (y 2 z, -xy, z 2 ) = y 2 z x - xy y + z 2 z , dann wäre y
R[1]
, x
ist R[0]
und z
ist R[2]
, während die Vektoren der 3 Achsen R.x
, R.y
, R.z
und der Code zur Berechnung des Vektorfelds curl
In diesem Fall wäre G gleich R_y**2*R.y + (-2*R_y*R_z - R_y)*R.z
oder mit anderen Worten:
G = (0, y <2 , -2yz-y).
Um es zu plotten müssen Sie das obige Ergebnis in 3 separate Funktionen konvertieren; u, v, w.
(Beispiel unten aus dem matplotlib-Beispiel auf diesem Link angepasst):
%Vor%Und das Endergebnis ist das:
Um die Krümmung einer Vektorfunktion zu berechnen, können Sie auch numdifftools zur automatischen numerischen Differenzierung verwenden, ohne einen Umweg über die symbolische Differenzierung zu machen . Numdifftools stellt keine curl()
-Funktion bereit, berechnet jedoch die Jacobi-Matrix einer Vektorwertfunktion einer oder mehrerer Variablen, und dies liefert die Ableitungen aller Komponenten eines Vektorfeldes in Bezug auf alle Variablen; Das ist alles, was für die Berechnung der Locke notwendig ist.
Dies gibt den Wert der Locke bei x
zurück: array([-216., -2., 0.])
Plotten ist wie oben vorgeschlagen.
Tags und Links python matplotlib sympy