By block matrices we mean matrices with noncommuting entries.
The Mathematica convention for handling vectors is tricky.
v={{1,2,4}}
is a 1
v={{1},{2},{4}}
is a 3
v={1,2,4}
is a vector but NOT A MATRIX. Indeed whether it is a row or column vector depends on the context. DON'T USE IT. Always remember to use TWO curly
brackets on your vectors or there will probably be trouble.
As of NCAlgebra version 3.2 one can handle block matrix manipulation
two different ways. One is the old way as described below where you use
the command MatMult[A, B] to multiply block matrices A and B
and tpMat[A] to take transposes. The other way is much more
pleasing though still a little risky. First you use the
NCGuts[] with the Options NCStrongProduct1
True
to change
to make block matrices multiply corectly.
Further invoke
the Option NCStrongProduct2
True
to strengthen the power of
.
Now one does not have to use MatMult and tpMat;
just use
and
instead
it recognizes matrix sizes and multiplies correctly.