Numerische Umformung von quadratischer Gleichung

Hallo an alle,

ich schreibe in Java gerade ein Programm, dass ein Teilchen durch eine Röhre schicken und erkennen soll, wann es die Wand berührt (um anschließend davon abzuprallen). Angegangen bin ich das Ganze damit, zu prüfen, ob sich Kreis (Teilchen) und Gerade (Wand) schneiden:

Geradengleichung
(mit negativer Steigung, da y-Achse auf dem Schirm stets nach unten zeigt)

y = -m \cdot x + n = -\frac{x_E-x_A}{y_E-y_A}\cdot(x + x_A) + y_A = -\frac{x_E-x_A}{y_E-y_A}\cdot x + \frac{x_E-x_A}{y_E-y_A}\cdot x_M + y_A

Kreisgleichung
(da das Teilchen sich noch verformen könnte als Ellipsengleichung)

\frac{(x - x_M)^2}{a^2} + \frac{(y - y_M)^2}{b^2} - 1 = 0

a = b/2 (Breite)
b = h/2 (Höhe)

\frac{(x - x_M)^2}{\frac{b^2}{4}} + \frac{(y - y_M)^2}{\frac{h^2}{4}} - 1 = 0

Und nun mein Problem: Da ich Java nicht einfach fröhlich ineinandereinsetzen lassen kann, sondern ihm die Faktoren für x², x und die Konstante geben muss, habe ich das Ganze zu kruden Ausdrücken umgeformt. Die Schnittstellen lasse ich nun mittels einer Methode, die mit der Mitternachtsformel arbeitet, ausrechnen und komme allerdings immer (egal, ob das Teilchen die Wand nun tatsächlich schneidet oder nicht) auf nicht-reelle Lösungen. Seht ihr einen Umformungsfehler?

\frac{4\cdot(x - x_M)^2}{b^2} + \frac{4\cdot(-m\cdot(x + x_A) + y_A - y_M)^2}{h^2} - 1 = 0

\frac{4 \cdot (x)^2}{b^2} - \frac{4 \cdot (x \cdot x_M)^2}{b^2} + \frac{4 \cdot (x_M)^2}{b^2} + \frac{4\cdot(-m \cdot x -m \cdot x_A + y_A - y_M)^2}{h^2} - 1 = 0

Letzter Term

\frac{4\cdot(-m \cdot x)^2}{h^2} + \frac{4\cdot(-m \cdot x)\cdot(-m \cdot x_A + y_A - y_M) }{h^2} + \frac{4\cdot(-m \cdot x_A + y_A - y_M)^2}{h^2} - 1

Das alles führt bei mir zu den Faktoren:

x^2 : \frac{4}{b^2} + \frac{4\cdot(-m)^2}{b^2}

x : \frac{-4 \cdot x_M}{b^2} + \frac{4\cdot m \cdot (m \cdot x_A - y_A + y_M)}{h^2}

c : \frac{4 \cdot x_M^2}{b^2} + \frac{4\cdot(m \cdot x_A + y_A)^2}{h^2} - \frac{4\cdot y_M \cdot(y_A - m \cdot x_A)^2}{h^2} + \frac{4\cdot y_M^2}{h^2} -1

Freue mich über jede Hilfe und danke schonmal!

Geradengleichung
(mit negativer Steigung, da y-Achse auf dem Schirm stets nach
unten zeigt)

y = -m \cdot x + n = -\frac{x_E-x_A}{y_E-y_A}\cdot(x + x_A) +
y_A = -\frac{x_E-x_A}{y_E-y_A}\cdot x +
\frac{x_E-x_A}{y_E-y_A}\cdot x_M + y_A

Müsste es nicht heißen

y = -m \cdot x + n = -\frac{y_E-y_A}{x_E-x_A}\cdot(x - x_A) +
y_A = -\frac{y_E-y_A}{x_E-x_A}\cdot x +
\frac{y_E-y_A}{x_E-x_A}\cdot x_A + y_A

Ehrlich gesagt würde ich dir empfehlen, das Vorzeichen der Steigung gar nicht umzudrehen. Wo die Achse hinzeigt ist doch egal, wenn du am Ende eh nur Koordinaten berechnen willst.

\frac{4\cdot(x - x_M)^2}{b^2} + \frac{4\cdot(-m\cdot(x + x_A)

  • y_A - y_M)^2}{h^2} - 1 = 0

\frac{4 \cdot (x)^2}{b^2} - \frac{4 \cdot (x \cdot
x_M)^2}{b^2} + \frac{4 \cdot (x_M)^2}{b^2} + \frac{4\cdot(-m
\cdot x -m \cdot x_A + y_A - y_M)^2}{h^2} - 1 = 0

Hier müsstest du die zweite binomische Formel anwenden: (u-v)2=u2-2uv+v2

Gruß

hendrik

Hossa Franziska :smile:

y = -m \cdot x + n = -\frac{x_E-x_A}{y_E-y_A}\cdot(x + x_A) +
y_A = -\frac{x_E-x_A}{y_E-y_A}\cdot x +
\frac{x_E-x_A}{y_E-y_A}\cdot x_M + y_A

Deine Geradengleichung ist nicht ganz korrekt. Wenn du zwei Punkte (xA,yA) und (xE,yE) auf der Geraden hast, heißt es richtig:

y=mx+b\quad;\quad m=\frac{y_E-y_A}{x_E-x_A}\quad;\quad b=y_A-mx_A

Vor das m setzt du am besten kein Minuszeichen, weil m automatisch negativ wird, wenn yA über yE liegt.

Diese Geradengleichung musst du nun in deine Ellipsengleichung einsetzen:

\frac{(x - x_M)^2}{\frac{b^2}{4}} + \frac{(y -
y_M)^2}{\frac{h^2}{4}} - 1 = 0

Also erstmal auf beiden Seiten mit 1/4 multiplizieren und dann y=mx+b von oben einsetzen:

\frac{\left(x-x_M\right)^2}{b^2}+\frac{\left((mx+b)-y_M\right)^2}{h^2}-\frac{1}{4}=0

Das wars im Prinzip. Die Lösung dieser Gleichung liefert die Stellen x, an denen sich die Gerade und die Ellipse schneiden. Bringt man die beiden Brüche auf den Hauptnenner b²h² und multipliziert danach die Gleichung auf beiden Seiten mit b²h², erhält man:

h^2\left(x-x_M\right)^2+b^2\left(mx+(b-y_M)\right)^2-\frac{b^2h^2}{4}=0

h^2\left(x^2-2x_M,x+x_M^2\right)+b^2\left(m^2x^2+2m(b-y_M),x+(b-y_M)^2\right)-\frac{b^2h^2}{4}=0

\left(h^2+b^2m^2\right),x^2+\left(2m(b-y_M)b^2-2h^2x_M\right),x+b^2(b-y_M)^2-\frac{b^2h^2}{4}=0

Diese Gleichung hat die Form

Ax^2+Bx+C=0

und kann mit der Mitternachtsformel gelöst werden…

Viele Grüße

Hasenfuß

Kleine Korrektur und Endergebnis
Hossa Franziska :smile:

Ich musste eben schnell weg und habe daher leider einen kleinen Fehler eingebaut. Mir ist eben eingefallen, dass ich die Variable b zweimal verwendet habe. Das eine b in der Geradengleichung:

y=mx+b

und das andere b als Bildschirmbreite…

Wenn ich die Bildschirmbreite mit B und die Bildschirmhöhe mit H bezeichne, lautet das korrekte Ergebnis:

\left(H^2+B^2m^2\right),x^2+\left(2m(b-y_M)B^2-2H^2x_M\right),x+B^2(b-y_M)^2-\frac{B^2H^2}{4}=0

x^2+\underbrace{\frac{2m(b-y_M)B^2-2H^2x_M}{H^2+B^2m^2}}_{=p},x+\underbrace{\frac{B^2(b-y_M)^2-\frac{B^2H^2}{4}}{H^2+B^2m^2}}_{=q}=0

Die möglichen beiden Schnittpunkte der Geraden mit der Ellipse liegen nun bei:

x_{1;2}=-\frac{p}{2}\pm\sqrt{\frac{p^2}{4}-q}

Viele Grüße

Hasenfuß