Time for action – decomposing a matrix

It's time to decompose a matrix with the singular value decomposition. In order to decompose a matrix, perform the following steps:

  1. First, create a matrix as follows:
    A = np.mat("4 11 14;8 7 -2")
    print "A
    ", A

    The matrix we created looks like the following:

    A
    [[ 4 11 14]
     [ 8  7 -2]]
    
  2. Decompose the matrix with the svd function.
    U, Sigma, V = np.linalg.svd(A, full_matrices=False)
    print "U"
    print U
    print "Sigma"
    print Sigma
    print "V"
    print V

    The result is a tuple containing the two orthogonal matrices U and V on the left- and right-hand sides and the singular values of the middle matrix.

    U
    [[-0.9486833  -0.31622777]
     [-0.31622777  0.9486833 ]]
    Sigma
    [ 18.97366596   9.48683298]
    V
    [[-0.33333333 -0.66666667 -0.66666667]
     [ 0.66666667  0.33333333 -0.66666667]]
    
  3. We do not actually have the middle matrix—we only have the diagonal values. The other values are all 0. We can form the middle matrix with the diag function. Multiply the three matrices. This is shown, as follows:
    print "Product
    ", U * np.diag(Sigma) * V

    The product of the three matrices looks like the following:

    Product
    [[  4.  11.  14.]
     [  8.   7.  -2.]]
    

What just happened?

We decomposed a matrix and checked the result by matrix multiplication. We used the svd function from the NumPy linalg module (see decomposition.py).

import numpy as np

A = np.mat("4 11 14;8 7 -2")
print "A
", A

U, Sigma, V = np.linalg.svd(A, full_matrices=False)

print "U"
print U

print "Sigma"
print Sigma

print "V"
print V

print "Product
", U * np.diag(Sigma) * V
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset