Studium, Ausbildung und Beruf
 StudiumHome   FAQFAQ   RegelnRegeln   SuchenSuchen    RegistrierenRegistrieren   LoginLogin

Schnittpunkt zweier kubischer Formeln numerisch finden
Gehe zu Seite Zurück  1, 2, 3  Weiter
Neues Thema eröffnen   Neue Antwort erstellen
Foren-Übersicht -> Mathe-Forum -> Schnittpunkt zweier kubischer Formeln numerisch finden
 
Autor Nachricht
derdasallesprogrammiert
Newbie
Benutzer-Profile anzeigen
Newbie


Anmeldungsdatum: 23.01.2005
Beiträge: 26
Wohnort: Heilbronn

BeitragVerfasst am: 24 Jan 2005 - 20:45:08    Titel:

Es sollte schon was kubisches sein, sonst funzts es nicht. - Ist schon durch die Anwendung bedingt so, was anderes bekomme ich nicht als Eingangsdaten. Auf was willst Du eigentlich hinaus? - Ich habe das Gefühl das Du mir mathematisch ewig überlegen bist, mach bitte mal einen kleinen Wissenstransfer Wink - Ich denke, ich bin was Mathe betrifft noch lernfähig, vorausgesetzt es ist idiotensicher erklärt Confused

Ciao,

Timo
Newton
Gast






BeitragVerfasst am: 24 Jan 2005 - 21:18:33    Titel:

Berechnung von 1/sqrt(5).

f(x) = x² - 0,2
f´(x) = 2x

x1 = x0 - f(x0)/f´(x0) —> x2 = x1 - f(x1)/f´(x1) —> ....

x0 = 0,3
0,3 —> 0,483333333 —> 0,448563218 —> 0,447215626 —> 0,447213596

x0 = 0,5
0,5 —> 0,45 —> 0,447222222 —> 0,447213596
algebrafreak
Senior Member
Benutzer-Profile anzeigen
Senior Member


Anmeldungsdatum: 28.10.2004
Beiträge: 4143
Wohnort: Passau

BeitragVerfasst am: 24 Jan 2005 - 21:22:05    Titel:

Ich wollte auf keinen Fall damit irgend eine Form von Überlegenheit zeigen oder so. Jeder weiß ja selbst am besten, dass jeder da und da seine Stärken oder Schwächen hat...

Bei die Schaut es ja irgendwie so aus, dass Du als Eingabe 4 X 2 reelle Parameter (a,b,c,d) und (e,f,g,h) (die Koeff.) bekommst und eine Liste oder so von Paaren von zwei reellen Werte als Antwort zurückgibst (die Schnittpunkte). Im inneren wirst Du wohl (a-e,b-f,g-c,d-h) berechnen und dann einen Startwer wählen wollen. Und jetzt kann folgendes Passieren:

f(x) = x^3-x

x1 = 1/sqrt(5)

f'(x_1) = -2/5

x2 = x1 - f(x1)/f'(x1) = -1/sqrt(5)

x3 = x2 - f(x2)/f'(x2) = 1/sqrt(5)

usw. Da man natürlich 1/sqrt(5) nicht ohne Rundungsfehler eingeben kann bedeutet das, dass dein Verfahren womöglich nicht nur "Schaukelt", sondern sich auch Instabil und auf verschiednenen Rechnern verschieden verhält.
Newton
Gast






BeitragVerfasst am: 24 Jan 2005 - 21:31:22    Titel:

Sorry, Kollegen, falsch verstanden Sad
derdasallesprogrammiert
Newbie
Benutzer-Profile anzeigen
Newbie


Anmeldungsdatum: 23.01.2005
Beiträge: 26
Wohnort: Heilbronn

BeitragVerfasst am: 25 Jan 2005 - 03:00:38    Titel:

algebrafreak hat folgendes geschrieben:
Ich wollte auf keinen Fall damit irgend eine Form von Überlegenheit zeigen oder so. Jeder weiß ja selbst am besten, dass jeder da und da seine Stärken oder Schwächen hat...

Ne, das war auch nicht auf die vorwurfsvolle Tour gemeint. Aber wie Du schon sagtest "Jeder weiß ja selbst am besten, dass jeder da und da seine Stärken oder Schwächen hat..." So geht es mir auch, ich bin mir meinen mathematischen Schwächen bewußt und hab halt gemerkt, das Du da an Fälle denkst, auf die wäre ich nicht im Traum draufgekommen.
algebrafreak hat folgendes geschrieben:

Bei die Schaut es ja irgendwie so aus, dass Du als Eingabe 4 X 2 reelle Parameter (a,b,c,d) und (e,f,g,h) (die Koeff.) bekommst und eine Liste oder so von Paaren von zwei reellen Werte als Antwort zurückgibst (die Schnittpunkte). Im inneren wirst Du wohl (a-e,b-f,g-c,d-h) berechnen und dann einen Startwer wählen wollen.

Absolut korrekt!
algebrafreak hat folgendes geschrieben:

Und jetzt kann folgendes Passieren:

Nein kann nicht, zum Glück Laughing , ich bekomme x von Typ Float als Startwert. Also nix gemeines mit Wurzel drin. Kann vom Prinzip her nicht passieren. Auch wenns off-topic ist, sag ich jetzt trotzdem mal kurz um was es hier geht: Ich wurschtel gerade für TORCS (http://torcs.sourceforge.net/), das ist eine Rennsimulation in der die Codes gegeneinanderfahren, einen Fahrer zusammen, der soll die Kurven durch verschiedene Punkte und die daraus berechneten kubischen Splinefunktionen durchfahren. Pro Kurve gibts also einen "Splinelinienzug". Bei fast direkt aufeinanderfolgenden Kurven kann es passieren, das sich der eine Spline mit dem der nächsten Kurve überschneidet. Damit ich hier eine schöne Kurve hinbekomme rechne ich den Schnittpunkt aus um den Gültigkeitsbereich der Funktion einzuschränken. Der Eingangswert x besteht also aus der x Koordinate eines Wegpunkts.

algebrafreak hat folgendes geschrieben:

f(x) = x^3-x

x1 = 1/sqrt(5)

f'(x_1) = -2/5

x2 = x1 - f(x1)/f'(x1) = -1/sqrt(5)

x3 = x2 - f(x2)/f'(x2) = 1/sqrt(5)

usw. Da man natürlich 1/sqrt(5) nicht ohne Rundungsfehler eingeben kann bedeutet das, dass dein Verfahren womöglich nicht nur "Schaukelt", sondern sich auch Instabil und auf verschiednenen Rechnern verschieden verhält.


Uhhh, ja das wäre gemein. Habs verstanden! Jippie! Hast Du wirklich schön erklärt! Vielen Dank! Aber ich denke, wie bereits erwähnt, diese Fehlerquelle kann ich ausschließen.
So, jetzt mal: Gute Nacht!

Ciao,

Timo
algebrafreak
Senior Member
Benutzer-Profile anzeigen
Senior Member


Anmeldungsdatum: 28.10.2004
Beiträge: 4143
Wohnort: Passau

BeitragVerfasst am: 25 Jan 2005 - 03:15:10    Titel:

Zitat:
Aber ich denke, wie bereits erwähnt, diese Fehlerquelle kann ich ausschließen.


Auch, wenn Du ein float als Grunddatentyp hast, kann es passieren, dass Du sehr nahe an an 1/sqrt(5) kommst. D.h. der nächste Punkt kann sehr nahe -1/sqrt(5) liegen. Und so weiter. Noch schlimmer, je nach Rundung kann der Wert "mehr" oder "weniger" betragen. Und dann ist das Verhalten so gut, wie undefiniert.

Aus meiner Erfahrung (Wir haben zu 7 eine komplette Steuerung für RoboCUP mit ca. 70000 Zeilen geschrieben und ich war unter anderem für die Optimierungsverfahren verantwortlich) sollte man in zeitkritischen Anwendungen (also Computerspiele, Echtzeitszeugs, usw) für Nullstellen von Polynomen vom Grad kleiner 4 keine Näherungsverfahren benutzen. Schon deshalb, weil es einfach zu lange dauert.

Mein Tipp ist: Schau auf die Webseite, die oben gepostet ist. Schalte in der Eingabemaske "Lösungen approximieren" aus und drücke auf Lösungen mit Erklärungen für ein paar feste Zahlen. Du wirst sehen, das geht in der Anwendung deutlich schneller und man hat alles im Griff. Ich kann Dir gerne helfen den Lösungsweg zu verstehen.

Und wenn Du doch nähern möchtest, so mache keine Abbruchbedingung von der Form:

abs(f(x)) < 0.0001

rein (f(x) ist sehr nahe an 0), da die womöglich gar nicht erfüllt wird.

Zu kubischen Splines und numerischer Nullstellensuche habe ich gute Materialien.
derdasallesprogrammiert
Newbie
Benutzer-Profile anzeigen
Newbie


Anmeldungsdatum: 23.01.2005
Beiträge: 26
Wohnort: Heilbronn

BeitragVerfasst am: 25 Jan 2005 - 12:18:20    Titel:

Servus Algebrafreak,

die Berechnungen werden jeweils *vor* Start des Rennens gemacht. Ist also nicht zeitkritisch. Während des Rennens fährt die Kiste nur noch durch die Splines bzw. bekommt als Zielpunkt (auf Geraden) den ersten Punkt des nächsten Splines. Der Splinealgorithmus scheint aber zu passen (puuh! Mal was geht). Hab da was gefunden, das zwar nicht ganz so glatte Splines erzeugt, aber nicht die Neigung hat zu schwingen. Nennt sich constrained cubic splines (http://www.korf.co.uk/spline.pdf)

Ich schau mir gerade dennoch noch mal die Seite von Arndt Brünner an. Folgendes dazu: Ich habe jetzt beispielsweise folgende Kurven:
f0(x)=x^3+2x^2+0.5x+2
f1(x)=1.5x^3+3.5x^2-2.25x-1

Ergibt folgende Funktion für die Schnittpunkte:
f2(x)=0.5*x^3+1.5*x^2-2.75*x-3

OK, dann auf der Seite bekomm ich die korrekten Ergebnisse - schön! Aber, wie kommt das Teil auf die Formeln für die Koeffizienten:
Zitat:

p = s - r²/3 = -8,5
q = 2r³/27 - rs/3 + t = 1,5


Den Rest könnte ich hinbekommen, auch wenn ich noch die verschiedenen drei Fälle für R abdecken muß. Aber dazu habe ich auch Infos bei Wikipedia gefunden http://de.wikipedia.org/wiki/Cardanische_Formeln
Vielen Dank schon mal!

Ciao,

Timo
algebrafreak
Senior Member
Benutzer-Profile anzeigen
Senior Member


Anmeldungsdatum: 28.10.2004
Beiträge: 4143
Wohnort: Passau

BeitragVerfasst am: 25 Jan 2005 - 18:23:15    Titel:

Zitat:
Nennt sich constrained cubic splines (http://www.korf.co.uk/spline.pdf)


Das ist schon deutlich besser, und du musst gar keine Nullstellen von kubischen Gleichungen explizit bestimmen.

P.S.: Nur aus reinem Interesse. Was ist, wenn dein Wagen eine Kehrtwende machen muss, oder eine Kurve fährt, die mehr als 90° Drehung hat. Dann gibt es gar keine Splinefuktion von R->R, die die Bewegung beschreibt. Ich fürchte aber, ich habe das mit dem Kurvenfahren nicht so ganz verstanden Sad

http://de.wikipedia.org/wiki/Cardanische_Formeln

Is sogar noch ein besserer Verweis als die Brunner Seite. Cool.
derdasallesprogrammiert
Newbie
Benutzer-Profile anzeigen
Newbie


Anmeldungsdatum: 23.01.2005
Beiträge: 26
Wohnort: Heilbronn

BeitragVerfasst am: 25 Jan 2005 - 19:04:23    Titel:

algebrafreak hat folgendes geschrieben:
Zitat:
Nennt sich constrained cubic splines (http://www.korf.co.uk/spline.pdf)


Das ist schon deutlich besser, und du musst gar keine Nullstellen von kubischen Gleichungen explizit bestimmen.

Ne, das eine hat mit dem anderen nix zu tun, oder was meinst Du jetzt?

algebrafreak hat folgendes geschrieben:

P.S.: Nur aus reinem Interesse. Was ist, wenn dein Wagen eine Kehrtwende machen muss, oder eine Kurve fährt, die mehr als 90° Drehung hat. Dann gibt es gar keine Splinefuktion von R->R, die die Bewegung beschreibt.


Hmmh, ich vermute Du meinst, was passiert wenn die Punkte nicht alle aufsteigend sind... Also funktionieren sollte es momentan bis Kurven 180°. Ich messe die Steigung zw. ersten Punkt und letzten Punkt, dann dreh ich die ganze Schoße so, das die Steigung null ist. Bei Winkel >180° müßte ich beispielsweise im Scheitelpunkt der Kurve den Spline absetzen und dann direkt wieder in dem Punkt mit einem neuen beginnen. Brauch dann halt noch ein paar Punkte mehr für die Kurve, da ich ja dann pro Kurventeil mind. 3 Punkte, besser 4 benötige.
algebrafreak hat folgendes geschrieben:

Ich fürchte aber, ich habe das mit dem Kurvenfahren nicht so ganz verstanden Sad

Das hat viel mehr mit Mathe (Trigonometrie, Vektoren...) als mit physikalischen Kräften zu tun. Viel weiß ich zur Kurvenfahrt selbst auch nicht, bin schließlich nur Informatiker und nicht Michael Schuhmacher. Das war auch nicht Sinn der Arbeit. Ursprünglich sollten die Punkte noch "on-the-run" während des Trainings mittels genetischer Algorithmen verbessert werden, dann in ne Datei reinschreiben und im Rennen reinladen. Ich hoffe aber, daß mein Prof. ein Einsehen hat und es auch so durchgehen läßt. Was die Kurvenfahrt betrifft, gehe ich davon aus, das man im Scheitelpunkt "innen" und am Anfang und am Ende "aussen" sein möchte. Es sei denn bei Kurvenkombinationen (links-rechts/gleich-gleich), Kurven mit geringem Winkel, Straßen mit ziemlicher Breite, geringe Geschwindigkeit wegen schlechter Straßenverhältnisse (Offroad tracks).... Also alles total eeeeaaaasssyy Wink Ich kotz gleich! Twisted Evil
Die gewöhnliche Implementierung sieht vor, das man immer in der Mitte der Straße bleibt, von der Performanz her sollte man da also selbst mit sehr vereinfachten Ansätzen noch ordentlich was rausbekommen.

algebrafreak hat folgendes geschrieben:

http://de.wikipedia.org/wiki/Cardanische_Formeln

Is sogar noch ein besserer Verweis als die Brunner Seite. Cool.


Bitte, bitte, gern geschehen! Um mal nur kurz wieder aufs Thema zurückzukommen Laughing warum komm ich nicht drauf wie der gute Arndt zu den Formeln für die Koeffizenten gekommen ist?

Ciao,

Timo
algebrafreak
Senior Member
Benutzer-Profile anzeigen
Senior Member


Anmeldungsdatum: 28.10.2004
Beiträge: 4143
Wohnort: Passau

BeitragVerfasst am: 25 Jan 2005 - 20:51:42    Titel:

f2(x)=0.5*x^3+1.5*x^2-2.75*x-3 =
1/2 x^3 + 3/2 x^2 - 11/4 x - 3

4*f2(x) = 2*x^3 + 6 x^2 - 11 x - 12

alsof f2(x) = 0 <=>
2*x^3 + 6*x^2 - 11 x -12 = 0

a = 2, b = 6, c = -11, d = -12

p = c / a - b^2 / (3*a^2) = -11/2-35/(3*4) = -101/12

p ist ca. -8.5

q = d/a + 2b^3/27a^3-bc/3a^2 =
-12/2 + 2*6^3 / (27*2^3) - 6*(-11)/(3*2^2) = 3/2

q ist 1.5

Also nur Rechnerei.
Beiträge der letzten Zeit anzeigen:   
Foren-Übersicht -> Mathe-Forum -> Schnittpunkt zweier kubischer Formeln numerisch finden
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite Zurück  1, 2, 3  Weiter
Seite 2 von 3

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

Chat :: Nachrichten:: Lexikon :: Bücher :: Impressum