Exercise 3.13 (Matrix inversion lemma)

This exercise shows that our efficient procedures for updating a tableau can be derived from a useful fact in numerical linear algebra.

(a)
(Matrix inversion lemma) Let C be an m × m invertible matrix and let u , v be vectors in ℝ m . Show that
( C + w v ′ ) − 1 = C − 1 − C − 1 w v ′ C − 1 1 + v ′ C − 1 w .

(Note that w v ′ is an m × m matrix). Hint: Multiply both sides by ( C + w v ′ ) .

(b)
Assuming that C − 1 is available, explain how to obtain ( C + w v ′ ) − 1 using only O ( m 2 ) arithmetic operations.
(c)
Let B and B ¯ be basis matrices before and after an iteration of the simplex method. Let A B ( l ) , A B ¯ ( l ) be the exiting and entering column, respectively. Show that
B ¯ − B = ( A B ¯ ( l ) − A B ( l ) ) e l ′ ,

where e l is the l th unit vector.

(d)
Note that e i ′ B − 1 is the i th row of B − 1 and e l ′ B − 1 is the pivot row. Show that
e i ′ B ¯ − 1 = e i ′ B − 1 − g i e l ′ B − 1 , i = 1 , … , m ,

for suitable scalars g i . Provide a formula for g i . Interpret the above equation in terms of the mechanics for pivoting in the revised simplex method.

(e)
Multiply both sides of the equation in part (d) by [ b ∣ A ] and obtain an interpretation of the mechanics for pivoting in the full tableau implementation.

Answers

(a) Following the hint, we will prove the identity by showing that the product of ( C + w v ′ ) and the expression on the right-hand side is the identity matrix. Let the right-hand side be denoted by B :

B = C − 1 − C − 1 w v ′ C − 1 1 + v ′ C − 1 w .

We want to show that ( C + w v ′ ) B = I . We expand the product:

( C + w v ′ ) B = C B + w v ′ B .

First, we compute the term C B :

C B = C ( C − 1 − C − 1 w v ′ C − 1 1 + v ′ C − 1 w ) = I − w v ′ C − 1 1 + v ′ C − 1 w .

Next, we compute the term w v ′ B . To simplify this, we first evaluate v ′ B , noting that v ′ C − 1 w is a scalar:

v ′ B = v ′ ( C − 1 − C − 1 w v ′ C − 1 1 + v ′ C − 1 w ) = v ′ C − 1 − ( v ′ C − 1 w ) v ′ C − 1 1 + v ′ C − 1 w = v ′ C − 1 ( 1 − v ′ C − 1 w 1 + v ′ C − 1 w ) = v ′ C − 1 ( 1 + v ′ C − 1 w − v ′ C − 1 w 1 + v ′ C − 1 w ) = v ′ C − 1 1 + v ′ C − 1 w .

Using this result, we can now find w v ′ B :

w v ′ B = w ( v ′ B ) = w v ′ C − 1 1 + v ′ C − 1 w .

Finally, we add the two computed parts together:

( C + w v ′ ) B = ( I − w v ′ C − 1 1 + v ′ C − 1 w ) + ( w v ′ C − 1 1 + v ′ C − 1 w ) = I .

This confirms the identity, provided that the denominator 1 + v ′ C − 1 w ≠ 0 . □

(b) We use the formula from part (a) and compute the right-hand side efficiently by avoiding matrix-matrix multiplications. The procedure is as follows:

1.
Compute the vector u = C − 1 w . This is a matrix-vector product, which requires O ( m 2 ) operations.
2.
Compute the scalar α = 1 + v ′ u . This is a vector dot product plus an addition, requiring O ( m ) operations.
3.
Compute the row vector r ′ = v ′ C − 1 . This is a vector-matrix product, which also requires O ( m 2 ) operations.
4.
The expression to be subtracted is now u r ′ α . Forming the rank-one matrix u r ′ costs O ( m 2 ) , and the subsequent scalar division costs another O ( m 2 ) .
5.
Finally, subtract this result from C − 1 . This matrix subtraction requires O ( m 2 ) operations.

The total cost is dominated by the matrix-vector multiplications and matrix additions/subtractions. The overall complexity is therefore O ( m 2 ) . □

(c) The matrix B ¯ is identical to the matrix B , except that its l th column, A B ( l ) , has been replaced by the entering column, A B ¯ ( l ) .

The difference B ¯ − B is therefore a matrix that consists of zero vectors in every column, except for the l th column. The l th column is the difference between the new and old l th columns, which is ( A B ¯ ( l ) − A B ( l ) ) .

The expression on the right-hand side is the outer product of the column vector ( A B ¯ ( l ) − A B ( l ) ) and the row vector e l ′ . This product results in a matrix whose k th column is ( A B ¯ ( l ) − A B ( l ) ) multiplied by the k th component of e l ′ . Since the k th component of e l ′ is 1 if k = l and 0 otherwise, the resulting matrix is zero everywhere except for the l th column, which is precisely ( A B ¯ ( l ) − A B ( l ) ) . The two sides are therefore equal. □

(d) From part (c), we have B ¯ = B + ( A B ¯ ( l ) − A B ( l ) ) e l ′ . Let w = A B ¯ ( l ) − A B ( l ) and v = e l . We can now apply the matrix inversion lemma from part (a) with C = B :

B ¯ − 1 = B − 1 − B − 1 w e l ′ B − 1 1 + e l ′ B − 1 w .

To find the i th row of B ¯ − 1 , we left-multiply by e i ′ :

e i ′ B ¯ − 1 = e i ′ B − 1 − ( e i ′ B − 1 w ) ( e l ′ B − 1 ) 1 + e l ′ B − 1 w .

This is the desired form, where the scalar g i is given by

g i = e i ′ B − 1 w 1 + e l ′ B − 1 w .

To find a more practical form for g i , let u = B − 1 A j be the pivot column. Note that since A B ( l ) is the l -th column of B , we have B − 1 A B ( l ) = e l . We can then simplify the terms involving w :

e i ′ B − 1 w = e i ′ B − 1 ( A j − A B ( l ) ) = e i ′ ( u − e l ) = u i − ( e i ′ e l ) , 1 + e l ′ B − 1 w = 1 + e l ′ ( u − e l ) = 1 + u l − 1 = u l .

The term e i ′ e l is 1 if i = l and 0 otherwise. The pivot element is u l ≠ 0 . Substituting these back gives the formula:

g i = u i u l  for  i ≠ l , and g l = u l − 1 u l .

Interpretation: The identity e i ′ B ¯ − 1 = e i ′ B − 1 − g i e l ′ B − 1 shows that the new i -th row of B − 1 is obtained by taking the old i -th row and subtracting a multiple ( g i ) of the old pivot row. This is precisely the elementary row operation used to update the matrix B − 1 in the revised simplex method.

(e) The full simplex tableau (excluding the zeroth row) can be represented by the matrix T = B − 1 [ b ∣ A ] . The i th row of this tableau is therefore e i ′ T = e i ′ B − 1 [ b ∣ A ] .

We right-multiply the row update formula from part (d) by the matrix [ b ∣ A ] :

e i ′ B ¯ − 1 [ b ∣ A ] = ( e i ′ B − 1 − g i e l ′ B − 1 ) [ b ∣ A ] .

Distributing the product on the right-hand side gives:

e i ′ B ¯ − 1 [ b ∣ A ] = e i ′ B − 1 [ b ∣ A ] − g i e l ′ B − 1 [ b ∣ A ] .

This can be rewritten in terms of tableau rows as:

new_row i = old_row i − g i ⋅ old_row l .

Interpretation: This equation shows that each row of the new simplex tableau is obtained by subtracting a multiple ( g i ) of the old pivot row from the corresponding old row. This is exactly the standard procedure for pivoting in the full tableau implementation:

  • For the pivot row ( i = l ), we have g l = u l − 1 u l . The update is new_row l = old_row l − u l − 1 u l old_row l = 1 u l old_row l . This is equivalent to scaling the pivot row to make the pivot element equal to 1.
  • For any other row ( i ≠ l ), we have g i = u i ∕ u l . The update is new_row i = old_row i − u i u l old_row l . This is equivalent to using the scaled pivot row to eliminate the other non-zero entries in the pivot column. □
User profile picture
2025-10-19 20:13
Comments