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)