Skip to content

About matrix scaling in DPOSVX #1061

Open
@jgpallero

Description

@jgpallero

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 sigmaare 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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions