Quiz Let W be a vector space, and let U be a subspace of W . Define - - PowerPoint PPT Presentation

quiz
SMART_READER_LITE
LIVE PREVIEW

Quiz Let W be a vector space, and let U be a subspace of W . Define - - PowerPoint PPT Presentation

Quiz Let W be a vector space, and let U be a subspace of W . Define the orthogonal complement of U in W . Let W = R 3 . Let U = Span { [1 , 2 , 0] } . Give a basis for the orthogonal complement of U in W . Give a matrix A such that the


slide-1
SLIDE 1

Quiz

◮ Let W be a vector space, and let U be a subspace of W.

Define the orthogonal complement of U in W.

◮ Let W = R3. Let U = Span {[1, 2, 0]}. Give a basis for the orthogonal complement of U in

W.

◮ Give a matrix A such that the basis in the previous question is a basis for Null A. ◮ (Not required; no credit) Give a matrix B such that Null B = U.

slide-2
SLIDE 2

Orthogonal complement in Rn and null space of a matrix

Let A be an R × S matrix. Let W = RS and let U = Row A.

S

 A   For any vector v in the orthogonal complement of U with respect to W, inner product of each row with v equals zero, so by dot-product interpretation of matrix-vector mult, Av = 0 showing that orthogonal complement of U in RS is a subspace of Null A Conversely, if Av = 0 then inner product of each row of A with u equals zero, so inner product with v of any linear combination of rows of A is zero, so v is orthogonal to every vector in Row A, so v is in orthogonal complement of U showing Null A is a subspace of orthogonal complement of U in RS

slide-3
SLIDE 3

Computing the orthogonal complement

Suppose we have a basis u1, . . . , uk for U and a basis w1, . . . , wn for W. How can we compute a basis for the orthogonal complement of U in W? One way: use orthogonalize(vlist) with vlist = [u1, . . . , uk, w1, . . . , wn] Write list returned as [u∗

1, . . . , u∗ k, w∗ 1, . . . , w∗ n]

These span the same space as input vectors u1, . . . , uk, w1, . . . , wn, namely W, which has dimension n. Therefore exactly n of the output vectors u∗

1, . . . , u∗ k, w∗ 1, . . . , w∗ n are nonzero.

The vectors u∗

1, . . . , u∗ k have same span as u1, . . . , uk and are all nonzero since u1, . . . , uk are

linearly independent. Therefore exactly n − k of the remaining vectors w∗

1, . . . , w∗ n are nonzero.

Every one of them is orthogonal to u1, . . . , un... so they are orthogonal to every vector in U... so they lie in the orthogonal complement of U. By Direct-Sum Dimension Lemma, orthogonal complement has dimension n − k, so the remaining nonzero vectors are a basis for the orthogonal complement.

slide-4
SLIDE 4

Finding basis for null space using orthogonal complement

To find basis for null space of an m × n matrix A =   

a1

. . .

am

  , find orthogonal complement of Span {a1, . . . , am} in Rn:

◮ Let e1, . . . , en be the standard basis vectors Rn. ◮ Let [a∗ 1, . . . , a∗ m, e∗ 1, . . . , e∗ n] = orthogonalize([a1, . . . , am, e1, . . . , en]) ◮ Find the nonzero vectors among e∗ 1, . . . , e∗ n

slide-5
SLIDE 5

Augmenting project along

def project_along(b, v): sigma = 0 if v.is_almost_zero() else (b*v)/(v*v) return sigma * v Want to also output the scalar that when multiplied by v gives the projection def project_along(b, v): sigma = 0 if v.is_almost_zero() else (b*v)/(v*v) return sigma * v, sigma

slide-6
SLIDE 6

Augmenting project onto

def project_onto(b, vlist): return sum([project_along(b, v) for v in vlist], zero_vec(b.D)) Want to also output the dictionary (not Vec) that maps the index of each vector in vlist to the coefficient giving the projection of b onto that vector def aug_project_onto(b, vlist): L = [aug_project_along(b,v) for v in vlist] b_par = sum([v_proj for (v_proj, sigma) in L], zero_vec(b.D)) sigma_dict = {i:L[i][1] for i in range(len(L))} return b_par, sigma_dict

slide-7
SLIDE 7

Augmenting project orthogonal

Suppose vlist=[v∗

0, . . . , v∗ n−1].

Let b|| = projection of b onto Span {v∗

0, . . . , v∗ n−1}.

Let b⊥ = projection of b orthogonal to Span {v∗

0, . . . , v∗ n−1}.

b

=

b||

+

b⊥

= σ0v∗

0 + · · · + σn−1v∗ n−1

+

b⊥

  b   =   v∗ · · ·

v∗

n−1

b⊥

       σ0 . . . σn−1 1      The procedure project orthogonal(b, vlist) can be augmented to output the vector of coefficients. For technical reasons, we will represent the vector of coefficents as a dictionary, not a Vec.

slide-8
SLIDE 8

Augmenting project orthogonal

  b   =   v0 · · ·

vn b⊥

       α0 . . . αn 1      Must create and populate a dictionary.

◮ One entry for each vector in vlist ◮ One additional entry, 1, for b⊥

Initialize dictionary with the additional entry. def aug_project_onto(b, vlist): L = ... b_par = ... sigma_dict = {i:L[i][1] for i in range(len(L))} return b_par, sigma_dict def project_orthogonal(b, vlist): return b - project_onto(b, vlist) def aug_project_orthogonal(b, vlist): b_par, sigma_dict = aug_project_onto(b, sigma_dict[len(vlist)] = 1 return b - b_par, sigma_dict

slide-9
SLIDE 9

Augmenting orthogonalize(vlist)

We will write a procedure aug orthogonalize(vlist) with the following spec:

◮ input: a list [v1, . . . , vn] of vectors ◮ output: the pair ([v∗ 1, . . . , v∗ n], [r1, . . . , rn]) of lists of vectors such that

v∗

1, . . . , v∗ n are mutually orthogonal vectors whose span equals Span {v1, . . . , vn}, and

  v1 · · ·

vn

  =   v∗

1

· · ·

v∗

n

    r1 · · ·

rn

  def orthogonalize(vlist): vstarlist = [] for v in vlist: vstarlist.append( project_orthogonal(v, vstarlist)) return vstarlist def aug_orthogonalize(vlist): vstarlist = [] sigma_vecs = [] D = set(range(len(vlist))) for v in vlist: vstar, sigma_dict = aug_project_orthogonal(v, vstarlist) vstarlist.append(vstar) sigma_vecs.append(Vec(D, sigma_dict)) return vstarlist, sigma_vecs

slide-10
SLIDE 10

Towards QR factorization

We will now develop the QR factorization. We will show that certain matrices can be written as the product of matrices in special form. Matrix factorizations are useful mathematically and computationally:

◮ Mathematical: They provide insight into the nature of matrices—each factorization gives

us a new way to think about a matrix.

◮ Computational: They give us ways to compute solutions to fundamental computational

problems involving matrices.

slide-11
SLIDE 11

Matrices with mutually orthogonal columns

  

v∗

1 T

. . .

v∗

n T

            

v∗

1

· · ·

v∗

n

          =    v∗

12

... v∗

n2

   Cross-terms are zero because of mutual orthogonality. To make the product into the identity matrix, can normalize the columns. Normalizing a vector means scaling it to make its norm 1. Just divide it by its norm. >>> def normalize(v): return v/sqrt(v*v) >>> q = normalize(list2vec[1,1,1]) >>> q * q 1.0000000000000002

slide-12
SLIDE 12

Matrices with mutually orthogonal columns

  

v∗

1 T

. . .

v∗

n T

            

v∗

1

· · ·

v∗

n

          =    v∗

12

... v∗

n2

   Cross-terms are zero because of mutual orthogonality. To make the product into the identity matrix, can normalize the columns. Normalize columns          

v∗

1

· · ·

v∗

n

          ⇒          

q1

· · ·

qn

         

slide-13
SLIDE 13

Matrices with mutually orthogonal columns

  

qT

1

. . .

qT

n

            

q1

· · ·

qn

          =    1 ... 1    Normalize columns          

v∗

1

· · ·

v∗

n

          ⇒          

q1

· · ·

qn

         

slide-14
SLIDE 14

Matrices with mutually orthogonal columns

  

qT

1

. . .

qT

n

            

q1

· · ·

qn

          =    1 ... 1    Proposition: If columns of Q are mutually orthogonal with norm 1 then QTQ is identity matrix. Definition: Vectors that are mutually orthogonal and have norm 1 are orthonormal. Definition: If columns of Q are orthonormal then we call Q a column-orthogonal matrix. Should be called orthonormal but oh well Definition: If Q is square and column-orthogonal, we call Q an orthogonal matrix. Proposition: If Q is an orthogonal matrix then its inverse is QT.

slide-15
SLIDE 15

Projection onto columns of a column-orthogonal matrix

Suppose q1, . . . , qn are orthonormal vectors. Projection of b onto qj is b||qj = σj qj where σj =

qj,b

  • qj,qj =

qj, b

  • Vector [σ1, . . . , σn] can be written using dot-product definition of matrix-vector multiplication:

   σ1 . . . σn    =   

q1 · b

. . .

qn · b

   =   

qT

1

. . .

qT

n

        

b

      and linear combination σ1 q1 + · · · + σn qn =          

q1

· · ·

qn

             σ1 . . . σn   

slide-16
SLIDE 16

Towards QR factorization

Orthogonalization of columns of matrix A gives us a representation of A as product of

◮ matrix with mutually orthogonal columns ◮ invertible triangular matrix

         

v1 v2 v3

· · ·

vn

          =          

v∗

1

v∗

2

v∗

3

· · ·

v∗

n

                   1 α12 α13 α1n 1 α23 α2n 1 α3n ... αn−1,n 1          Suppose columns v1, . . . , vn are linearly independent. Then v∗

1, . . . , v∗ n are nonzero. ◮ Normalize v∗ 1, . . . , v∗ n (Matrix is called Q) ◮ To compensate, scale the rows of the triangular matrix. (Matrix is R)

The result is the QR factorization. Q is a column-orthogonal matrix and R is an upper-triangular matrix.

slide-17
SLIDE 17

Towards QR factorization

Orthogonalization of columns of matrix A gives us a representation of A as product of

◮ matrix with mutually orthogonal columns ◮ invertible triangular matrix

v1 v2 v3

· · ·

vn

          =          

q1 q2 q3

· · ·

qn

                     v∗

1

β12 β13 β1n v∗

2

β23 β2n v∗

3

β3n ... βn−1,n v∗

n

           Suppose columns v1, . . . , vn are linearly independent. Then v∗

1, . . . , v∗ n are nonzero. ◮ Normalize v∗ 1, . . . , v∗ n (Matrix is called Q) ◮ To compensate, scale the rows of the triangular matrix. (Matrix is R)

The result is the QR factorization. Q is a column-orthogonal matrix and R is an upper-triangular matrix.