Geometrischer Operator

  • Hallo Freakz,


    mal kurz zum Verständnis:


    NeuFrame=FRAME1:FRAME2:FRAME3


    Wie ist bei dieser Rechnung die Priorität? Wird es Frame3 auf Frame2 bezogen errechnet und dann das Ergebnis auf Frame1?

    Greetings, Irrer Polterer!

    Wie poste ich falsch? Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Life is a beta version. Full of bugs and no Manual.

  • Schritt für Schritt zum Roboterprofi!

  • Hallo Rainer


    des is wurscht (vollkommen egal).
    Die Drehungen sind assoziativ, d.h. A*(B*C)=(A*B)*C.


    :beerchug:


    Da kann ich leider nicht zustimmen.
    FRAME1:FRAME2:FRAME3=(FRAME1:FRAME2):FRAME3


    FRAME1:FRAME2:FRAME3 ist aber nicht =FRAME1:(FRAME2:FRAME3)


    Eine Frameverknüpfung wird von links nach rechts ausgewertet. Das Ergebnis hat immer
    den Datentyp des am weitesten rechts stehenden Operanden


    Bei multipliziren hast du natürlich recht.

    "Erfahrung heißt gar nichts. Man kann eine Sache auch 35 Jahre falsch machen."

    Kurt Tucholsky

    Wenn die Macht der Liebe die Liebe zur Macht überwindet, erst dann wird es Frieden geben

    Jimi Hendrix (1942 - 1970), US-amerikanischer Rockmusiker

    Einmal editiert, zuletzt von MEGATRON ()

  • Hallo Megatron,


    der Doppelpunkt-Operator ist nichts anderes wie eine Matrixmultiplikation. Deswegen muss


    FRAME1:FRAME2:FRAME3=(FRAME1:FRAME2):FRAME3= FRAME1:(FRAME2:FRAME3)


    gelten. Wenn dem nicht so ist, würde ich gerne das Gegenbeispiel sehen (die Gleichheit ist hier natürlich im Rahmen der Rechengenauigkeit zu sehen, Abweichungen in der 2. oder 3. Stelle hinter dem Komma sind schon möglich).


    :contra:


    Gruss LindePaul

    Wer nach allen Seiten offen ist kann nicht ganz dicht sein

  • Muß zugeben, praktische Erfahrung in dieser Hinsicht habe ich nicht viel.
    Aber laut Doku ist das so.

    "Erfahrung heißt gar nichts. Man kann eine Sache auch 35 Jahre falsch machen."

    Kurt Tucholsky

    Wenn die Macht der Liebe die Liebe zur Macht überwindet, erst dann wird es Frieden geben

    Jimi Hendrix (1942 - 1970), US-amerikanischer Rockmusiker

  • Hallo MEGATRON,


    ich glaube, da hast du was in den falschen Hals bekommen.


    Wenn ich mich recht an meine Mathestunden erinnere, sind Matrizenmultiplikationen


    a) Assoziativ --> (F1:F2):F3 = F1:(F2:F3)
    b) Distributiv --> F1:(F2 + F3) = (F1:F2)+(F1:F3) ; (F1 + F2):F3 = (F1:F3) + (F2:F3)
    c) nicht kommutativ --> F1:F2 != F2:F1


    Das deckt sich auch mit der Doku, in der steht:

    Zitat

    Im allgemeinen ist jedoch eine einfache Addition der Komponenten nicht möglich!
    Eine Frameverknüpfung ist auch nicht kommutativ, das heißt, durch Vertauschen
    von Bezugsframe und Zielframe wird sich normalerweise auch das Ergebnis
    ändern!


    €dit: LindePaul möge mich jetzt korrigieren, wenn ich falsch liege, aber ich vermute mal Folgendes:
    [spekulation]
    Der Datentyp des Zielframes ist nicht bestimmt von der Reihenfolge der Verknüpfung, sondern ist begründet in den Regeln der Matrizenrechnung, nach denen nicht jede Matrix beliebig mit einer anderen verknüpft werden kann. Eine m,n-Matrix kann nicht mit einer m,n-Matrix verknüpft werden, wenn n != m ist. Dagegen kann man eine m,n-Matix problemlos mit einer n,m-Matrix verknüpfen. Das Ergebnis ist dann eine m,m-Matrix. Grundsätzlich kann man sagen: Soll eine Matrix A mit einer Matrix B verknüpft werden, so geht dies nur, wenn der Zeilenrang von A gleich dem Spaltenrang von B ist. Da, so glaube ich, liegt der Grund für die Typkonvertierung bei der Verknüpfung.
    Wie gesagt, sollte dem nicht so sein, bitte ich um Aufklärung :)
    [/spekulation]


    Ich hoffe, das hilft ein bisschen...


    Gruß ... gooselk

    Einmal editiert, zuletzt von gooselk ()


  • Hallo gooselk.


    Als Verknüpfungen auf den reellen Zahlen sind Addition und Multiplikation assoziativ, es gilt zum Beispiel Addition:


    (2+3)+7=5+7=12 = 2+(3+7)=2+10=12


    Multiplikation:


    (2*3)*7=6*7=42 = 2*(3*7)=2*21=42


    Die Subtraktion und Division sind hingegen nicht assoziativ, denn es ist z. B. Subtraktion


    2-(3-1)=0 != (2-3)-1=-2


    Division:


    (4/2)/2=1 != 4/(2/2)=4

    gilt.


    Dein Zitat ist aber vollkommen richtig.


    Gruß MEGATRON

    "Erfahrung heißt gar nichts. Man kann eine Sache auch 35 Jahre falsch machen."

    Kurt Tucholsky

    Wenn die Macht der Liebe die Liebe zur Macht überwindet, erst dann wird es Frieden geben

    Jimi Hendrix (1942 - 1970), US-amerikanischer Rockmusiker

  • @Schybulla
    Mathe ist doch was Schönes. Leider schläft das Wissen ein wenig ein wenn man es nicht mehr benutzen kann/muss. Muss da zugeben, das ich mich von einem aktiven Mathematiker beraten lassen muss


    MEGATRON
    ich versteh’ jetzt, was Du meinst:
    Der Doppelpunktoperator funktioniert ja nicht nur mit dem Datentyp FRAME, sondern auch mit allen POS-Datentypen (POS, E3POS, E6POS). Diese Datentypen haben aber Komponenten, die den Doppelpunktoperator eigentlich gar nicht interessieren (Status, Turn und Zusatzachswerte). Wenn man nun unterschiedliche Datentypen miteinander verknüpft, so hat das Ergebnis den Datentyp des rechten Operanden (wie von Dir richtig festgestellt wurde).
    Das ändert aber nichts an der Tatsache, dass in jedem Fall das gleiche Ergebnis rauskommt.
    Beispiel:
    Frame p1
    pos p2
    e6pos p3
    e6pos erg
    p1={….};
    p2={…};
    p3={…};


    erg = p1:p2:p3 ;Ergebnis ist E6POS, da rechtester Operator E6POS ist
    erg = p1:(p2:p3) ; Ergebnis wieder E6POS, da rechter Opernad vom Klammerausdruck E6POS ist und damit dann der rechte Operand von p1: auch e6POS
    erg = (p1:p2):p3 ; wieder E6POS
    erg = p3:p2:p1 ; Jetzt sind nur die Frame-Komponenten in erg gültig!


    gooselk
    gut erinnert :supi:
    Was Du da schreibst ist mathematisch natürlich vollkommen richtig, trifft aber in diesem Fall nicht zu. Wenn man ein Frame mit einem E6POS per Doppelpunktoperator verknüpft, so werden quasi nur die beiden Frameanteile miteinander multipliziert (also quasi zwei 4,4 Matrizen, diese ergeben natürlich wieder eine 4,4 Matrix). Die anderen Komponenten vom E6POS, also S (Status), T (Turn) und E1-E6, haben für den Doppelpunktoperator keine Bedeutung, sie werden deswegen einfach von der rechten Seite übernommen (und führen nicht zu einer Dimensionsänderung der Matrix). Also ganz einfach:
    Datentyp des Ergebnisses ist die rechte Seite
    Die Werte der Nicht-Framekomponenten werden ebenfalls von der rechten Seite übernommen

    Natürlich kommt es dann noch darauf an, welchem Datentyp das Ergebnis zuwiesen wird! Wenn z.B. das Ergebnis vom Typ FRAME ist und dieses Ergebnis einer Variablen vom Typ E6POS zugewiesen wird, so sind die Komponenten S, T und E1-E6 von dieser Variablen danach natürlich ungültig.
    Aber vielleicht sollte man das gar nicht mehr erwähnen um nicht weiter Verwirrung zu stiften. Nicht das jetzt jeder seine alten Mathebücher rausholt und wir ein neues MatheForum eröffnen.
    LindePaul, Euer :ks:

    Wer nach allen Seiten offen ist kann nicht ganz dicht sein

  • Hi,


    MEGATRON: Du hast natürlich recht, was die Verknüpfung von reellen Zahlen angeht. Bei dem Geometrischen Operator handelt es sich aber um eine Multiplikation von Matrizen über R. Da gelten nicht die gleichen Regeln. So ist z.B. eine Division A/B zweier Matrizen nicht definiert.


    Aber das führt auch zu weit. Wichtig ist, das aus diesem Grund:

    Zitat

    a) Assoziativ --> (F1:F2):F3 = F1:(F2:F3)
    b) Distributiv --> F1:(F2 + F3) = (F1:F2)+(F1:F3) ; (F1 + F2):F3 = (F1:F3) + (F2:F3)
    c) nicht kommutativ --> F1:F2 != F2:F1


    die Reihenfolge der Multiplikation egal ist, solange man nur linksmultipliziert.
    Kleines Beispiel:
    FrameNeu = Frame1 : Frame2 : Frame3
    = (Frame1 : Frame2) : Frame3
    != Frame3 : (Frame 1 : Frame 2) (Wegen rechtsmultiplikation)
    != (Frame2 : Frame1) : Frame3 ( " )
    eben genau deshalb, weil die Matrixmultiplikation assoziativ aber nicht kommutativ ist.


    Vielleicht habe ich mich auch nicht deutlich genug ausgedrückt, und stillschweigend angenommen, dass eine Verknüpfung im Sinne des Geometrischen Operators immer eine Multiplikation ist.


    LindePaul: Danke für die Aufklärung... man lernt halt nie aus :danke:


    Gruß ... gooselk

Erstelle ein Benutzerkonto oder melde dich an um zu kommentieren

Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können

Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Geht einfach!
Neues Benutzerkonto erstellen
Anmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden