Skip to main content

Subsection 10.5.1 Additional homework


You may want to do a new "git pull" to update directory Assignments .

In Assignments/Week10/matlab you will find the files

  • Givens_rotation.m: A function that computes a Givens' rotation from a \(2 \times 1 \) vector x.

  • Francis_Step.m: A function that performs a Francis Implicit QR Step with a tridiagonal matrix \(T \) (stored as the diagonal and subdiagonal of T).

  • Test_Francis_Step.m: A very rudimentary script that performs a few calls to the function Francis_Step. Notice that our criteria for the routine being correct is that the matrix retains the correct eigenvalues.

With this,

  1. Investigate the convergence of the \((m,m-1) \) element of matrix T1.

  2. Write a function

    function T = Spectral_Decomposition_Lambda( T )

    That returns \(\Lambda \) such that \(T = Q \Lambda Q^T \) is the Spectral Decomposition of \(T \text{.}\) The input matrix \(T\) is a tridiagonal matrix where only the lower triangular part of the matrix is stored in the diagonal and first subdiagonal of array T. The diagonal matrix \(\Lambda \) is returned in T . The upper triangular part of the array should not change values. You are encouraged to call the function Francis_Step from the function Spectral_Decomposition_Lambda. Obviously, you need to incorporate deflation in your implementation. How to handle the final \(2 \times 2 \) matrix is an interesting question... (You may use the matlab function eig for this.)