Subsection 10.5.1 Additional homework
ΒΆHomework 10.5.1.1.
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 \) vectorx
.Francis_Step.m
: A function that performs a Francis Implicit QR Step with a tridiagonal matrix \(T \) (stored as the diagonal and subdiagonal ofT
).Test_Francis_Step.m
: A very rudimentary script that performs a few calls to the functionFrancis_Step
. Notice that our criteria for the routine being correct is that the matrix retains the correct eigenvalues.
With this,
Investigate the convergence of the \((m,m-1) \) element of matrix
T1
.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 arrayT
. The diagonal matrix \(\Lambda \) is returned inT
. The upper triangular part of the array should not change values. You are encouraged to call the functionFrancis_Step
from the functionSpectral_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 functioneig
for this.)