Re: Transpose matrix does not work when MatrixForm is used, why?
- To: mathgroup at smc.vnet.net
- Subject: [mg45397] Re: Transpose matrix does not work when MatrixForm is used, why?
- From: "Ersek, Ted CIV NASPATUXENTRIVERMD 4.5.1.2" <ted.ersek at navy.mil>
- Date: Tue, 6 Jan 2004 04:16:56 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
Recall the recent thread on how do ensure we can do math on matrices
wrapped in MatrixForm.
Apparently other solutions didn't quite do the trick. I think the code
below is better.
(*------------------------------------------*)
Unprotect[MatrixForm];
HeadTest[func_]:= Intersection[{func},
=
{If,List,Set,SetDelayed,UpSet,UpSetDelayed,TagSet,TagSetDelayed,Format,
=
MakeBoxes,MakeExpression,ToBoxes,Shallow,Short,Hold,HoldForm,HoldComplete=
,
=
HoldPattern,Verbatim,Blank,BlankSequence,BlankNullSequence,Alternatives,
Pattern,Optional,Repeated,RepeatedNull,Condition,PatternTest,Rule,
RuleDelayed,FullForm,InputForm
}]==={}
MatrixForm/:(f_?HeadTest)[a1___, a2_MatrixForm, a3___]:=
Module[{result},
result = Replace[ {a1,a2,a3}, MatrixForm->Identity, 2, Heads->True
];
result = f@@result;
If[ MatrixQ@result, MatrixForm[result], result ]
]
(*---------------------------------------------------------*)
Now we can do the following and get the output in MatrixForm.
m1=MatrixForm[{{2,3,4},{1,5,2},{6,3,1}}]
Inverse[m1]
MatrixPower[m1,4]
m2={{2,0,4},{0,5,2},{0,3,1}};
m1.m1.m1.m2
Det[m1]
Part[m1,1,3]
----------------
Regards,
Ted Ersek
Download Mathematica Tips From
http://www.verbeia.com/mathematica/tips/Tricks.html