Cramer's rule

From Wikipedia, the free encyclopedia - View original article

Jump to: navigation, search

In linear algebra, Cramer's rule is an explicit formula for the solution of a system of linear equations with as many equations as unknowns, valid whenever the system has a unique solution. It expresses the solution in terms of the determinants of the (square) coefficient matrix and of matrices obtained from it by replacing one column by the vector of right hand sides of the equations. It is named after Gabriel Cramer (1704–1752), who published the rule for an arbitrary number of unknowns in 1750,[1] although Colin Maclaurin also published special cases of the rule in 1748[2] (and possibly knew of it as early as 1729).[3][4][5]

General case[edit]

Consider a system of n linear equations for n unknowns, represented in matrix multiplication form as follows:

 Ax = b\,

where the n by n matrix  A has a nonzero determinant, and the vector  x = (x_1, \ldots, x_n)^\mathrm{T} is the column vector of the variables.

Then the theorem states that in this case the system has a unique solution, whose individual values for the unknowns are given by:

 x_i = \frac{\det(A_i)}{\det(A)} \qquad i = 1, \ldots, n \,

where  A_i is the matrix formed by replacing the ith column of  A by the column vector  b .

The rule holds for systems of equations with coefficients and unknowns in any field, not just in the real numbers. It has recently been shown that Cramer's rule can be implemented in O(n3) time,[6] which is comparable to more common methods of solving systems of linear equations, such as Gaussian elimination (consistently requiring 2.5 times as many arithmetic operations for all matrix sizes, while exhibiting comparable numeric stability in most cases).


The proof for Cramer's rule uses just two properties of determinants: linearity with respect to any given column (taking for that column a linear combination of column vectors produces as determinant the corresponding linear combination of their determinants), and the fact that the determinant is zero whenever two columns are equal (which is implied by the basic property that the determinant is alternating in the columns).

Fix the index j of a column. Linearity means that if we consider only column j as variable (fixing the others arbitrarily), the resulting function RnR (assuming matrix entries are in R) can be given by a matrix, with one row and n columns, that acts on column j. In fact this is precisely what Laplace expansion does, writing det(A) = C1a1,j + … + Cnan,j for certain coefficients C1,…,Cn that depend on the columns of A other than column j (the precise expression for these cofactors is not important here). The value det(A) is then the result of applying the one-line matrix L(j) = (C1 C2 … Cn) to column j of A. If L(j) is applied to any other column k of A, then the result is the determinant of the matrix obtained from A by replacing column j by a copy of column k, so the resulting determinant is 0 (the case of two equal columns).

Now consider a system of n linear equations in n unknowns x_1, x_2,\ldots,x_n, whose coefficient matrix is A, with det(A) assumed to be nonzero:


If one combines these equations by taking C1 times the first equation, plus C2 times the second, and so forth until Cn times the last, then the coefficient of xj will become C1a1,j + … + Cnan,j = det(A), while the coefficients of all other unknowns become 0; the left hand side becomes simply det(A)xj. The right hand side is C1b1 + … + Cnbn, which is L(j) applied to the column vector b of the right hand sides bi. In fact what has been done here is multiply the matrix equation Ax = b on the left by L(j). Dividing by the nonzero number det(A) one finds the following equation, necessary to satisfy the system:


But by construction the numerator is the determinant of the matrix obtained from A by replacing column j by b, so we get the expression of Cramer's rule as a necessary condition for a solution. The same procedure can be repeated for other values of j to find values for the other unknowns.

The only point that remains to prove is that these values for the unknowns, the only possible ones, do indeed together form a solution. But if the matrix A is invertible with inverse A−1, then x = A−1b will be a solution, thus showing its existence. To see that A is invertible when det(A) is nonzero, consider the n by n matrix M obtained by stacking the one-line matrices L(j) on top of each other for j = 1, 2, …, n (this gives the adjugate matrix for A). It was shown that L(j)A = (0 … 0 det(A) 0 … 0) where det(A) appears at the position j; from this it follows that MA = det(A)In. Therefore


completing the proof.

Finding inverse matrix[edit]

Let A be an n×n matrix. Then

\mathrm{Adj}(A)A = \mathrm{det}(A)I\,

where Adj(A) denotes the adjugate matrix of A, det(A) is the determinant, and I is the identity matrix. If det(A) is invertible in R, then the inverse matrix of A is

A^{-1} = \frac{1}{\operatorname{det}(A)} \operatorname{Adj}(A).

If R is a field (such as the field of real numbers), then this gives a formula for the inverse of A, provided det(A) ≠ 0. In fact, this formula will work whenever R is a commutative ring, provided that det(A) is a unit. If det(A) is not a unit, then A is not invertible.


Explicit formulas for small systems[edit]

Consider the linear system \left\{\begin{matrix}ax+by&={\color{red}e}\\ cx + dy&= {\color{red}f}\end{matrix}\right.\ which in matrix format is \begin{bmatrix} a & b \\ c & d \end{bmatrix}\begin{bmatrix} x \\ y \end{bmatrix}=\begin{bmatrix} {\color{red}e} \\ {\color{red}f} \end{bmatrix}.

Assume ad − bc nonzero. Then, x and y can be found with Cramer's rule as

x = \begin{vmatrix} {\color{red}{e}} & b \\ {\color{red}{f}} & d \end{vmatrix}/\begin{vmatrix} a & b \\ c & d \end{vmatrix}  = { {\color{red}e}d - b{\color{red}f} \over ad - bc}


y = \begin{vmatrix} a & {\color{red}{e}} \\ c & {\color{red}{f}} \end{vmatrix}/\begin{vmatrix} a & b \\ c & d \end{vmatrix}  = { a{\color{red}f} - {\color{red}e}c \over ad - bc}.

The rules for 3×3 are similar. Given \left\{\begin{matrix}ax + by + cz&= {\color{red}j}\\dx + ey + fz&= {\color{red}k}\\gx + hy + iz&= {\color{red}l}\end{matrix}\right. which in matrix format is \begin{bmatrix} a & b & c \\ d & e & f \\ g & h & i \end{bmatrix}\begin{bmatrix} x \\ y \\ z \end{bmatrix}=\begin{bmatrix} {\color{red}j} \\ {\color{red}k} \\ {\color{red}l} \end{bmatrix}.

Then the values of x, y and z can be found as follows:

x = \frac { \begin{vmatrix} {\color{red}j} & b & c \\ {\color{red}k} & e & f \\ {\color{red}l} & h & i \end{vmatrix} } { \begin{vmatrix} a & b & c \\ d & e & f \\ g & h & i \end{vmatrix} }, \quad y = \frac { \begin{vmatrix} a & {\color{red}j} & c \\ d & {\color{red}k} & f \\ g & {\color{red}l} & i \end{vmatrix} } { \begin{vmatrix} a & b & c \\ d & e & f \\ g & h & i \end{vmatrix} },\text{ and }z = \frac { \begin{vmatrix} a & b & {\color{red}j} \\ d & e & {\color{red}k} \\ g & h & {\color{red}l} \end{vmatrix} } { \begin{vmatrix} a & b & c \\ d & e & f \\ g & h & i \end{vmatrix} }.

Differential geometry[edit]

Cramer's rule is also extremely useful for solving problems in differential geometry. Consider the two equations F(x, y, u, v) = 0\, and G(x, y, u, v) = 0\,. When u and v are independent variables, we can define x = X(u, v)\, and y = Y(u, v).\,

Finding an equation for \dfrac{\partial x}{\partial u} is a trivial application of Cramer's rule.

First, calculate the first derivatives of F, G, x, and y:

 \begin{align} dF & = \frac{\partial F}{\partial x} \, dx + \frac{\partial F}{\partial y} \, dy +\frac{\partial F}{\partial u} \, du +\frac{\partial F}{\partial v} \, dv = 0 \\[6pt] dG & = \frac{\partial G}{\partial x} \, dx + \frac{\partial G}{\partial y} \, dy +\frac{\partial G}{\partial u} \, du +\frac{\partial G}{\partial v} \, dv = 0 \\[6pt] dx & = \frac{\partial X}{\partial u} \, du + \frac{\partial X}{\partial v} \, dv \\[6pt] dy & = \frac{\partial Y}{\partial u} \, du + \frac{\partial Y}{\partial v} \, dv. \end{align}

Substituting dx, dy into dF and dG, we have:

 \begin{align} dF & = \left(\frac{\partial F}{\partial x} \frac{\partial x}{\partial u} +\frac{\partial F}{\partial y} \frac{\partial y}{\partial u} +\frac{\partial F}{\partial u} \right) \, du + \left(\frac{\partial F}{\partial x} \frac{\partial x}{\partial v} +\frac{\partial F}{\partial y} \frac{\partial y}{\partial v} +\frac{\partial F}{\partial v} \right) \, dv = 0 \\[6pt] dG & = \left(\frac{\partial G}{\partial x} \frac{\partial x}{\partial u} +\frac{\partial G}{\partial y} \frac{\partial y}{\partial u} +\frac{\partial G}{\partial u} \right) \, du + \left(\frac{\partial G}{\partial x} \frac{\partial x}{\partial v} +\frac{\partial G}{\partial y} \frac{\partial y}{\partial v} +\frac{\partial G}{\partial v} \right) \, dv = 0. \end{align}

Since u, v are both independent, the coefficients of du, dv must be zero. So we can write out equations for the coefficients:

 \begin{align} \frac{\partial F}{\partial x} \frac{\partial x}{\partial u} +\frac{\partial F}{\partial y} \frac{\partial y}{\partial u} & = -\frac{\partial F}{\partial u} \\[6pt] \frac{\partial G}{\partial x} \frac{\partial x}{\partial u} +\frac{\partial G}{\partial y} \frac{\partial y}{\partial u} & = -\frac{\partial G}{\partial u} \\[6pt] \frac{\partial F}{\partial x} \frac{\partial x}{\partial v} +\frac{\partial F}{\partial y} \frac{\partial y}{\partial v} & = -\frac{\partial F}{\partial v} \\[6pt] \frac{\partial G}{\partial x} \frac{\partial x}{\partial v} +\frac{\partial G}{\partial y} \frac{\partial y}{\partial v} & = -\frac{\partial G}{\partial v}. \end{align}

Now, by Cramer's rule, we see that:

 \frac{\partial x}{\partial u} = \frac{\begin{vmatrix} -\frac{\partial F}{\partial u} & \frac{\partial F}{\partial y} \\ -\frac{\partial G}{\partial u} & \frac{\partial G}{\partial y}\end{vmatrix}}{\begin{vmatrix}\frac{\partial F}{\partial x} & \frac{\partial F}{\partial y} \\ \frac{\partial G}{\partial x} & \frac{\partial G}{\partial y}\end{vmatrix}}.

This is now a formula in terms of two Jacobians:

\frac{\partial x}{\partial u} = - \frac{\left(\frac{\partial\left(F, G\right)}{\partial\left(u, y\right)}\right)}{\left(\frac{\partial\left(F, G\right)}{\partial\left(x, y\right)}\right)}.

Similar formulae can be derived for \frac{\partial x}{\partial v}, \frac{\partial y}{\partial u}, \frac{\partial y}{\partial v}.

Integer programming[edit]

Cramer's rule can be used to prove that an integer programming problem whose constraint matrix is totally unimodular and whose right-hand side is integer, has integer basic solutions. This makes the integer program substantially easier to solve.

Ordinary differential equations[edit]

Cramer's rule is used to derive the general solution to an inhomogeneous linear differential equation by the method of variation of parameters.

Geometric interpretation[edit]

Geometric interpretation of Cramer's rule. The areas of the second and third shaded parallelograms are the same and the second is x_1 times the first. From this equality Cramer's rule follows.

Cramer's rule has a geometric interpretation that can be considered also a proof or simply giving insight about its geometric nature. These geometric arguments work in general and not only in the case of two equations with two unknowns presented here.

Given the system of equations


it can be considered as an equation between vectors


The area of the parallelogram determined by \binom{a_{11}}{a_{21}} and \binom{a_{12}}{a_{22}} is given by the determinant of the system of equations:


In general, when there are more variables and equations, the determinant of n vectors of length n will give the volume of the parallelepiped determined by those vectors in the n-th dimensional Euclidean space.

Therefore the area of the parallelogram determined by x_1\binom{a_{11}}{a_{21}} and \binom{a_{12}}{a_{22}} has to be x_1 times the area of the first one since one of the sides has been multiplied by this factor. Now, this last parallelogram, by Cavalieri's principle, has the same area as the parallelogram determined by \binom{b_1}{b_2}=x_1\binom{a_{11}}{a_{21}}+x_2\binom{a_{12}}{a_{22}} and \binom{a_{12}}{a_{22}}.

Equating the areas of this last and the second parallelogram gives the equation


from which Cramer's rule follows.

A short proof[edit]

A short proof of Cramer's rule can be given by noticing that x_1 is the determinant of the matrix

X_1=\begin{bmatrix} x_1 & 0 & 0 & \dots & 0\\ x_2 & 1 & 0 & \dots & 0\\ x_3 & 0 & 1 & \dots & 0\\ \vdots & \vdots & \vdots & \ddots &\vdots \\ x_n & 0 & 0 & \dots & 1 \end{bmatrix}

On the other hand, assuming that our original matrix A is invertible, this matrix X_1 has columns A^{-1}  b , A^{-1}  v_2 , \ldots, A^{-1}  v_n , where v_k is the k th column of the matrix A. Recall that the matrix A_1 has columns   b ,  v_2, \ldots,   v_n . Hence we have  x_1= \det (X_1) = \det (A^{-1}) \det (A_1)= \frac{\det (A_1)}{\det (A)}, as wanted. The proof for other x_j is similar.

Proof using Clifford algebra[edit]

Consider the system of three scalar equations in three unknown scalars x_{1}, x_{2}, x_{3}

\begin{array}{rcl}   a_{11} x_{1} +a_{12} x_{2} +a_{13} x_{3} & = & c_{1}\\   a_{21} x_{1} +a_{22} x_{2} +a_{23} x_{3} & = & c_{2}\\   a_{31} x_{1} +a_{32} x_{2} +a_{33} x_{3} & = & c_{3}\end{array}

and assign an orthonormal vector basis \mathbf{e}_{1},\mathbf{e}_{2}, \mathbf{e}_{3} for \mathcal{G}_{3} as

\begin{array}{rcl}   a_{11} \mathbf{e}_{1} x_{1} +a_{12} \mathbf{e}_{1} x_{2} +a_{13}   \mathbf{e}_{1} x_{3} & = & c_{1} \mathbf{e}_{1}\\   a_{21} \mathbf{e}_{2} x_{1} +a_{22} \mathbf{e}_{2} x_{2} +a_{23}   \mathbf{e}_{2} x_{3} & = & c_{2} \mathbf{e}_{2}\\   a_{31} \mathbf{e}_{3} x_{1} +a_{32} \mathbf{e}_{3} x_{2} +a_{33}   \mathbf{e}_{3} x_{3} & = & c_{3} \mathbf{e}_{3} .\end{array}

Let the vectors

\begin{array}{rcl}   \mathbf{a}_{1} & = & a_{11} \mathbf{e}_{1} +a_{21} \mathbf{e}_{2} +a_{31}   \mathbf{e}_{3}\\   \mathbf{a}_{2} & = & a_{12} \mathbf{e}_{1} +a_{22} \mathbf{e}_{2} +a_{32}   \mathbf{e}_{3}\\   \mathbf{a}_{3} & = & a_{13} \mathbf{e}_{1} +a_{23} \mathbf{e}_{2} +a_{33}   \mathbf{e}_{3} .\end{array}

Adding the system of equations, it is seen that

\begin{array}{rcl}   \mathbf{c} & = & c_{1} \mathbf{e}_{1} +c_{2} \mathbf{e}_{2} +c_{3}   \mathbf{e}_{3}\\   & = & x_{1} \mathbf{a}_{1} +x_{2} \mathbf{a}_{2} +x_{3} \mathbf{a}_{3} .\end{array}

Using outer products, each unknown scalar x_{k} can be solved as

\begin{array}{rcl}   \mathbf{c} \wedge \mathbf{a}_{2} \wedge \mathbf{a}_{3} & = & x_{1}   \mathbf{a}_{1} \wedge \mathbf{a}_{2} \wedge \mathbf{a}_{3}\\   \mathbf{c} \wedge \mathbf{a}_{1} \wedge \mathbf{a}_{3} & = & x_{2}   \mathbf{a}_{2} \wedge \mathbf{a}_{1} \wedge \mathbf{a}_{3}\\   \mathbf{c} \wedge \mathbf{a}_{1} \wedge \mathbf{a}_{2} & = & x_{3}   \mathbf{a}_{3} \wedge \mathbf{a}_{1} \wedge \mathbf{a}_{2}\\   x_{1} & = & \frac{\mathbf{c} \wedge \mathbf{a}_{2} \wedge   \mathbf{a}_{3}}{\mathbf{a}_{1} \wedge \mathbf{a}_{2} \wedge   \mathbf{a}_{3}}\\   x_{2} & = & \frac{\mathbf{c} \wedge \mathbf{a}_{1} \wedge   \mathbf{a}_{3}}{\mathbf{a}_{2} \wedge \mathbf{a}_{1} \wedge \mathbf{a}_{3}}   = \frac{\mathbf{a}_{1} \wedge \mathbf{c} \wedge   \mathbf{a}_{3}}{\mathbf{a}_{1} \wedge \mathbf{a}_{2} \wedge   \mathbf{a}_{3}}\\   x_{3} & = & \frac{\mathbf{c} \wedge \mathbf{a}_{1} \wedge   \mathbf{a}_{2}}{\mathbf{a}_{3} \wedge \mathbf{a}_{1} \wedge \mathbf{a}_{2}}   = \frac{\mathbf{a}_{1} \wedge \mathbf{a}_{2} \wedge   \mathbf{c}}{\mathbf{a}_{1} \wedge \mathbf{a}_{2} \wedge \mathbf{a}_{3}} .\end{array}

For n equations in n unknowns, the solution for the kth unknown x_{k} generalizes to

\begin{array}{rcl}   x_{k} & = & \frac{\mathbf{a}_{1} \wedge \ldots \wedge ( \mathbf{c} )_{k}   \wedge \ldots \wedge \mathbf{a}_{n}}{\mathbf{a}_{1} \wedge \ldots \wedge   \mathbf{a}_{k} \wedge \ldots \wedge \mathbf{a}_{n}} .\end{array}

If the \mathbf{a}_{k} are linearly independent, then the x_{k} can be expressed in determinant form identical to Cramer’s Rule as

\begin{array}{rcl}   x_{k} & = & \frac{( \mathbf{a}_{1} \wedge \ldots \wedge ( \mathbf{c} )_{k}   \wedge \ldots \wedge \mathbf{a}_{n} ) \cdot ( \mathbf{a}_{n} \wedge \ldots   \wedge \mathbf{a}_{k} \wedge \ldots \wedge \mathbf{a}_{1} )}{(   \mathbf{a}_{1} \wedge \ldots \wedge \mathbf{a}_{k} \wedge \ldots \wedge   \mathbf{a}_{n} ) \cdot ( \mathbf{a}_{n} \wedge \ldots \wedge \mathbf{a}_{k}   \wedge \ldots \wedge \mathbf{a}_{1} )}\\   & = & \frac{\left|\begin{array}{ccccc}     \mathbf{a}_{1} \cdot \mathbf{a}_{1} & \cdots & \mathbf{a}_{1} \cdot (     \mathbf{c} )_{k} & \cdots & \mathbf{a}_{1} \cdot \mathbf{a}_{n}\\     \vdots & \ddots & \vdots & \ddots & \vdots\\     \mathbf{a}_{k} \cdot \mathbf{a}_{1} & \cdots & \mathbf{a}_{k} \cdot (     \mathbf{c} )_{k} & \cdots & \mathbf{a}_{k} \cdot \mathbf{a}_{n}\\     \vdots & \ddots & \vdots & \ddots & \vdots\\     \mathbf{a}_{n} \cdot \mathbf{a}_{1} & \cdots & \mathbf{a}_{n} \cdot (     \mathbf{c} )_{k} & \cdots & \mathbf{a}_{n} \cdot \mathbf{a}_{n}   \end{array}\right|}{\left|\begin{array}{ccccc}     \mathbf{a}_{1} \cdot \mathbf{a}_{1} & \cdots & \mathbf{a}_{1} \cdot     \mathbf{a}_{k} & \cdots & \mathbf{a}_{1} \cdot \mathbf{a}_{n}\\     \vdots & \ddots & \vdots & \ddots & \vdots\\     \mathbf{a}_{k} \cdot \mathbf{a}_{1} & \cdots & \mathbf{a}_{k} \cdot     \mathbf{a}_{k} & \cdots & \mathbf{a}_{k} \cdot \mathbf{a}_{n}\\     \vdots & \ddots & \vdots & \ddots & \vdots\\     \mathbf{a}_{n} \cdot \mathbf{a}_{1} & \cdots & \mathbf{a}_{n} \cdot     \mathbf{a}_{k} & \cdots & \mathbf{a}_{n} \cdot \mathbf{a}_{n}   \end{array}\right|} = \frac{\left|\begin{array}{c}     \mathbf{a}_{1}\\     \vdots\\     \mathbf{a}_{k}\\     \vdots\\     \mathbf{a}_{n}   \end{array}\right| \left|\begin{array}{ccccc}     \mathbf{a}_{1} & \cdots & ( \mathbf{c} )_{k} & \cdots & \mathbf{a}_{n}   \end{array}\right|}{\left|\begin{array}{c}     \mathbf{a}_{1}\\     \vdots\\     \mathbf{a}_{k}\\     \vdots\\     \mathbf{a}_{n}   \end{array}\right| \left|\begin{array}{ccccc}     \mathbf{a}_{1} & \cdots & \mathbf{a}_{k} & \cdots & \mathbf{a}_{n}   \end{array}\right|}\\   & = & \frac{\left|\begin{array}{ccccc}     \mathbf{a}_{1} & \cdots & ( \mathbf{c} )_{k} & \cdots & \mathbf{a}_{n}   \end{array}\right|}{\left|\begin{array}{ccccc}     \mathbf{a}_{1} & \cdots & \mathbf{a}_{k} & \cdots & \mathbf{a}_{n}   \end{array}\right|} = \frac{\left|\begin{array}{ccccc}     a_{11} & \ldots & c_{1} & \cdots & a_{1n}\\     \vdots & \ddots & \vdots & \ddots & \vdots\\     a_{k1} & \cdots & c_{k} & \cdots & a_{k n}\\     \vdots & \ddots & \vdots & \ddots & \vdots\\     a_{n1} & \cdots & c_{n} & \cdots & a_{n n}   \end{array}\right|}{\left|\begin{array}{ccccc}     a_{11} & \ldots & a_{1k} & \cdots & a_{1n}\\     \vdots & \ddots & \vdots & \ddots & \vdots\\     a_{k1} & \cdots & a_{k k} & \cdots & a_{k n}\\     \vdots & \ddots & \vdots & \ddots & \vdots\\     a_{n1} & \cdots & a_{n k} & \cdots & a_{n n}   \end{array}\right|}\end{array}

where ( \mathbf{c} )_{k} denotes the substitution of vector \mathbf{a}_{k} with vector \mathbf{c} in the kth numerator position.

Incompatible and indeterminate cases[edit]

A system of equations is said to be incompatible when there are no solutions and it is called indeterminate when there is more than one solution. For linear equations, an indeterminate system will have infinitely many solutions (if it is over an infinite field), since the solutions can be expressed in terms of one or more parameters that can take arbitrary values.

Cramer's rule applies to the case where the coefficient determinant is nonzero. In the contrary case the system is either incompatible or indeterminate, based on the values of the determinants only for 2x2 systems.

For 3x3 or higher systems, the only thing one can say when the coefficient determinant equals zero is: if any of the "numerator" determinants are nonzero, then the system must be incompatible. However, the converse is false: having all determinants zero does not imply that the system is indeterminate. A simple example where all determinants vanish but the system is still incompatible is the 3x3 system x+y+z=1, x+y+z=2, x+y+z=3.

See also[edit]


  1. ^ Cramer, Gabriel (1750). "Introduction à l'Analyse des lignes Courbes algébriques" (in French). Geneva: Europeana. pp. 656–659. Retrieved 2012-05-18. 
  2. ^ MacLaurin, Colin (1748). A Treatise of Algebra, in Three Parts.. 
  3. ^ Boyer, Carl B. (1968). A History of Mathematics (2nd ed.). Wiley. p. 431. 
  4. ^ Katz, Victor (2004). A History of Mathematics (Brief ed.). Pearson Education. pp. 378–379. 
  5. ^ Hedman, Bruce A. (1999). "An Earlier Date for "Cramer's Rule"". Historia Mathematica. 4(26) (4): 365–368. doi:10.1006/hmat.1999.2247 
  6. ^ Ken Habgood, Itamar Arel (2012). "A condensation-based application of Cramerʼs rule for solving large-scale linear systems". Journal of Discrete Algorithms 10: 98–109. doi:10.1016/j.jda.2011.06.007. 

External links[edit]