How to determine the shift in algorithm Golub-Kahan setp SVD for a complex matrix?

30 Views Asked by At

I am trying to implement the SVD of a complex matrix in Matlab (not allowed to use build-in functions, e.g., svd, qr).

I have implemented svd using the Golub-Reiasch method for real valued matrix, however, I am having problem to extend it to a complex matrix.

I am doing following steps in my code:

1- decompose the matrix A to get a bidiagonal matrix B.

2- perform QR iterations on B until the super-diagonal entries are small. this step includes Givens rotation.

The code works for real matrix but not for complex. I think the key point is how to determine the shift in algorithm Golub-Kahan setp SVD for a complex matrix.

I would appreciate if someone could give me some advice on the complex version of algorithm Golub-Kanhan step SVD.

Reference: Gene H.Golub "Matrix computation", Algorithm 8.6.1 and Algorithm 8.6.2