Question: Create [ S , U , V ] = SVDBiDiagImpShift ( B ) 1 to calculate the SVD of a bidiagonal matrix via the algorithm

Create
[ S, U , V ]= SVDBiDiagImpShift( B )
1
to calculate the SVD of a bidiagonal matrix via the algorithm described in 11.2.4. Rather than a matrix of mostly zeros, the singular values should be returned in a single vector, S.
Do not perform full matrix multiplications when updating B, U, and V, only modify the parts of those matrices which are affected by the current givens rotation youre applying.
Heres an example of matlab syntax that will be helpful for avoiding full matrix multiplications: A(2:3,4:6) in Matlab refers to the submatrix with entries (2,4),(2,5),(2,6) for the first row and (3,4),(3,5),(3,6) for the second row (starting indexing at 1, as Matlab does). To address, for example, the entire second column, you use A(:,2).(There is no particular meaning to this example, its just meant to illustrate Matlab syntax.)
Also, do not use the Francis step routine provided for the week 10 home- work, as this was designed to only update the lower triangular part of the matrix, and using that routine would unnecessarily complicate your code.
Dont forget to incorporate a shift at the beginning of each iteration. A choice of shift can be found in 10.3.6. You should also implement the stopping criteria described in section 10.3.6, and also include some large amount of maximum iterations in case that stopping criteria is not met.
Also, dont forget to reorder the columns and rows of S, U, and V at the end of your algorithm to match the ordering requirements of the SVD.
We recommend using matlabs built in SVD functions to test your code.

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Finance Questions!