Python (NumPy, SciPy), che trova lo spazio nullo di una matrice

Sto cercando di trovare lo spazio nullo (spazio soluzione di Ax = 0) di una data matrice. Ho trovato due esempi, ma non riesco a trovare nessuno dei due a lavorare. Inoltre, non riesco a capire cosa stanno facendo per arrivarci, quindi non posso eseguire il debug. Spero che qualcuno possa guidarmi attraverso questo.

Le pagine di documentazione ( numpy.linalg.svd e numpy.compress ) sono opache per me. Ho imparato a farlo creando la matrice C = [A|0] , trovando la forma di scaglione a righe ridotte e risolvendo le variabili per riga. Non riesco a seguire come viene fatto in questi esempi.

Grazie per qualsiasi aiuto!

Ecco la mia matrice di esempio, che è la stessa dell’esempio di wikipedia :

 A = matrix([ [2,3,5], [-4,2,3] ]) 

Metodo ( trovato qui e qui ):

 import scipy from scipy import linalg, matrix def null(A, eps=1e-15): u, s, vh = scipy.linalg.svd(A) null_mask = (s <= eps) null_space = scipy.compress(null_mask, vh, axis=0) return scipy.transpose(null_space) 

Quando ci provo, torno a una matrice vuota:

 Python 2.6.6 (r266:84292, Sep 15 2010, 16:22:56) [GCC 4.4.5] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import scipy >>> from scipy import linalg, matrix >>> def null(A, eps=1e-15): ... u, s, vh = scipy.linalg.svd(A) ... null_mask = (s >> A = matrix([ ... [2,3,5], ... [-4,2,3] ... ]) >>> >>> null(A) array([], shape=(3, 0), dtype=float64) >>>