Skip to content

SVD fails to converge (Trac #990) #1588

Closed
@thouis

Description

@thouis

Original ticket http://projects.scipy.org/numpy/ticket/990 on 2009-01-31 by trac user MikeTrumpis, assigned to @charris.

I'm running into a "!LinAlgError: SVD did not converge" in both numpy and scipy for a given matrix (npy file linked below). The matrix is very badly conditioned (but SVD is meant for that).

np version 1.3.0.dev6083
mac os 10.4, lapack_lite built with -Wl,-framework -Wl,Accelerate

I can get results for this matrix using the SVD routines of either Matlab or Octave.

This is similar to ticket #1304, but the solution there (r4914) can't help me, since my build doesn't use dlapack_lite.c. Since I can get solutions in Matlab and Octave, perhaps there is some post-LAPACK solution for numpy too?

https://cirl.berkeley.edu/twiki/pub/User/MikeTrumpis/sinc_operator.npy

Mike

In [156]: [u,s,vt] = np.linalg.svd(snc_op, 1, 1)
---------------------------------------------------------------------------
LinAlgError                               Traceback (most recent call last)

/Users/miket/sandbox/trunk/testdata/siemens/<ipython console> in <module>()

/opt/local/lib/python2.5/site-packages/numpy/linalg/linalg.pyc in svd(a, full_matrices, compute_uv)
   1024                                  work, lwork, iwork, 0)
   1025     if results['info'] > 0:
-> 1026         raise LinAlgError, 'SVD did not converge'
   1027     s = s.astype(_realType(result_t))
   1028     if compute_uv:

LinAlgError: SVD did not converge

In [157]: [u,s,vt] = sp.linalg.svd(snc_op, full_matrices=1, compute_uv=1)
---------------------------------------------------------------------------
LinAlgError                               Traceback (most recent call last)

/Users/miket/sandbox/trunk/testdata/siemens/<ipython console> in <module>()

/opt/local/lib/python2.5/site-packages/scipy/linalg/decomp.pyc in svd(a, full_matrices, compute_uv, overwrite_a)
    919     else: # 'clapack'
    920         raise NotImplementedError,'calling gesdd from %s' % (gesdd.module_name)
--> 921     if info>0: raise LinAlgError, "SVD did not converge"
    922     if info<0: raise ValueError,\
    923        'illegal value in %-th argument of internal gesdd'%(-info)

LinAlgError: SVD did not converge

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