DMUG-Archiv 2003

Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

Re: Elegantere Schreibweise fuer Transpose

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


Antworten:
Verweise:
Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

DMUG DMUG-Archiv, http://www.mathematica.ch/archiv.html