Die Berechnung der null-Raum der matrix

Ich versuche, zu lösen ist ein Gleichungssystem der form Ax = 0. Eine ist bekannt 6x6-matrix, und ich habe geschrieben, die folgenden code mithilfe der SVD um den Vektor x, die funktioniert zu einem gewissen Grad. Die Antwort ist in etwa korrekt, aber nicht gut genug, um nützlich für mich, wie kann ich das verbessern der Genauigkeit der Berechnung? Senkung der eps unter 1.e-4 bewirkt, dass die Funktion fehlschlägt.

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)
InformationsquelleAutor Ainsworth | 2010-06-07
Schreibe einen Kommentar