Re: Marking pivot elements in a matrix?
- To: mathgroup at smc.vnet.net
- Subject: [mg74938] Re: [mg74930] Marking pivot elements in a matrix?
- From: Carl Woll <carlw at wolfram.com>
- Date: Thu, 12 Apr 2007 04:47:49 -0400 (EDT)
- References: <200704110604.CAA03005@smc.vnet.net>
jackgold at umich.edu wrote:
>Hi folks,
>
>I am writing notes for a class in which matrix manipulations
>is a necessary and frequent task. At present, when I wish to pick an
>entry of the matrix as a "pivot" I simply write "pivot
>on {2, 3}". It would be nice to enclose the {2, 3} entry in a square or
>circle to indicate it is the pivot entry. I am unable to do this. In
>this same vein, I often have need to put a single vertical (horizontal)
>line through the matrix.
>Mathematica provides the means for putting vertical (horizontal)
>lines in a matrix but it allows only the option of putting lines at
>every column (row). I want to be more selective, say one line
>just before the last column. (This is the standard way of indicating
>that the last column is an augmentation to the original coefficient
>matrix).
>
>Is there any reasonably simple way to do this?
>
>
One possibility is to use GridBox and FrameBox as follows:
matrix /: MakeBoxes[ matrix[m_?MatrixQ, gridboxoptions___], fmt_] :=
RowBox[{"(", "\[NoBreak]", GridBox[Map[MakeBoxes[#, fmt] &, m, {2}],
gridboxoptions], "\[NoBreak]", ")"}]
framed /: MakeBoxes[framed[x_, styleboxoptions___], fmt_] :=
StyleBox[FrameBox[MakeBoxes[x, fmt]], styleboxoptions]
Then you can create an augmented matrix using:
m=Array[Subscript[a,##]&,{3,4}];
matrix[m, ColumnLines->{False,False,True}]
You can highlight the {2,3} entry of the augmented matrix using MapAt:
matrix[
MapAt[framed[#,Background->GrayLevel[0.7]]&, m, {2,3}],
ColumnLines->{False,False,True}
]
There are also FrameBox options that you can play with as well as
StyleBox options.
Carl Woll
Wolfram Research
- References:
- Marking pivot elements in a matrix?
- From: jackgold@umich.edu
- Marking pivot elements in a matrix?