dennis0125hk wrote:Thanks for TomDoan's reply.
Now my question is, why PI is needed to found? As I understand, forcedfactor.src is used to find out the decomposition factor F of sigma given that first r columns of F is A: (n x r), as the code requires. However, the code intends to find out F given the first columns of F is A PI: (n x r). Why it is the case?
No. You can't expect A to be the first r columns of the factor; A is simply supposed to span the first r columns of a factor, so you need an rxr matrix PI to transform A into part of the factor. It can be any full rank rxr matrix that has the correct properties; the upper triangular version is chosen because it makes the first column in the factor a scale of the first column in A.
dennis0125hk wrote:Secondly, why taking [inv(P)A | 0] and taking its SVD can give U such that it is proper "Q"?
That's what an SVD does. U is unitary, by construction (as is V) which means already that PU is a factor. inv(P)A has (one hopes) full column rank, while the block of 0's obviously has zero column rank. So the columns of U corresponding to the non-zero diagonal elements in W will span the same space as inv(P) A and the columns of U corresponding to the zero elements in W span the orthogonal complement of inv(P) A. That's what we need other than not having a specific form for the PI matrix.