wie multipliziert man eine Matrix mit ihrer Transponierten?

wie multipliziert man eine Matrix mit ihrer Transponierten?

Ich möchte eine Matrix mit ihrer Transponierten multiplizieren, um herauszufinden, ob sie Q t Q=I bestätigt.

Doch wenn ich es in Matlab berechne, erhalte ich etwas Seltsames unter Verwendung eines mir unbekannten Konzepts: conj(x).

  • Wie multipliziert man also eine Matrix mit ihrer Transponierten?

Hier ist der Code, den ich ausprobiert habe:

>> syms x
>> A=[cos(x) -sin(x);
sin(x) cos(x)]

A =

[ cos(x), -sin(x)]
[ sin(x),  cos(x)]

>> A'*A

ans =

[ cos(conj(x))*cos(x) + sin(conj(x))*sin(x), sin(conj(x))*cos(x) - cos(conj(x))*sin(x)]
[ cos(conj(x))*sin(x) - sin(conj(x))*cos(x), cos(conj(x))*cos(x) + sin(conj(x))*sin(x)]

Antwort1

Mir ist klar, dass dies eine alte Frage ist, aber da der Community-Bot sie unbedingt wieder hochholen möchte, kann ich sie auch gleich beantworten.

Der Grund, den MATLAB Ihnen in der Ausgabe angibt, conjist, dass Sie den komplex konjugierten Transponierungsoperator '(auch bekannt als ctranspose()) verwenden.

Weil es sich um symbolische Mathematik handelt, macht MATLAB keine Annahmen darüber, ob xreal oder komplex ist, und muss es deshalb conj()in der Ausgabe belassen – bei reellen Zahlen tut die Funktion nichts, bei komplexen Zahlen nimmt sie die Konjugierte.

Wenn Sie .'stattdessen verwenden, ist dies die reguläre Matrixtransponierung (auch bekannt als transpose()). Infolgedessen fügt MATLAB der Ausgabe keine komplexen konjugierten Aufrufe hinzu, da es den Inhalt des Arrays bei der Transponierung ignoriert.

>> A'*A
 
ans =
 
[ cos(conj(x))*cos(x) + sin(conj(x))*sin(x), sin(conj(x))*cos(x) - cos(conj(x))*sin(x)]
[ cos(conj(x))*sin(x) - sin(conj(x))*cos(x), cos(conj(x))*cos(x) + sin(conj(x))*sin(x)]

>> A.'*A
 
ans =
 
[ cos(x)^2 + sin(x)^2,                   0]
[                   0, cos(x)^2 + sin(x)^2]

Hinweis: cos(x)^2 + sin(x)^2 == 1, also ans == [1 0;0 1] == I.

verwandte Informationen