2012-04-26 18 views
5

Estoy intentando multiplicar un vector (3 por 1) por su transpuesta (1 por 3). Obtengo una matriz (3 por 3) pero no puedo obtener su inversa. ¿Alguna idea de por qué?cuestión matriz singular con Numpy

import numpy as np 

c=array([1, 8, 50]) 
np.transpose(c[np.newaxis]) * c 
array([[ 1, 8, 50], 
    [ 8, 64, 400], 
    [ 50, 400, 2500]]) 
np.linalg.inv(np.transpose(c[np.newaxis]) * c) 
Traceback (most recent call last): 
    File "<console>", line 1, in <module> 
    File "C:\Python26\lib\site-packages\numpy\linalg\linalg.py", line 445, in inv 
    return wrap(solve(a, identity(a.shape[0], dtype=a.dtype))) 
    File "C:\Python26\lib\site-packages\numpy\linalg\linalg.py", line 328, in solve 
    raise LinAlgError, 'Singular matrix' 
LinAlgError: Singular matrix 

Respuesta

21

Por definición, al multiplicar un vector 1D por su transposición, ha creado una matriz singular.

cada fila es una combinación lineal de la primera fila.

en cuenta que la segunda fila es sólo 8x la primera fila.

mismo modo, la tercera fila es 50x la primera fila.

Sólo hay una fila independiente en su matriz.

+0

Eso era simplemente estúpido de me..thanks por su ayuda ... – Neerav

-2

Uso SVD o QR-descomposición para calcular solución exacta en los campos de números reales o complejos:

numpy. linalg.svd numpy.linalg.qr

Cuestiones relacionadas