Matrix in maths

From Wiki
Revision as of 18:44, 29 November 2020 by Jprey (talk | contribs) (Adding description of the optional parameter of \VL and \HL)
Jump to navigation Jump to search

In order to type matrices in math formulas, there is the command \definemathmatrix. Once a certain type of matrix is defined, one can also add a simple command in order to type matrices in a Matlab or Scilab format.

Here are a few examples

%% defining matrix with parentheses
\definemathmatrix[pmatrix]
	[matrix:parentheses]
	[simplecommand=pmatrix]

%% defining matrix with brackets
\definemathmatrix[bmatrix]
	[matrix:brackets]
	[simplecommand=bmatrix]
 
%% defining determinant with bars
\definemathmatrix[determinant]
	[matrix:bars]
	[simplecommand=thedeterminant]
\starttext
Let $A$ be the matrix
\startformula
A := 
	\startpmatrix
		\NC 2 \NC 3 \NR
		\NC 1 \NC 2 \NR
	\stoppmatrix.
\stopformula
Show that
\startformula
{\rm det}(A) = \startdeterminant
	\NC 2 \NC 3 \NR
	\NC 1 \NC 2 \NR
\stopdeterminant = 1.
\stopformula
Compute the matrix $AB$ where $B$ is the matrix
\startformula
B := \pmatrix{2, -3 ; -1, 2}.
\stopformula
\stoptext

It is possible to have different delimiters on the left and on the right. For instance:

\definemathmatrix[pvmatrix]
	[left={\left(\thinspace},
	right={\thinspace\right|}]
	
\definemathmatrix[rpmatrix]
	[left={\left.\thinspace},
	right={\thinspace\right)}]

\starttext
\startformula
	\startpvmatrix
		\NC 11 \NC 12 \NC 13 \NR
		\NC 21 \NC 22 \NC 23 \NR
		\NC 31 \NC 32 \NC 33 \NR
	\stoppvmatrix
	\startrpmatrix
		\NC  0 \NR
		\NC  1 \NR
		\NC  2 \NR
	\stoprpmatrix
\stopformula

\stoptext

In ConTeXt LMTX beginning version 2020-11-27, it is possible to create « block » matrices where the blocks are separated by vertical or horizontal lines (respectively \VL and \HL). For instance the above example can be typeset more easily by the following (the output may be incorrect on this wiki: if this is the case copy the code below and typeset it on your machine with ConTeXt LMTX):

\definemathmatrix[mymatrix]
	[left={\left\lparent\thinspace}, % instead of the left parenthesis, one can use any other fence
	right={\thinspace\right\rparent}] % instead of the right parenthesis, one can use any other fence

\starttext
Here is $3 \times 3$ matrix with a column added to it
\startformula
	\startmymatrix
		\NC 11 \NC 12 \NC 13 \VL 0 \NR
		\NC 21 \NC 22 \NC 23 \VL 1 \NR
		\NC 31 \NC 32 \NC 33 \VL 2 \NR
	\stopmymatrix
\stopformula
Here is block matrix:
\startformula
	\startmymatrix
		\NC A \VL  B \NR
		\HL
		\NC C \VL  D \NR
	\stopmymatrix
\stopformula

The two commands \VL and \HL take an optional parameter which defines the thickness of the rule and its color. So \HL[3, red] will produce a red horizontal rule three times thicker than the default matrix rule. The rule thickness for a specific matrix is defined with the rulethickness parameter of \definemathmatrix.

\definemathmatrix[mymatrix][matrix:parentheses][rulethickness=2pt]

\starttext
\startformula
	\startmymatrix
		\NC A \VL[3,green]  B \NR
		\HL[10,red]
		\NC C \VL D \NR
	\stopmymatrix
\stopformula

A \VL counts as a hidden cell. To interrupt a vertical line, use an empty cell.

\definemathmatrix[mymatrix][matrix:parentheses]

Weird matrix

\starttext
\startformula
	\startmymatrix
		\NC A \VL B \NR
		\HL[red]
		\NC C \NC \NC D \NR
	\stopmymatrix
\stopformula

This allows things like

\startformula
	\startmymatrix
		\NC A \VL B \NR
		\HL
		\NC \NC C \NC \NR
	\stopmymatrix
	\qquad
	\startmymatrix
		\NC A_1 \VL B_1 \NR
		\HL
		\NC \vdots \NC \vdots \NC \vdots \NR
		\HL
		\NC A_n \VL B_n \NR
	\stopmymatrix
\stopformula
\stoptext