Berechne die Krümmung eines Vektorfeldes in Python und zeichne es mit Matplotlib

8

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? ?

    
gustavogrds 21.05.2015, 15:52
quelle

2 Antworten

9

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 ist:

%Vor%

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:

    
Fermi paradox 29.06.2015, 17:11
quelle
1

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.

%Vor%

Dies gibt den Wert der Locke bei x zurück: array([-216., -2., 0.]) Plotten ist wie oben vorgeschlagen.

    
Martin Ligare 18.09.2016 14:49
quelle

Tags und Links