Gerade Kurve Schnittpunkt < Sonstiges < Schule < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 18:43 Do 17.02.2011 | Autor: | hyphen |
Ich hab z.B. folgende Kurve gegeben:
x(t) = 10*t + cos(5*t) * 3
y(t) = 9*t + sin(5*t) * 3
und irgendeine beliebigen Gerade, die diese Kurve schneidet.
Die Kurve kommt zustande aus einer Translation eines Punktes vTrans = [10|9] und einer gleichzeitigen Rotation vRot = [ cos(5*t)| sin(5*t) ] * 3
Ich möchte einfach wissen, wie man nun den/die Schnittpunkt/e berechnen kann, oder ob das überhaupt so einfach möglich ist.
Und, wenn nicht, ob es geeignete Nährungsverfahren dazu gibt.
Wäre nett wenn Ihr mir helfen könntet :)
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
|
|
|
|
Hallo hyphen,
> Ich hab z.B. folgende Kurve gegeben:
>
> x(t) = 10*t + cos(5*t) * 3
> y(t) = 9*t + sin(5*t) * 3
>
> und irgendeine beliebigen Gerade, die diese Kurve
> schneidet.
>
> Die Kurve kommt zustande aus einer Translation eines
> Punktes vTrans = [10|9] und einer gleichzeitigen Rotation
> vRot = [ cos(5*t)| sin(5*t) ] * 3
>
> Ich möchte einfach wissen, wie man nun den/die
> Schnittpunkt/e berechnen kann, oder ob das überhaupt so
> einfach möglich ist.
Nun, der einfachste Weg ist hier
[mm]\left(x-10*t\right)^{2}+\left(y-9*t\right)^2=3^{2}[/mm]
zu bilden und die Lösungsmenge davon zu bestimmen.
> Und, wenn nicht, ob es geeignete Nährungsverfahren dazu
> gibt.
>
> Wäre nett wenn Ihr mir helfen könntet :)
>
> Ich habe diese Frage in keinem Forum auf anderen
> Internetseiten gestellt.
>
Gruss
MathePower
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 20:28 Do 17.02.2011 | Autor: | hyphen |
Danke für deine Antwort...
aber ich glaube das ist nicht das was ich gesucht habe.
Also die Kurve sollte eher die Form einer Zykloide habe, der in Richtung vTrans abgerollt wird (ka, ob man das so sagen kann, kenne mich nicht so aus).
Hier mal ein link, der einen schnell programmierten Plot dieser Kurve mit ähnlichen Werten zeigt.
http://www.pic-upload.de/view-8927385/Kurve.png.html
Wenn ich für t irgendeinen Wert in
$ [mm] \left(x-10\cdot{}t\right)^{2}+\left(y-9\cdot{}t\right)^2=3^{2} [/mm] $ einsetze
kommt aber ein Kreis raus.
Außerdem, wenn ich mir überlege, dass die Gerade "quer" durch die meine Kurve verläuft gibt es doch sehr viele, bis unendlich viele Lösungen als Schnittpunkte.
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 22:28 Do 17.02.2011 | Autor: | leduart |
Hallo
eine echte Zykloide ist es nicht, die würde abrollen aber dazu passt die Translations und Rotationsgeschw. nicht.
du willst nur irgendeine Gerade, dann mimm die Translationsgerade.
Gruss leduart
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 22:58 Do 17.02.2011 | Autor: | hyphen |
Okey, dann ist das keine Zykloide.
Aber was die Gerade angeht: beliebig soll nicht heißen, dass ich mir die Translationsgerade heraussuchen kann. Vielmehr ist damit gemeint, dass ich eine Lösung für jede allgeimeine Gerade durch die Kurve haben möchte.
Gruss hyphen
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 23:46 Do 17.02.2011 | Autor: | qsxqsx |
Hallo,
Irgendeine Gerade sieht so aus: [mm] \vec{g} [/mm] = [mm] \vektor{x_{1} \\ y_{1} \\ t_{1}} [/mm] + [mm] u*\vektor{x_{2} \\ y_{2} \\ t_{2}} [/mm] , wobei u Parameter ist. Anstelle von z hab ich die 3. Raumkoordinate t genannt, da in deiner Kurvenform der Parameter t quasi als 3. Raumkoordinate interpretiert werden kann.
Jetzt setzt du [mm] \vec{g} [/mm] = [mm] \vektor{10*t + cos(5*t)*3 \\ 9*t + sin(5*t)*3 \\ t}
[/mm]
So kannst du versuchen ein t und u zu finden. Im allgemeinen nicht so einfach.
EDIT: Sry das war keine Gerade, was war eine Ebene, jetzt ist es richtig.
Gruss
|
|
|
|
|
Status: |
(Frage) reagiert/warte auf Reaktion | Datum: | 14:53 So 20.02.2011 | Autor: | hyphen |
Hallo nochmal,
ich hab jetzt versucht auf eine Idee zu kommen, wie man diese Gleichungen nun löst, aber ich komme nicht drauf.
Wenn mir jemand den Lösungsweg, oder einen Teil davon vorstellen könnte wäre ich sehr dankbar.
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 16:00 So 20.02.2011 | Autor: | leduart |
Hallo
ich seh keinen weg, wie du das allgemein lösen kannst, schon sinx=a*x+b a,b fest hat keine Llsungsformel, sonern kann nur numerisch berechnet werden.
alle geraden die nicht in dem Parallelstreifen im abstand 3 zu deine Translationsgeraden verlaufen, d.h. all, die eine steigung größer oder kleiner 9/10 haben haben endlich viele schnittpunkte, parallelen zu der Geraden haben unendlich viele schnittpunkte.
einige Schnittpunkte kannst du natürlich rückwärts kriegen: nimm 2 beliebige punkte auf deiner Kurve, dann hast du ne spezielle Gerade und 2 Schnittpunkte.
Zu was brauchst du das?
Gruss leduart
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 16:20 So 20.02.2011 | Autor: | hyphen |
Das ganze ist Teil eines Algorithmus zur Bewegung eines Hexapod Roboters.
Und die Kurve kommt durch Drehung und Bewegung von einem der 6 Schulterpunkte am Körper zustande (bzw. Bein).
Da ein Bein nur einen bestimmten Bewegungsspielraum hat muss ich nun (erstmal beispielhaft mit einer Gerade) Schnittpunkte mit der Kurve ausrechnen.
Nachher kommen sicherlich noch ganz andere Funktionen als eine Gerade zum Einsatz.
Mein Idee ist jetzt einfach anzunähern, indem ich die die Kurve durch lineare Funktionen ersetze und dann damit die Schnittpunkte ausrechne. Ich weiß nur jetzt schon, dass das später zu viel Rechenzeit in Anspruch nehmen könnte und suche daher eben eine weniger rechenintensive Lösung :).
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 18:33 So 20.02.2011 | Autor: | qsxqsx |
Hallo,
Falls die Geraden sich schneiden, gibt es also ein t und u. Für das u müssen dann die folgenden gleichungen gelten:
[mm] x_{1} [/mm] + [mm] u*x_{2} [/mm] = [mm] 10*(z_{1} [/mm] + [mm] u*z_{2}) [/mm] + [mm] cos(5*(z_{1} [/mm] + [mm] u*z_{2}))*3
[/mm]
[mm] y_{1} [/mm] + [mm] u*y_{2} [/mm] = [mm] 9*(z_{1} [/mm] + [mm] u*z_{2}) [/mm] + [mm] sin(5*(z_{1} [/mm] + [mm] u*z_{2}))*3
[/mm]
Da cos(x)*3 [mm] \le [/mm] 3 und sin(x)*3 [mm] \le [/mm] 3 kann man doch sagen, dass für grosse t und u diese Terme vernachlässigt werden können. So musst du also mal ungefähr den Bereich von u und t bestimmen. Dann kannst du mit nummerischen Verfahren durchprobieren (das muss ja nicht so genau sein - wenn du für den sin für 0 bis [mm] 2*\pi [/mm] 100 Werte hast reicht das doch völlig. So würd ich es mal machen.
Gruss
wobei t = [mm] z_{1} [/mm] + [mm] u*z_{2}
[/mm]
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 19:48 Mo 21.02.2011 | Autor: | hyphen |
Guten Abend,
ich habe das ganze in Excel/OpenOffice umgesetzt...und es sieht ganz gut aus.
Alle Parameter können links manuell eingestellt werden und die Grafiken werden dementsprechend angepasst.
Man kann aber feststellen, dass wirklich viel gerechnet wird. Ich denke aber, und ihr ja auch, dass man da noch ein wenig an der Performance schrauben kann. Das ist ja nur ein Test.
Ich werde mal versuchen die .xls Datei in den Anhang zu schieben.
Danke euch allen für eure Hilfe. :)
Dateianhänge: Anhang Nr. 1 (Typ: xls) [nicht öffentlich]
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 00:08 Di 22.02.2011 | Autor: | qsxqsx |
Hallo,
Ich bins nochmal. Ich hab mir das völlig falsch vorgestellt gehabt im Sinne, dass die Gerade 3D ist.
1. Methode: Newtonverfahren
Die Gerade sieht nur so aus:
y = a*x + b
Du hast x(t) und y(t), also:
y(t) = a*x(t) + b
Du kannst nun 0 = a*x(t) + b - y(t) schreiben, und das Newton Verfahren anwenden, welches in der Regel (mit Ausnahmen...) ziemlich bis extrem schnell (quadratisch) Konvergiert.
(Quadratische Konvergenz heisst soviel wie, dass die Anzahl Nullen der Ungenauigkeit hinter dem Komma, sich jedes mal verdoppeln!)
Beachten muss man aber, dass es natürlich nicht alle Nullstellen findet. Du müsstest also dem Programm sagen, es solle systematisch verschiedene Startwerte durchprobieren. Wie man die wählen soll ist nicht ganz trivial.
2. Methode: Fixpunktiteration
Schreibe die Gleichung F(x(t),y(t)) = 0 um in eine Gleichung der Form G(t) = t.
Du wählst einfach einen Startwert, und setzt den neuen erhaltenen Wert wieder ein:
[mm] G(t_{0}) [/mm] = [mm] t_{1} [/mm] ---> [mm] G(t_{1}) [/mm] = [mm] t_{2} [/mm] ---> usw.
Beachten musst du, dass [mm] |\bruch{dG(t)}{dt}| [/mm] < 1 ist. Sonst konvergiert das Verfahren nicht (im Gegenteil: es Divergiert)
Gruss
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 01:21 Di 22.02.2011 | Autor: | qsxqsx |
Habe kürzlich noch etwas mit dem Newtonverfahren herumprobiert indem ich die erhaltenen Nullstellen als Funktion der Startwerte aufgezeichnet habe. Das ist extrem schwierig richitige Werte zu kriegen, es gibt immer wieder Startwerte bei denen es völlig ausartet...
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 16:40 Di 22.02.2011 | Autor: | hyphen |
Moin,
okey, ich werde mir das Newtonverfahren auch nochmal anschauen...
scheint ja viel komplizierter zu sein als zu Anfang gedacht :D.
Übrigens, ich denke, dass ich für meine Zwecke wahrscheinlich nur den ersten Schnittpunkt berechnen muss. Das wird sich aber noch zeigen.
Gruß
Hyphen
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 17:07 Do 24.02.2011 | Autor: | hyphen |
Hallo,
ich habe mir das Newtonverfahren, die Fixpunktiteration und ein paar andere angesehen. Aber es scheint so, als wäre das finden der allerersten Nullstelle nicht so einfach möglich? Stattdessen scheint es Willkürlichkeit welche Nullstelle zuerst gefunden wird. Kann mir da einer helfen?
Gruß
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 19:57 Do 24.02.2011 | Autor: | leduart |
Hallo
Das Finden einer Nst mit Newton, wenn es mehrere gibt ist immer vom Startwert abhängig. wenn du den Ersten suchst solltest du mit t=0 anfangen . wenn du den hast dann wieder schätzen, wo der nächst liegt usw.
ich verstehe nicht ganz, warum die hauptbewegung deines robos nicht längs der x-achse sein sollte, die schräg zu irgenwas anderem zu stellen ist doch dann einfach. dann weisst du in welchem bereich Geraden 2 oder mehrfach schneiden. bie den schrägen geraden geht das zwar auch ist aber aufwendiger.
Gruss leduart
|
|
|
|