Time for action – decomposing a matrix

It's time to decompose a matrix with the SVD using the following steps:

  1. First, create a matrix as shown in the following:
    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)

    Because of the full_matrices=False specification, NumPy performs a reduced SVD decomposition, which is faster to compute. The result is a tuple containing the two unitary matrices U and V on the left and right, respectively, 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. Form the middle matrix with the diag() function. Multiply the three matrices as follows:
    print("Product
    ", U * np.diag(Sigma) * V)

    The product of the three matrices is equal to the matrix we created in the first step:

    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):

from __future__ import print_function
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