MathGroup Archive 1998

[Date Index] [Thread Index] [Author Index]

Search the Archive

RE: making MatrixForm[] defaul




Barry Wark wrote:
 ----------
|I am doing a lot of work in Mathematica for my linear algebra class. I
|find that I'm doing a lot of MatrixForm[] around commands to generate
|output that I am comfortable reading. Is there any way to make
|MatrixForm the default method for displaying matricies (lists) so that
|I don't have to keep typing it?
|

First I tried the code in the next line, and it works a lot of the time.
___________________
MakeBoxes[m_?MatrixQ, form_]:=
RowBox[{"(",GridBox[Map[MakeBoxes[#, form]&, m, {2}]],")"}]


But then if you evaluate:
In[n]:=
HoldForm[3*{{1,2},{3,4}}]

you get the MatrixForm equivalent of {{3,6},{9,12}}.

____________________________________________________________________
Tech Support  at Wolfram Research showed me how to fix this. Those guys
are great.

They said:
Typesetting rules often require meticulous control of evaluation.

Since the expression inside of Hold or HoldForm must be displayed, these
rules are applied regardless of whether or not the enclosing expression
would otherwise hold the expression unevaluated.

The rule above was applied to    HoldForm[3*{{1,2},{3,4}}] for the same
reason that   MatrixQ[3 * {{1, 2}, {3, 4}}] returns True.

The original input isn't a matrix, but it evaluates to something that is
a  matrix, so the rule is applied.

They suggested the following code which works much better.

In[n]:=
MakeBoxes[m_?(Function[t, MatrixQ[Unevaluated[t]]&&(  t=!={{}}   ),
 HoldAll]), form_]:=
 RowBox[{"(",
   GridBox[
      Map[Function[t, MakeBoxes[t, form], HoldAll],
      Unevaluated[m],{2}]],
  ")"}]


I put this in a package called matrix.m. Instead you could also put it
in your init.m (this way it will always be  used by default)!

My matrix.m package also has code in it that makes it so you can use
text  book notation for Transpose[m] and Inverse[m].  Let me know if
you want the  details.

Also:
Make Boxes can be confusing.  I could try to explain how it works if
anyone  is interested.

Ted Ersek




  • Prev by Date: Re: Simplifying algebraic expr: howto?
  • Next by Date: I can not run kernel
  • Prev by thread: sound in math2.2
  • Next by thread: Re: making MatrixForm[] defaul