Studium, Ausbildung und Beruf
 StudiumHome   FAQFAQ   RegelnRegeln   SuchenSuchen    RegistrierenRegistrieren   LoginLogin

Umformen einer monströsen Gleichung
Gehe zu Seite 1, 2, 3, 4  Weiter
Neues Thema eröffnen   Neue Antwort erstellen
Foren-Übersicht -> Mathe-Forum -> Umformen einer monströsen Gleichung
 
Autor Nachricht
Gast







BeitragVerfasst am: 10 März 2005 - 23:41:26    Titel: Umformen einer monströsen Gleichung

Hallo zusammen!

Ich habe diese ziemlich monströsen Gleichungen (für die x und y Koordinate eines Punkts auf einer kubischen Bezier Kurve);

Code:
   px = ((1 - (t / 100)) * (1 - (t / 100)) * (1 - (t / 100))) * p1x + 3 * (t/100) * (1 - (t / 100)) * (1 - (t / 100)) * p2x + 3 * (t/100) * (t/100) * (1 - (t / 100)) * p3x + (t/100) * (t/100) * (t/100) * p4x;

      py = ((1 - (t / 100)) * (1 - (t / 100)) * (1 - (t / 100))) * p1y + 3 * (t/100) * (1 - (t / 100)) * (1 - (t / 100)) * p2y + 3 * (t/100) * (t/100) * (1 - (t / 100)) * p3y + (t/100) * (t/100) * (t/100) * p4y;

px un py kenne ich bereits, ebenso alle anderen Variablen ausser t.
Wie kann ich diese Gleichungen nach t umformen?

Meinen letzten Mathe-Unterricht hatte ich vor über 20 Jahren - bitte langsam und deutlich sprechen Wink

Vielen Dank!
algebrafreak
Senior Member
Benutzer-Profile anzeigen
Senior Member


Anmeldungsdatum: 28.10.2004
Beiträge: 4143
Wohnort: Passau

BeitragVerfasst am: 10 März 2005 - 23:56:00    Titel:

Wenn ich mich nicht täusche sind beide Ausdrücke Polynome in t. Die Lösung ist Ausmultiplizieren und gemeinsame t Potenzen zusammenfassen. Maple macht das mit expand-Befehl. Dann ist es Frage von Glück, ob algebraische Lösungen gefunden werden können. Womöglich ist das ganze vom Grad <= 4 und dann sind alle glücklich. Wenn nicht muß man approximieren. Z.B. mit Newton bei geeigneter Stellenwahl.
Andreas Weber
Gast






BeitragVerfasst am: 11 März 2005 - 00:17:01    Titel:

Danke für die Antwort!

> Wenn ich mich nicht täusche sind beide Ausdrücke Polynome in t.
Polynome tönt sehr gut - Bezier Kurven bauen auf 'Bernstein basis polynomials' auf (na ja, das hab ich zumindest gelesen).
Uebrigens - bei der Gleichung kenne ich zwar t nicht, ich weiss aber dass t im Bereich zwischen 0 und 100 liegt - t bezeichnet den prozentualen Ort auf der Kurve (0 am Anfang, 100 am Ende)

> Maple macht das mit expand-Befehl.
Ich hab rasch nach 'Maple' gegooglet - es scheint sich dabei um eine spezialisierte Mathe Software zu handeln, die ich aber nicht habe...

> Die Lösung ist Ausmultiplizieren und gemeinsame t Potenzen zusammenfassen.
Da ich Maple nicht habe - liesse sich das allenfalls programmieren? Von Mathe hab ich ehrlich gesagt keine grosse Ahnung, von Programmieren schon eher. Die Gleichung stammt aus dieser Function

Code:
   public function getPointsOnCubicCurve(targ:Number, p1:Object, p2:Object,
p3:Object, p4:Object):Object {
      var a:Number,b:Number,c:Number;
      var v:Number = targ / 100;
      a = 1 - v;
      b = a * a * a;
      c = v * v * v;
      var p:Object = {};
      p.x = b * p1.x + 3 * v * a * a * p2.x + 3 * v * v * a * p3.x + c * p4.x;
      p.y = b * p1.y + 3 * v * a * a * p2.y + 3 * v * v * a * p3.y + c * p4.y;
      return p;
   }



(den Punkt hab ich, wie bereits gesagt, ich suche den prozentualen Ort auf der Kurve)

Danke für die Geduld!

Andreas Weber
motiondraw.com
algebrafreak
Senior Member
Benutzer-Profile anzeigen
Senior Member


Anmeldungsdatum: 28.10.2004
Beiträge: 4143
Wohnort: Passau

BeitragVerfasst am: 11 März 2005 - 00:49:58    Titel:

Ich habe gerade festgestellt, daß ich code-zeilen direkt ins maple eingeben kann Smile Ein echter Fortschritt.

Die Ausdrücke lassen sich zu Polynomen vom Grad 3 umformen. Polynome vom Grad 3 besitzrn durch Cardanische (oder Cardansche) Formeln geschlossene Lösungen über R. Die Polynme schauen so aus:

Code:

px =

      3 t p1x   3 t p2x   3 t  p1x   3 t  p2x    t  p1x   3 t  p3x
p1x - ------- + ------- + -------- - -------- - ------- + -------- +
        100       100       10000      5000     1000000     10000

      3          3         3
   3 t  p2x   3 t  p3x    t  p4x
   -------- - -------- + -------
    1000000    1000000   1000000

py =

      3 t p1y   3 t p2y   3 t  p1y   3 t  p2y    t  p1y   3 t  p3y
p1y - ------- + ------- + -------- - -------- - ------- + -------- +
        100       100       10000      5000     1000000     10000

      3          3         3
   3 t  p2y   3 t  p3y    t  p4y
   -------- - -------- + -------
    1000000    1000000   1000000


Ich habe, wenn ich mathe-anwendungen Progrmmiere, meistens eine Instanz von Maple offen, weil es sich leichter und vor allem sicherer Lebt. Wenn man kein Maple hat, so ist MuPAD eine sicher vernünftige Alternative.
Andreas Weber
Gast






BeitragVerfasst am: 11 März 2005 - 06:43:24    Titel:

Hallo algebrafreak!

Besten Dank für Deine Antwort!

Ich fürchte, dass Du hier Perlen vor die Säue wirfst...

Da ich 'cardanische Formel' zum ersten Mal höre habe ich wieder Google bemüht, mit an sich sehr gutem Resultat:

http://www.fh-lueneburg.de/mathe-lehramt/lbs-mathe.htm?show=http://www.fh-lueneburg.de/mathe-lehramt/algebra/gleichung/cardano.htm

Nur: das ist völlig jenseits meines Verständnishorizontes - mit anderen Worten: ich habe von Tuten und Blasen keine Ahnung...

Um hier irgendwie weiterzukommen - bei den Polynomen vom Grad 3:
Wie ist so etwas zu lesen: 3 t p1x
ist das
3 x t x p1x (Produkt) ?

und

kann ich die von Dir geposteten Polynome nun in MuPad eingeben und warten dass es mir das auf t auflöst? Das tönt irgenwie ein bisschen idyllisch...

Ich bin selber als 'Mentor' in einem Forum für ActionScript (Flash Programmierung) aktiv - ich weiss wie undankbar es ist wenn Leute Fragen posten, bei denen sie nur an der Lösung, nicht aber am Weg dahin interessiert sind, d.h. wenn sie nicht wirklich etwas lernen wollen sondern nur einen 'quick fix' für das Problem.
Leider bin ich genau in dieser Situation: Für ein Verständnis der Lösung fehlt mir die Grundlage völlig, und trotzdem brauche ich eine Lösung...

Noch einmal vielen Dank für Deine Geduld!

-----------------
Andreas Weber
motiondraw.com
algebrafreak
Senior Member
Benutzer-Profile anzeigen
Senior Member


Anmeldungsdatum: 28.10.2004
Beiträge: 4143
Wohnort: Passau

BeitragVerfasst am: 11 März 2005 - 09:41:57    Titel:

Also die Version von Maple aus unserem CIP-Pool liefert ein Nichts zurück, wobei die Semantik davon wie auch immer sein soll. MuPAD stürtzt ab zumindest mit einer Bemerkung klarer Semantik "Error: Memory limit of demo version exceeded".

Das Problem ist, daß in deinen Ausdrücken Variablen außer t vorkommen. Die, wohl etwas allgemein geschriebene, Software kommt damit offensichtlich nicht klar. Ich könnte natürlich die Ausdrücke in die reelle Quantorenelimination eingeben, bloß denke ich, daß die Antwort über eine Seite lang ist. Ich biete folgende Lösung in diesem Fall an:

Das ganze soll doch in einem Programm sein, das zur Laufzeit die Werte der Parameter kennt und dann den Wert von t ausgibt, einfach gesagt. Die Sprache ist wohl prozedural und objektorientiert. Daher wird es nicht schwer sein nach den Regeln für cardansche Formeln eine Prozedur zu schreiben, die die Lösungen einer kubischen Gleichung

a x^3 + b x^2 + c x + d = 0

als Liste ausgibt. In diese Gibst Du einfach als a,b,c,d die berechneten Werte für z.B. t^3

Code:
                 
      3 p2x         3 p3x        p4x
     -------- -    -------- +  -------   
    1000000    1000000   1000000


Dabei habe ich t ausgeklammert. Ich bemerke nebenbei, daß die 2-e Potenz Fehlt. daher ist alles deutlich einfacher:

ax^3 + bx = 0

eine Lösung ist 0. Die anderen ergeben sich durch Poly-Disvision aus

ax^2 + b = 0

Für a = 0 und b = 0 kommt R raus, für a = 0 und b<>0 kommt leere Menge raus. Für a <> 0 kommt

x = +-sqrt(- b/a)

falls -b/a >= 0 ist, sonst leer. Das lässt sich doch direkt als Programm schrieben, wobei man mit R und leer aufpassen sollte.

So wie es ausschaut hat das System immer eine Lösung. Nämlich die 0. Wenn es noch eine weitere gemeinsame Lösung gibt, so ist diese im Schnitt der beiden Lösungsmengen der einzelnen Gleichungssysteme, denn diese sind offensichtlich entkoppelt.

Naja. Muss jetzt loß, einen Vortrag über was weiß ich was halten...
Wenn das nicht Zufriedenheit bietet schreibe ich heute nachmittags
Code in C++.
Andreas Weber
Gast






BeitragVerfasst am: 11 März 2005 - 11:34:03    Titel:

Hallo algebrafreak!

Zitat:
Das ganze soll doch in einem Programm sein, das zur Laufzeit die Werte der Parameter kennt und dann den Wert von t ausgibt, einfach gesagt.

Ja, genau.
Am Schluss brauche ich eine Funktion wie die die ich bereits gepostet habe. Diese akzeptiert 5 Parameter: 2 Anker und 2 Kontrollpunkte (je mit x und y Koordinate, also eigentlich 8 Werte) und den prozentulen Wert auf dem der gesuchte Punkt sein soll. Bsp. wenn 'targ' 50 ist liegt der gesuchte Punkte in der Mitte der Bezier Kurve.
Ich kenne - während der Laufzeit des Programms - die Koordinaten aller 5 Punkte - 2 Anker, 2 Kontrollpunkte, 1 Punkt auf der Kurve - und sollte jetzt wissen auf welchem prozentualen Wert der Punkt auf der Kurve liegt.

Ich frage mich ob ich das Pferd nicht am Schwanz aufzäume und damit das ganze komplizierter mache als es ohnehin schon ist.
Die Funktion getPointsOnCubicCurve (siehe oben) ist von jemandem (Alex Uhlmann) aus der allgemeinen Formel für Bezier Kurven abgeleitet worden. Anstatt aus dieser Ableitung etwas abzuleiten wäre es vielleicht einfacher zur Quelle zurückzugehen (nur ist diese in einer Form geschrieben die ich als Nicht-Mathematiker nicht verstehe).

Die Formel würde in HTML zu stark entstellt, hier deshalb der Link
http://astronomy.swin.edu.au/~pbourke/curves/bezier/

Noch einmal - aufrichtigen Dank!

Andreas Weber
Gast







BeitragVerfasst am: 11 März 2005 - 12:27:16    Titel:

Also, ich habe mal einen anderen Weg eingeschlagen und die Ausdrücke einfach mal vereinfacht. Die Terme lauten dann:

p·x·(3·t + 100)
p·x = ————————
100

p·y·(3·t + 100)
p·y = ————————
100

Allerdings muß dann gelten t=0 und das sollte wohl kaum die Lösung sein, die Du suchst... Rolling Eyes

Vielleicht hilft es Dir ja trotzdem irgendwie weiter...
Gast







BeitragVerfasst am: 11 März 2005 - 12:28:40    Titel:

Ups, da gab's wohl Formatschwierigkeiten, also das sollte so aussehen:

px=px(3t+100)/100

py=py(3t+100)/100
Gast







BeitragVerfasst am: 11 März 2005 - 12:47:59    Titel:

Ähm, ich sag's nur ungern, aber ich nehme an dass z.B. die 2 bei p2y ein Index sein soll und Du daher die Terme nicht einfach zusammenfassen kannst...
Beiträge der letzten Zeit anzeigen:   
Foren-Übersicht -> Mathe-Forum -> Umformen einer monströsen Gleichung
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite 1, 2, 3, 4  Weiter
Seite 1 von 4

 
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