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
|