Ajith Kumar <aj...@iuac.res.in> wrote: > I ran the following code (Using Debian 5.0) > > from numpy import * > a = arange(1.,10.) > b = reshape(a, [3,3]) > c = linalg.inv(b) > print b > print c > print dot(b,c) > print dot(c,b) > > And the result is > > [[ 1. 2. 3.] > [ 4. 5. 6.] > [ 7. 8. 9.]] > > [[ 3.15221191e+15 -6.30442381e+15 3.15221191e+15] > [ -6.30442381e+15 1.26088476e+16 -6.30442381e+15] > [ 3.15221191e+15 -6.30442381e+15 3.15221191e+15]] > > [[-0.5 -1. -1. ] > [-1. -2. 2. ] > [-1.5 -3. 1. ]] > > [[ 5.5 8. 10.5] > [ 3. 0. -3. ] > [ -1. 0. -3. ]] > > NOT the identity matrix. Any help ?
The matrix you are trying to invert is singular (can't be inverted), ie its determinant is zero. >> a = arange(1.,10.) >>> b = reshape(a, [3,3]) >>> linalg.det(b) -9.5171266700777579e-16 >>> Which is zero but with a bit of rounding errors which I guess numpy doesn't notice. Double checking like this >>> a,b,c,d,e,f,g,h,i=range(1,10) >>> a*e*i - a*f*h - b*d*i + b*f*g + c*d*h - c*e*g 0 >>> So I guess it is a bug that numpy didn't throw numpy.linalg.linalg.LinAlgError("Singular matrix") Like it does normally -- Nick Craig-Wood <n...@craig-wood.com> -- http://www.craig-wood.com/nick -- http://mail.python.org/mailman/listinfo/python-list