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?
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?
Hallo Rainer
des is wurscht (vollkommen egal).
Die Drehungen sind assoziativ, d.h. A*(B*C)=(A*B)*C.
Hallo Rainer
des is wurscht (vollkommen egal).
Die Drehungen sind assoziativ, d.h. A*(B*C)=(A*B)*C.
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.
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).
Gruss LindePaul
Muß zugeben, praktische Erfahrung in dieser Hinsicht habe ich nicht viel.
Aber laut Doku ist das so.
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:
ZitatIm 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
Ihr habt ja Sachen drauf
Gruß
Schybulla
Alles anzeigen
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:
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
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
@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
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
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:
Zitata) 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
Gruß ... gooselk
Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können