|
From: Richard F. <fa...@gm...> - 2022-03-18 20:09:04
|
There are at least three ways of looking at this. 1. You are not really interesting in matrix manipulation, but in symbolic arithmetic in a non-commutative algebra. 3 by 3 matrices are an example, but if you never look inside them, who cares? They could be 9x9, or something else that is not a matrix at all. 2. You actually are interested in 3x3 matrices, and if you fill them with a[1,1]... a[3,3] and just plod along, you will get the results you want, eventually. 3. You have a concept of matrices that includes special cases like, for arbitrary N, an NxN symmetric tri-diagonal matrix. Whole categories of matrix types, storage disciplines, efficient operations, etc. are part of numerical libraries. We would have to go much further to manipulate matrices with sizes that are unspecified. Nevertheless, one can imagine programs to manipulate such things, proving relationships, etc, while never telling you explicitly the value of any element, or even requiring that the sizes be specified (other than perhaps N is a positive integer....) There may be other useful views. Maxima supports view 2, pretty thoroughly. View 1, so-so, since there are lots of choices as to what to do. View 3, not much at all, but something could be programmed, if you figure out what you need. There's other discussion of such matters going back decades. E.g. https://maxima-discuss.narkive.com/ehJacjpe/can-maxima-be-used-to-simplify-symbolic-matrix-algebra-statements RJF On Fri, Mar 18, 2022 at 11:26 AM Stavros Macrakis <mac...@al...> wrote: > On Thu, Mar 17, 2022 at 3:04 PM M G Berberich <ma...@os...> > wrote: > >> ... >> I expect it to know the standard rules like: >> >> (A . B)^T = B^T . A^T >> > > In Maxima, ^ means exponentiation using the *** (scalar multiplication) > operator, and ^^ means exponentiation using the *. *(non-commutative > non-scalar multiplication) operator. > > A^T just means A to the power T using scalar multiplication (which is not > very useful for matrices). Apparently you are using ^T to mean > "transpose"? > > In that case, Maxima does in fact use that rule: > > transpose(a.b) => transpose(b).transpose(a) > > Maxima also performs other interesting simplifications: > > a.b.a.b => (a.b)^^2 > > You might try experimenting with various settings of *dotassoc, > dotexptsimp, *and so on, though the functionality is admittedly > incomplete. > > _______________________________________________ > Maxima-discuss mailing list > Max...@li... > https://lists.sourceforge.net/lists/listinfo/maxima-discuss > |