On 7/16/07, Robert Kern <[EMAIL PROTECTED]> wrote:

Kevin Jacobs <[EMAIL PROTECTED]> wrote:
> Mea culpa on the msqrt example, however I still think it is wrong to get
> a complex square-root back when a real valued result is expected and
exists.

No, in floating point you accumulate error. Those 1e-22j's are part of the
actual result. Some systems like MATLAB implicitly silent such small
imaginary
components; we don't.


The problem is that the given matrix has a conditon number of about 10**17
and is almost singular. A singular value decomposition works fine, but
apparently the sqrtm call suffers from roundoff and takes the sqrt of a
negative number. Sqrtm returns real results in better conditioned cases.

In [2]: sqrtm(eye(2))
Out[2]:
array([[ 1.,  0.],
      [ 0.,  1.]])


Perhaps we aren't using the best method here.

Chuck
_______________________________________________
Numpy-discussion mailing list
Numpy-discussion@scipy.org
http://projects.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to