9420

Mathematica 12 - WhenEvent - Warum wird der Vorzeichenwechsel nicht angenommen

  • Erstellt am 26.4.2021
  • Software: Mathematica 12

Als ein grundlegendes Beispiel für die Funktion WhenEvent finden Sie auf der Hilfeseite von Wolfram zu dieser Funktion die Simuliation eines springenden Balls, der bei jedem Sprung 95% seiner Geschwindigkeit beibehält. Wenn Sie das Beispiel so abändern, dass der Ball nur 80% seiner Geschwindigkeit beibehält, wird ein Graph angezeigt, in dem der die Höhe 0 dennoch unterschritten wird, obwohl hier die Geschwindigkeit gemäß dem Befehl das Vorzeichen wechseln müsste.

whenevent_warum_wird_der_vorzeichenwechsel_nicht_angenommen_01

Was ist der Grund hierfür?

Erläuterung

Die Differentialgleichung

y''(t)=-g

mit g>0 hat als allgemeine Lösung

y(t)=-g2*t2+a*t+b

mit zwei Konstanten a und b. Die Nullstellen dieser Funktionen werden nach dem Umformen der Gleichung

-g2*t2+a*t+b=0

zu

t2-2*ag*t-2*bg=0

gemäß der p-q-Formel berechnet als

t1=ag-a2g2+2*bg=tmitte-12tabstand

t2=ag+a2g2+2*bg=tmitte+12tabstand

Wenn die beiden Nullstellen reelle Zahlen sind, ist ihr Abstand gleich

t2-t1=2*a2g2+2*bg=tabstand

whenevent_warum_wird_der_vorzeichenwechsel_nicht_angenommen_02

Wir können die Gleichungen der Funktion und Ableitung auch schreiben als

y(t)=-g*(t-t1)*(t-t2)

Des Weiteren gilt

y(0)=b

y'(t)=-g*t+a

und damit

y'(0)=a

Die Nullstelle der ersten Ableitung liegt bei ag=tmitte. Die ersten Ableitungen an den Nullstellen sind

y'(t1)=-g*(tmitte-12*tabstand)+a=-g*tmitte+a+g*12*tabstand=y'(tmitte)+g*12*tabstand=g*12*tabstand

y'(t2)=-g*(tmitte+12*tabstand)+a=-g*tmitte+a-g*12*tabstand=y'(tmitte)-g*12*tabstand=-g*12*tabstand=-y'(t1)

Jede der beiden Ableitungen sind proportional zu dem Abstand zwischen den Nullstellen:

2g*y'(t1)=tabstand=-2g*y'(t2)

Für den Abstand zwischen den beiden Nullstellen zweier durch einen Übergang yneu'(z)=-q*yalt'(z) mit 0<q<1 folgt

tabstand,neu=q*tabstand,alt

whenevent_warum_wird_der_vorzeichenwechsel_nicht_angenommen_03

Damit gilt

tabstand,2=q*tabstand,1

tabstand,3=q*tabstand,2=q2*tabstand,1

tabstand,4=q*tabstand,3=q3*tabstand,1

und allgemein

tabstand,i=qi-1*tabstand,1

Hier ist tabstand,i der Abstand zwischen den Nullstellen der i-ten komplett innerhalb des angegebenen Definitionsbereiches liegenden Teilkurve. Die Summe aller dieser Abstände ist

i=0qi*tabstand,1=11-q*tabstand,1

weil es sich um eine geometrische Reihe handelt.

whenevent_warum_wird_der_vorzeichenwechsel_nicht_angenommen_04

Wegen y'(0)=0 liegt die allererste Kurve noch nicht komplett im angegebenen Definitionsbereich, sondern genau zur Hälfte, denn Ihre Mitte liegt bei t=0. Die Gesamtlänge aller Teilkurven ab dem Minimum des angegebenen Definitionsbereichs ist

12*tabstand,0+11-q*tabstand,1=12*tabstand,0*tabstand,0+11-q*q*tabstand,0=tabstand,0*(12+q1-q)

whenevent_warum_wird_der_vorzeichenwechsel_nicht_angenommen_05

Für g=9.81 und q=0.8 ist die Gleichung der ersten Lösungskurve

y(t)=-4.905*t2+5

mit den Nullstellen

t1=-1.0096375546923047

t2=1.0096375546923047

und

tabstand,0=2.0192751093846093

sodass die Gesamtbreite innerhalb des angegebenen Definitionsbereichs durch

2.0192751093846093*(12+0.81-0.8)=2.0192751093846093*4.5=9.08674

berechnet wird. Das bedeutet, dass alle der unendlich vielen Ereignisse alle vor dem Wert 9.08674 passieren, die unendlich vielen Teilkurven, aus denen sich die Lösung der Differentialgleichung zusammensetzt, in der Summe nur eine Breite von 9.08674<10 haben. In jeder Annäherung der Lösung durch endlich viele Teilkurven verletzt die letzte der Teilkurven das Ereignis.

Wenn Sie bei Ihre Differentialgleichung mit WhenEvent ein ähnliches Phänomen beobachten, überprüfen Sie, ob es sich analog mit der geometrischen Reihe erklären lässt.

Question?

Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein., wenn Sie eine Frage zu diesem Artikel haben.