Re: [Outer [Times, , ] ] Question
- To: mathgroup at smc.vnet.net
- Subject: [mg45851] Re: [Outer [Times, , ] ] Question
- From: drbob at bigfoot.com (Bobby R. Treat)
- Date: Tue, 27 Jan 2004 04:50:50 -0500 (EST)
- References: <bv00aa$jda$1@smc.vnet.net> <bv2g3q$6g$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Sorry, it was Ted Ersek's code, not Andzej's. Andrzej had posted a slightly less complete solution, and I got confused. Bobby drbob at bigfoot.com (Bobby R. Treat) wrote in message news:<bv2g3q$6g$1 at smc.vnet.net>... > MatrixForm objects don't add, because they're not matrices. But your > code works perfectly for me, because (see a recent thread on > MatrixForm), I have installed the following code in my Init.m file > (thanks to Andrzej Kozlowski): > > 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[MatrixForm[m_]] ^:= MatrixForm[m]; > 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]] > Protect[MatrixForm]; > > Bobby > > MichaelSMcCain at cs.com wrote in message news:<bv00aa$jda$1 at smc.vnet.net>... > > Hi: > > > > I want to take a Column Vector and multiply it by a Row Vector to create an > > "Outer" Matrix. > > > > In other words, I want to take a 5x1 Column Vector and multiply it by a 1x4 > > Row Vector and output a 5x4 Matrix. > > > > I then want to add several of these Matrices together and obtain a "final" > > Matrix. > > > > I tried the following: > > > > x1 = {1, -1, -1, 1, 1}; > > y1 = {1, 1, -1, -1}; > > > > x2 = {-1, 1, -1, 1, -1}; > > y2 = {1, -1, 1, -1}; > > > > x3 = {1, 1, -1, -1, 1}; > > y3 = {-1, -1, 1, 1}; > > > > m1 = MatrixForm[Outer [Times, x1, y1] ] > > m2 = MatrixForm[Outer [Times, x2, y2] ] > > m3 = MatrixForm[Outer [Times, x3, y3] ] > > > > mm = m1 + m2 + m3 > > > > MatrixForm[mm] > > > > The output that I get is incorrect and does not combine into a single Matrix. > > > > > > What am I doing wrong? > > > > Thanks, > > > > > > Mike McCain > > MichaelSMcCain at cs.com