Description
In the DSPOVX subroutine the symmetric positive definite matrix A is scaled if (among other criteria) the ratio between the smallest and the largest element of the main diagonal is min(A(i,i))/max(A(i,i))<0.1
.
It is known (Wilkinson, Björck, Higham) that the Cholesky factorization can be computed without breackdown if 2*n^(3/2)*u*k(A)<0.1
, where n
are the matrix dimensions, u
is the unit roundoff, and k(A)=max(sigma)/min(sigma)
is the condition number of the matrix and sigma
are the matrix singular values.
I understand that min(A(i,i))
and max(A(i,i))
is a cheap way for computing a roughly value of singular values of the matrix, and, then, its condition number (in fact a lower bound). But what is the reason for omit the 2*n^(3/2)*u
factor in the criterion? For example, the matrix
A=[1 1
1 11];
will be scaled according to the DPOSVX criterion as 1/11=0.091<0.1
, but using 2*n^(3/2)*u*k(A)<0.1
we obtain 7.7e-15<0.1
, which clearly shows that the Cholesky decomposition is clearly safe.
On the other hand, scaling by a diagonal matrix as DPOSVX is O(n^2)
, so there is not a penalty in the subroutine as Cholesky is O(n^3)
. But I would like the reason of min(A(i,i))/max(A(i,i))<0.1
.
Thanks