Maxima's generic noncommutative multiplication operator is "." Several option variables control the simplification of ".", but the
defaults might be what you want for matrix multiplication; for example, the default is that "." is associative.
Maxima does not require a declaration for a symbol to represent a matrix. One not so nice thing is that Maxima simplifies
a - a to zero no matter what (well you could turn simplification off, but that is the exit ramp to trouble).
Example
(%i3) a.(b.c)-(a.b).c;
(%o3) 0
If it matters that (and it might) that you don't want 0 to represent a number or a zero matrix of any size, I know of no
easy workaround.
For a symbol (and only a symbol), you can do
(%i8) put(A, matrix);
(%o8) matrix
(%i12) get(A,matrix);
(%o12) matrix
But doing this doesn't allow Maxima to deduce that the sum of matrices is a matrix.
If you search the mailing list, I think you will find some references to symbolic matrix arithmetic.
--Barton
________________________________
From: maxima-bounces at math.utexas.edu <maxima-bounces at math.utexas.edu> on behalf of George Lowe <george2lowe at hotmail.com>
Sent: Wednesday, November 27, 2013 13:09
To: maxima at math.utexas.edu
Subject: matrix manipulation
Suppose I need to manipulate symbolic matrices algebraicaly and with calculus. Can this be done? How do I tell maxima that a symbol is a matrix?