Berechnung des Nullraums einer Matrix

Ich versuche, einen Satz von Gleichungen der Form Ax = 0 zu lösen. Eine bekannte 6x6-Matrix. Ich habe den folgenden Code mit SVD geschrieben, um den Vektor x zu erhalten, der bis zu einem gewissen Grad funktioniert. Die Antwort ist ungefähr richtig, aber nicht gut genug, um mir nützlich zu sein. Wie kann ich die Genauigkeit der Berechnung verbessern? Wenn Sie eps unter 1.e-4 absenken, schlägt die Funktion fehl.

from numpy.linalg import *
from numpy import *

A = matrix([[0.624010149127497 ,0.020915658603923 ,0.838082638087629 ,62.0778180312547 ,-0.336 ,0],
[0.669649399820597 ,0.344105317421833 ,0.0543868015800246 ,49.0194290212841 ,-0.267 ,0],
[0.473153758252885 ,0.366893577716959 ,0.924972565581684 ,186.071352614705 ,-1 ,0],
[0.0759305208803158 ,0.356365401030535 ,0.126682113674883 ,175.292109352674 ,0 ,-5.201],
[0.91160934274653 ,0.32447818779582 ,0.741382053883291 ,0.11536775372698 ,0 ,-0.034],
[0.480860406786873 ,0.903499596111067 ,0.542581424762866 ,32.782593418975 ,0 ,-1]])

def null(A, eps=1e-3):
  u,s,vh = svd(A,full_matrices=1,compute_uv=1)
  null_space = compress(s <= eps, vh, axis=0)
  return null_space.T

NS = null(A)
print "Null space equals ",NS,"\n"
print dot(A,NS)

Antworten auf die Frage(4)

Ihre Antwort auf die Frage