|
Hallo, nein, das geht in Mathematica so ohne weiteres nicht. Es gibt im strengen Sinn keine "Typen" (=abstrakt data types), (da muessten Sie sich Axiom anschauen, aber da brauchen Sie vieeeel Zeit -:)). Das einzige was man machen kann, ist Programmieren, z.B.: In[1]:= ( DataType[b, Matrix] = {2,2}; MyDot[x__] := Apply[Dot, {x}/.(z_/;ValueQ[DataType[z, Matrix]]) :> Table[z[in,im],{in,DataType[z,Matrix][[1]]}, {im,DataType[z,Matrix][[2]]}] ]; MyDot[{{a11, a12}, {a21, a22}}, b] ) Out[1]= {{a11 b[1, 1] + a12 b[2, 1], a11 b[1, 2] + a12 b[2, 2]}, > {a21 b[1, 1] + a22 b[2, 1], a21 b[1, 2] + a22 b[2, 2]}} Fuer den allgemeinen Fall ist es dann sowieso besser darstellungsfrei zu rechnen, d.h., einfach die Regeln der nichkommutativen Algebra zu programmieren. Gruss, Rolf |