paf@cornell.UUCP (Peter Fenyes) (04/01/85)
TO ALL MACSYMA HACKERS: HELP!!!! I have been trying to use MACSYMA to do some symbolic linear algebra. I am trying to manipulate symbolic quantities which are to represent vectors matrices and scalars. The first problem seems to be that MACSYMA only "understands" vectors (i.e. lists) or matrices if they have values - if they are symbolic quantities they must be declared to have the "nonscalar" property so that the distinction between vectors and matrices are lost. Consider the expressions : transpose(v).v transpose(v).M.transpose(M).v where v is a column vector and M is a matrix. Of course, if the dimensions are correct, these expressions are simply scalars. How can I get MACSYMA to substitute a scalar for these quantities? For the first example I have tried to use "tellsimp" or "tellsimpafter" to define a substitution rule - this works for the cases transpose(v1).v1 v2.transpose(v1).v1 but not for transpose(v1).v1.v2 v3.transpose(v1).v1.v2 etc. This seems to be related to the unequal left and right binding powers of the dot operator. I tried to reset the powers using the "infix" function but I just defined a new dot operator which didn't work correctly - e.g. transpose(h.j) was not handled correctly. Is there any way to modify the binding powers of the system's dot operator without affecting its other properties? (I have also tried the "subst"itute functions,"let" rules and "defrule" with no more success.) In short, I am fresh out of ideas and getting nowhere. I am hoping that someone may have had experience with linear algebra in MACSYMA and can steer me in the right direction. Thanks, Peter Peter Fenyes / Dep't of Mech Eng./ Cornell University / Ithaca / NY / 14853 {uw-beaver,ihnp4,decvax,vax135}!cornell!paf (UUCP) paf@Cornell.ARPA (ARPAnet) paf@CRNLCS (BITNET)