TeX - LaTeX Asked by Dan Ramras on October 20, 2020
When studying systems of linear equations, it’s nice to remind people that the last column of the coefficient matrix holds the constants. This is often done in books by putting a vertical line between the last column and the next to last column. What is a good way to do this in LaTex?
One way to do this is implemented in the (free, in both senses!) online linear algebra textbook Linear Algebra by Jim Hefferon. It's written in LaTeX and is open-source so one can download the book and its attendant style files. One of them, called linalgjh.sty
is about typesetting common linear algebra stuff such as augmented matrices and row reductions and the like. The code for the augmented matrices is:
newenvironment{amatrix}[1]{%
left(begin{array}{@{}*{#1}{c}|c@{}}
}{%
end{array}right)
}
and is used as:
begin{amatrix}{2}
1 & 2 & 3 a & b & c
end{amatrix}
(note that the argument is one less than the total number of columns). I guess that the @{}
s at the start and end are to get the spacing right with the parentheses (mentioned by TH in a comment to fabikw's similar answer).
That style file has several other useful linear algebra macros that may be useful.
Correct answer by Andrew Stacey on October 20, 2020
If you are using an array to input the matrix, you just have to specify something like
left(begin{array}{cc|c}
2 & 0 & 1
0 & 1 & 1
end{array}right)
Answered by fabikw on October 20, 2020
The easybmat
package provides a way to add all sorts of lines between cells in a matrix, including dashed lines which I seem to recall being popular in my undergraduate linear algebra text.
Edit: Here's an example. I'm actually not thrilled about the spacing.
[left(begin{BMAT}(@){cc.c}{cc}
a_{11} & a_{12} & b_1
a_{21} & a_{22} & b_2
end{BMAT}right)]
Answered by TH. on October 20, 2020
If you build your own environment using array, you're on the safe side. I would extend an internal macro of amsmath
using an optional argument.
Advantages:
It extends several matrix environments at the same time (matrix
, pmatrix
, bmatrix
, Bmatrix
, vmatrix
, Vmatrix
).
The names and meanings of those environments remain (not apmatrix
etc.)
Spacing etc. is the same like in amsmath
.
You could do more than just insert a vertical line (use color and alignment, for instance right aligned columns because of minus signs).
If you omit the optional argument, it acts exactly like the amsmath
environment.
Caution:
amsmath.sty
has not been changed for more than 10 years. If there's a change in the matrices later, you could adjust your own macro.Code:
Here's the redefinition, just put it in your preamble after loading amsmath
:
makeatletter
renewcommand*env@matrix[1][*c@MaxMatrixCols c]{%
hskip -arraycolsep
let@ifnextcharnew@ifnextchar
array{#1}}
makeatother
I had to use makeatletter
... makeatother
because of the @
in macro names.
The optional argument is the standard amsmath
argument to array
. The original definition in amsmath
is:
defenv@matrix{hskip -arraycolsep
let@ifnextcharnew@ifnextchar
array{*c@MaxMatrixCols c}}
So, there's not much that's been changed.
Examples:
Simple augmented matrix:
begin{pmatrix}[cc|c]
1 & 2 & 3
4 & 5 & 9
end{pmatrix}
More complex use, with different alignment, spacing and color:
begin{bmatrix}[*2cr@{quad}|@{quad}>{color{red}}r]
a & b & 1 & 4
c & d & -2 & -3
end{bmatrix}
Output:
Just remove the optional argument in brackets and you will get the standard pmatrix
or bmatrix
.
I've used this code and examples in a blog post in 2008: An extension to amsmath
matrix environments.
If you don't wish to redefine that internal macro, you could give it a different name and build your amatrix
environment on it exactly the same way that amsmath
does with pmatrix
.
Answered by Stefan Kottwitz on October 20, 2020
I would do something like this:
{
centering
$$
left(
begin{array}{ccc|c}
1 & 1 & 1 & 1
8 & 4 & 2 & 1
64 & 16 & 4 & 1
end{array}
right)
$$
}
Answered by qed on October 20, 2020
If for some reason (e.g. you try to make augmented matrix in Pages) other answers do not work, you can make an augmented matrix with two matrices inside delimiters of your choice:
left[
begin{matrix}
1 & 2 & 3
1 & 2 & 3
1 & 2 & 3
1 & 2 & 3
end{matrix}
left|
,
begin{matrix}
4
4
4
4
end{matrix}
right.
right]
This code produces a matrix like this:
You can modify space between delimiters by adding ,
or other spacers.
Answered by Kartearis on October 20, 2020
If you would rather not override styles, you can create an augmented matrix using standard matrix commands like so:
begin{pmatrix}
1 & 0 & 0 & 0 &bigm| & 0
0 & 1 & 0 & 0 &bigm| & 5
0 & 0 & 1 & 0 &bigm| & -4
0 & 0 & 0 & 1 &bigm| & -2
end{pmatrix}
generating the following.
Answered by TWal on October 20, 2020
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP