Hallo,
Deine L"osung ist Quatsch, weil man damit zwar
a^T eingeben kann, aber
{{a, b}, {c, d}}^T
nicht etwa {{a,c},{b,d}} liefert sondern:
{{Transpose[a], Transpose[b]}, {Transpose[c], Transpose[d]}}
Power[] ist n"amlich Listable und deshalb wird erst
_^T "uber alle Matrixelemente verteilt und *dann* die Regel
f"ur a^T angewendet. Nat"urlich kommt auch ein
T /: x_?MatrixQ^T := Transpose[x]
nicht zum Zuge. Mann m"usste also erstmal das Listable
Attribut von Power[] entfernen damit
T/: x_^T := Transpose[x]
eince Chance hat auf eine richtige Matrix angewendet zu werden.
Es war keine Langeweile, das ich die SuperscriptBox[]/MakeExpression[]
Version vorgeschlagen habe, denn diese Variante l"asst Power[] und das
Symbol T
zufrieden und wird angewendet bevor das Listable Attribut von Power[]
zuschl"agt. Es ist auch sematisch sauberer, weil a^T=Transpose[a] eben
*keine*
Potenz ist und es unlogisch w"are deshalb Power[] umzudefinieren.
Gruss
Jens
PS: Das selbe Elend mit Listable trifft einen "ubrigens auch wenn man
richtige Matrix-Potenzen definieren will weil eine Regel
Power[a_?MatrixQ,n_Integer]:=Nest[Dot[a,#]&,a,n]
auch nie vor dem verteilen der Potenzen auf die Matrixelemente
angewendet w"urde solange Power[] sein Listable Attribut hat.
Thomas Hahn wrote:
>
> > Ich würde gerne die Schreibweise AT, wobei das T hochgestellt ist,
> > statt Transpose[A] für das Transponieren einer Matrix verwenden.
> > Wie definiert man das?
>
> Wenn das Symbol T noch nicht anderweitig belegt ist:
>
> T/: x_^T := Transpose[x]
>
> Und zum Anzeigen:
>
> Unprotect[Transpose];
> Format[Transpose[x_]] := HoldForm[x^T]
>
> Gruß,
>
> Thomas Hahn