RE: Automatic Display in MatrixForm
- To: mathgroup at smc.vnet.net
- Subject: [mg19563] RE: Automatic Display in MatrixForm
- From: "Ersek, Ted R" <ErsekTR at navair.navy.mil>
- Date: Wed, 1 Sep 1999 23:07:00 -0400
- Sender: owner-wri-mathgroup at wolfram.com
More on my latest solution which made matrices display in the equivalent of MatrixForm, except for an (empty matrix) or (for a matrix of rules). The solution also allows one to define MyFunc[x_] which returns a matrix and display it using the equivalent of StandardForm. Colin Rose replied: ----------------------------------------- It's very clever. But it seems a little invasive: the $Pre forces an extra evaluation on each and every Input that is undertaken keeping on setting HiddenSymbols`UseMatrixForm=True. Is there not a less invasive way, say: MyFunc[x] // ListForm where the addition of ListForm produces the output as a List, rather than a fancy MatrixForm ? ------------------------ I can't find a less intrusive solution, but the code below is slightly simpler than what I sent yesterday. ------------------------ In[1]:= $Pre:=(HiddenSymbols`UseMatrixForm=True;#&) MakeBoxes[m_?(Function[t,MatrixQ[Unevaluated[t]]&& (Flatten[t/.(_Rule|_RuleDelayed)->Sequence[]]=!={}),HoldAll]), StandardForm]/;HiddenSymbols`UseMatrixForm:= RowBox[{"(",GridBox[Map[Function[t,MakeBoxes[t,StandardForm],HoldAll],Uneval uated[m],{2}]],")"}] In[2]:= MyFunc[x_]:=(HiddenSymbols`UseMatrixForm=False;3 x) In[3]:= m={{1,2,1},{1,0,1},{0,0,1}} MyFunc[m] m.m Out[3]= 1 2 1 1 0 1 0 0 1 Out[4]= {{3,6,3},{3,0,3},{0,0,3}} Out[5]= 3 2 4 1 2 2 0 0 1 In[6]:= Solve[x^2-3 x+2==0,x] Out[6]= {{x->1},{x->2}} In[7]:= {{},{},{}} Out[7]= {{},{},{}} -------------------- Regards, Ted Ersek For Mathematica tips, tricks see http://www.dot.net.au/~elisha/ersek/Tricks.html