Wie kann ich beim GTR das Minimum bestimmen?
Ich habe ein Programm geschrieben,was den Abstand von 2 windschiefen Geraden im Raum berechnet (die 2 Geraden schneiden sich nicht).
Es gibt dabei aber nur 1 Minimalabstand.
Davor und danach ist der Abstand dann größer.
Ich habe das Problem mit eine Schleife gelöst.
Nachteil : d1-d2>=0,2
bedeutet: d1 ist der Abstand beim 1.ten durchlauf und d2 der Durchlauf nach d1
Da d1>d2 ist,rechnet der Rechner so lange,bis d1-d2>=0,2 ist
Wenn ich nun Pech habe,so kann es sein,daß der Wert 0,2 nicht auftritt und so das Minimum nicht erkannt wird.
Gibt es eine Möglichkeit nur mit Verhältnisoperatoren herauszufinden was nun das Minimum exakt ist?
Also bis auf 3 Stellen hinter den Komma oder genauer
2 Antworten
Ich bin mir nicht sicher, ob dein Vorgehen überhaupt funktioniert. Du hast ja 2 Geradengleichungen und somit 2 Laufvariablen - z.B. s und t. Der minimale Abstand muss ja aber nicht für s=t gelten.
Das analytische Vorgehen wäre ja wie folgt:
- Die kürzeste Verbindung ergibt sich durch eine Gerade, die senkrecht auf beiden Geraden steht
- Dann berechnest du die Distanz der Schnittpunkte der Hilfsgeraden mit beiden Geraden
Ist bei mir lange her, aber war ja irgendwie so:
- Ebene erstellen, die aus beiden Richtungsvektoren besteht
- Ebene jeweils durch beide Geraden legen und Abstand bestimmen
- Für die Erstellung des Ebenenvektors kann das Kreuzprodukt helfen. (bildet einen senkrechten Vektor zu 2 Eingabevektoren) Alternativ mit Skalarprodukt und Gleichungssystem
Ich weiß, dass ich es damals so als Programm im GTR umgesetzt habe, wie man es auch in Übungsaufgaben berechnet hat. ;)
Numerisch fällt mir da nicht wirklich was sinnvolles ein für den Abstand, falls nicht stupide 2-dimensional alle Punkte einer Geraden mit den anderen vergleichen.
Ich habe die Formel für den Abstand von 2 windschiefen Geraden im GTR einprogrammiert.
Hier geht es aber um die Bestimmumg,wo nun die Punkte auf den beiden Geraden liegen und dafür braucht man einen der Geradenparameter t oder s
g: x=a1+t*m1 und h: x=a2+s*m2
Beispiel: minimaler Abstand liegt bei t=1 also dmin
Ich nehme jetzt den Startwert t=1 und las den Rechner um STEP -0,1 von t=2 herunterzählen.
mit t>1 ist dann
(d1-d2)>0 positiv weil ja d1>d2 ist
mit t<1 ist dann
(d1-d2)<0 negativ,weil ja dann d1<d2 ist (minimum ist dann schon überschritten
das kann ich dann mit der if -Anweisung ausnutzen
if (d1-d2)>0 then next (nächste Rechnung t2=t1-0,1)
if (d1-d2)<0 then Ausgabe t=... und P1(x1/y1/z1) und P2(x2/y2/z2) und dmin=...
Somit habe ich dann die beiden Punkte auf den beiden Geraden P1 und P2 und den minimalen Abstand.
Ich glaub,daß ist die Lösung.
Meine Fragestellung ist ungenau,weil es hier auch um die Lage der beiden Punkte geht,die auf den beiden geraden liegen.
Nur zur Berechnung des minimales Abstandes,habe ich natürlich eine Formel
1.) Ein Taschenrechner kann nicht "exakt" berechnen. Der kann nämlich immer nur bis x Stellen nach dem Komma darstellen.
2.) Bin ich mir nicht sicher was dein Programm genau macht. Erläutere das doch bitte mal.
Aber wie soll ich denn das programmieren?
Einen Befehl habe ich dafür nicht.
Du hast mich aber auf eine Idee gebracht.
Ich glaub,ich kann den Vorzeichenwechsel verwenden
if (d1-d2)>0 then next also d1>d2
if (d1-d2)<0 then Ausgabe t=1 und dmin=...
Es findet ja ein Vorzeichenwechsel statt.
für t>1 ist (d1-d2)>0 positiv
für t<1 ist (d1-d2)<0 negativ
so müßte es eigentlich funktionieren
Vielen Dank!
Stell dir vor,daß der minimale Abstand von 2 Geraden beim Geradenparameter t=1 liegt.
Das bedeutet,daß bei t=2 der Abstand größer ist
Anfangswert für den Rechner tan=2
nun zählt der Rechner in Schritweite von Step=-0,1 herunter und das Programm berechnet immer wieder den Abstand neu
solage dann t>1 ist,ist auch der Abstand d=.. größer als dmin
also (d1-d2)>0 d1>d2 Abstand d wird ja immer kleiner,bis t=1 ist
Dies gilt so lange ,bis t=1 erreicht ist
ist dieser Wert überschritten,dann ist (d1-d2)<0 d1<d2 Abstand wird wieder größer
Ist das Minimum überschritten,dann findet ein Vorzeichenwechsel statt.
Beispiel: bei t1=0,5 ist d1=... bei t2=0,4 ist d2=...
dann ist d1<d2 also d1-d2<0 weil dann der Abstand immer größer wird.
Der Rechner rechnet dann immer weiter,bis zum Abruch.
Er findet aber nicht das Minimum,wenn die Bedingung (d1-d2)<=0,2 ist
Ich kann keine Wertetabelle speichern und dann dmin auslesen lassen,was beim Geradenparametr in diesen fall bei t=1 liegt
Ergebnis wäre dann an der Ausgabe
dmin=.... bei t=1