solve_ivp: Eventfunktion implementieren
Verfasst: Sonntag 30. Mai 2021, 17:25
Guten Abend,
ich belege dieses Semester ein Modul für mein Studium, in welchem wir mit Python modellieren und wir wöchentliche Assignments abzugeben haben. Bin kompletter Anfänger was Pyhton angeht und mehr oder weniger auch das Programmieren. Nun komme ich an einer Stelle nicht weiter und würde über eure Hilfe sehr dankbar sein.
Folgende Aufgabe:
Es geht darum, dass wir den Verlauf eines Elektrons in einer Braunschen Röhre plotten sollen, in dem wir die ODE´s aufstellen und mit der Funktion solve_ivp im Anschluss lösen. Dabei ist entscheidend, dass der solver bei Aufschlag des Elektrons auf dem Schirm stoppt. Die Funktion habe ich aufgestellt bekommen und der Plott sieht auch richtig aus. Jedoch habe ich ein Problem bei der Erstellung der Eventfunktion zum Stoppen des Solvers.
Und zwar ist der Schirm 0.15 Längeneinheiten (in x-Richtung) vom Startpunkt entfernt und demnach soll hier der Solver dann stoppen. Ich habe nun folgenden Ansatz für die Eventfunktion:
Ich definiere also zuerst die Eventfunktion Schirmaufprall und lasse mir dort die x-Position ausgeben. Bei Terminal ist = True gewählt um den Solver zu stoppen, wenn dieses Event eintritt. Nun kommen wir zu meinem Problem: Wie kann ich einstellen, dass bei dem Wert 0.15 der Solver nun stoppt. Ich kenne nämlich nur den "diricetion" Befehl, dieser bezieht sich aber ja nur darauf, dass ein Nulldurchgang auftritt und ist dann in diesem Fall ja unpassend.
Also mein frage lautet nun, wie ich umsetzen kann, dass mein Solver bei 0.15 stoppt, welche Befehle brauche ich dafür in meiner Eventfunktion?
Vielen Dank für eure Hilfe
Timo
ich belege dieses Semester ein Modul für mein Studium, in welchem wir mit Python modellieren und wir wöchentliche Assignments abzugeben haben. Bin kompletter Anfänger was Pyhton angeht und mehr oder weniger auch das Programmieren. Nun komme ich an einer Stelle nicht weiter und würde über eure Hilfe sehr dankbar sein.
Folgende Aufgabe:
Es geht darum, dass wir den Verlauf eines Elektrons in einer Braunschen Röhre plotten sollen, in dem wir die ODE´s aufstellen und mit der Funktion solve_ivp im Anschluss lösen. Dabei ist entscheidend, dass der solver bei Aufschlag des Elektrons auf dem Schirm stoppt. Die Funktion habe ich aufgestellt bekommen und der Plott sieht auch richtig aus. Jedoch habe ich ein Problem bei der Erstellung der Eventfunktion zum Stoppen des Solvers.
Und zwar ist der Schirm 0.15 Längeneinheiten (in x-Richtung) vom Startpunkt entfernt und demnach soll hier der Solver dann stoppen. Ich habe nun folgenden Ansatz für die Eventfunktion:
Code: Alles auswählen
def schirmaufprall(t, y, *args): # Eventfunktion für den Schirmaufprall
return y[0] # Ausgeben der x-Position
schirmaufprall.terminal = True
schirmaufprall.direction = 0.15 # was muss hier hin um das zu stoppen?
Also mein frage lautet nun, wie ich umsetzen kann, dass mein Solver bei 0.15 stoppt, welche Befehle brauche ich dafür in meiner Eventfunktion?
Vielen Dank für eure Hilfe

Timo