<br><br><div class="gmail_quote">On Fri, Aug 12, 2011 at 4:03 AM, Charanpal Dhanjal <span dir="ltr">&lt;<a href="mailto:dhanjal@telecom-paristech.fr">dhanjal@telecom-paristech.fr</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

Thank Nadav for testing out the matrix. I wonder if you had a chance to<br>
check if the resulting decomposition contained NaN or Inf values?<br>
<br>
As far I understood, numpy.linalg.svd uses routines in LAPACK and ATLAS<br>
(if available) to compute the corresponding SVD. I did some<br>
complementary tests on Debian Squeeze on an Intel Xeon W3550 CPU and the<br>
call to numpy.linalg.svd results in the LinAlgError &quot;SVD did not<br>
converge&quot;, however the test leading to results containing NaN values ran<br>
on Debian Lenny on an Intel Core 2 Quad. In both of these situations we<br>
use Python 2.7.1 and numpy 1.5.1 (without ATLAS), and so the reasons for<br>
the differences seem to be OS or processor dependent. Any ideas?<br>
<br>
Charanpal<br>
<br>
Date: Thu, 11 Aug 2011 07:21:09 -0700<br>
 From: Nadav Horesh &lt;<a href="mailto:nadavh@visionsense.com">nadavh@visionsense.com</a>&gt;<br>
Subject: Re: [Numpy-discussion] SVD does not converge on &quot;clean&quot;<br>
     matrix<br>
To: Discussion of Numerical Python &lt;<a href="mailto:numpy-discussion@scipy.org">numpy-discussion@scipy.org</a>&gt;<br>
Message-ID:<br>
<br>
&lt;26FC23E7C398A64083C980D16001012D246DFC5F90@VA3DIAXVS361.RED001.local&gt;<br>
Content-Type: text/plain; charset=&quot;us-ascii&quot;<br>
<div class="im"><br>
<br>
&gt; Had no problem on a gentoo 64 bit machine using atlas 3.8.0 (Core I7,<br>
&gt; python 2.7.2, numpy versions1.60 and 1.6.1)<br></div></blockquote><div><br><br>Another data point: on Mac OS X, with Python 2.7.2 and numpy 1.6.0 (using EPD 7.1), I get the error:<br><br><span style="font-family: courier new,monospace;">$ ipython --pylab</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">Enthought Python Distribution -- <a href="http://www.enthought.com">www.enthought.com</a></span><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">Python 2.7.2 |EPD 7.1-1 (32-bit)| (default, Jul  3 2011, 15:40:35) </span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">Type &quot;copyright&quot;, &quot;credits&quot; or &quot;license&quot; for more information.</span><br style="font-family: courier new,monospace;">

<br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">IPython 0.11.rc1 -- An enhanced Interactive Python.</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">?         -&gt; Introduction and overview of IPython&#39;s features.</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">%quickref -&gt; Quick reference.</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">help      -&gt; Python&#39;s own help system.</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">object?   -&gt; Details about &#39;object&#39;, use &#39;object??&#39; for extra details.</span><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">Welcome to pylab, a matplotlib-based Python environment [backend: WXAgg].</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">For more information, type &#39;help(pylab)&#39;.</span><br style="font-family: courier new,monospace;">

<br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">In [1]: numpy.__version__</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">Out[1]: &#39;1.6.0&#39;</span><br style="font-family: courier new,monospace;">

<br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">In [2]: arr = load(&#39;matrix_leading_to_bad_SVD.npz&#39;)[&#39;arr_0&#39;]</span><br style="font-family: courier new,monospace;">

<br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">In [3]: np.linalg.svd(arr)</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">---------------------------------------------------------------------------</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">LinAlgError                               Traceback (most recent call last)</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">/Users/warren/tmp/&lt;ipython-input-3-e475bd6de739&gt; in &lt;module&gt;()</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">----&gt; 1 np.linalg.svd(arr)</span><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">/Library/Frameworks/Python.framework/Versions/7.1/lib/python2.7/site-packages/numpy/linalg/linalg.py in svd(a, full_matrices, compute_uv)</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">   1319                                  work, lwork, iwork, 0)</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">   1320     if results[&#39;info&#39;] &gt; 0:</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">-&gt; 1321         raise LinAlgError, &#39;SVD did not converge&#39;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">   1322     s = s.astype(_realType(result_t))</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">   1323     if compute_uv:</span><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">LinAlgError: SVD did not converge</span><br>

<br><br><br>Warren<br><br><br> <br></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div class="im">
&gt;<br>
&gt;  Nadav<br>
<br>
</div><div><div></div><div class="h5">&gt;On Thu, 11 Aug 2011 15:23:22 +0200, <a href="mailto:dhanjal@telecom-paristech.fr">dhanjal@telecom-paristech.fr</a><br>
&gt; wrote:<br>
&gt;&gt; Hi all,<br>
&gt;&gt;<br>
&gt;&gt; I get an error message &quot;numpy.linalg.linalg.LinAlgError: SVD did not<br>
&gt;&gt; converge&quot; when calling numpy.linalg.svd on a &quot;clean&quot; matrix of size<br>
&gt;&gt; (1952,<br>
&gt;&gt; 895). The matrix is clean in the sense that it contains no NaN or<br>
&gt;&gt; Inf<br>
&gt;&gt; values. The corresponding npz file is available here:<br>
&gt;&gt;<br>
&gt;&gt; <a href="https://docs.google.com/leaf?id=0Bw0NXKxxc40jMWEyNTljMWUtMzBmNS00NGZmLThhZWUtY2I2MWU2MGZiNDgx&amp;hl=fr" target="_blank">https://docs.google.com/leaf?id=0Bw0NXKxxc40jMWEyNTljMWUtMzBmNS00NGZmLThhZWUtY2I2MWU2MGZiNDgx&amp;hl=fr</a><br>


&gt;&gt;<br>
&gt;&gt; Here is some information about my setup: I use Python 2.7.1 on<br>
&gt;&gt; Ubuntu<br>
&gt;&gt; 11.04 with numpy 1.6.1. Furthermore, I thought the problem might be<br>
&gt;&gt; solved<br>
&gt;&gt; by recompiling numpy with my local ATLAS library (version 3.8.3),<br>
&gt;&gt; and this<br>
&gt;&gt; didn&#39;t seem to help. On another machine with Python 2.7.1 and numpy<br>
&gt;&gt; 1.5.1<br>
&gt;&gt; the SVD does converge however it contains 1 NaN singular value and 3<br>
&gt;&gt; negative singular values of the order -10^-1 (singular values should<br>
&gt;&gt; always be non-negative).<br>
&gt;&gt;<br>
&gt;&gt; I also tried computing the SVD of the matrix using Octave 3.2.4 and<br>
&gt;&gt; Matlab<br>
&gt;&gt; 7.10.0.499 (R2010a) 64-bit (glnxa64) and there were no problems. Any<br>
&gt;&gt; help<br>
&gt;&gt; is greatly appreciated.<br>
&gt;&gt;<br>
&gt;&gt; Thanks in advance,<br>
&gt;&gt; Charanpal<br>
<br>
_______________________________________________<br>
NumPy-Discussion mailing list<br>
<a href="mailto:NumPy-Discussion@scipy.org">NumPy-Discussion@scipy.org</a><br>
<a href="http://mail.scipy.org/mailman/listinfo/numpy-discussion" target="_blank">http://mail.scipy.org/mailman/listinfo/numpy-discussion</a><br>
</div></div></blockquote></div><br>