2017-09-11 3 views
-1

J'ai matrice d'entrée:Pourquoi numeric.js renvoie-t-il les mauvaises valeurs?

let t = [ 
     [0,1,0], 
     [0,1,0], 
     [0,0,0] 
    ] 

Je veux calculer SVD. Je fais:

let U = N.svd(t).U; 

U est

[-0.7071067811865475, 0.7071067811865475, 0] 
[-0.7071067811865475, -0.7071067811865475, 0] 
[0, 0, 1] 

Je fais même procédure en Python, numpy:

A=np.array([[0,1,0],[0,1,0],[0,0,0]]) 
np.linalg.svd(A)[0] 

Sortie:

[0.7071067811865475, 0, -0.7071067811865475] 
[0.7071067811865475, 0, 0.7071067811865475] 
[0, 1, 0] 

Est-ce un bug? Que devrais-je faire ? Ce n'est pas la seule fois où ils diffèrent dans le résultat. Qui devrais-je faire confiance?

+0

Savez-vous ce que fait une décomposition SVD? –

+0

je veux trouver des vecteurs de base pour l'espace vide de droite dans la sortie numérique js ils ne sont pas dans l'espace vide de A –

+2

Voir [cette question] (https://math.stackexchange.com/questions/644327/how-unique-on-non -unique-sont-et-v-dans-singulier-valeur-décomposition-svd). – Phylogenesis

Répondre

2

Dans les résultats SVD, il existe une variation possible due à différents algorithmes. Il est possible d'avoir

  • variations des signes identiques de colonnes complètes de U et V et
  • permutations identiques de colonnes en U et V lorsque les valeurs singulières correspondantes sont identiques. En effet, tout type de mélange par une matrice orthogonale pourrait se produire.

Ceci s'est passé à la fois ici. Votre entrée est une matrice de rang 1, c'est-à-dire que 2 valeurs singulières sont égales à zéro, ce qui explique la permutation des 2 dernières colonnes. Les flips de signe sont également évidents.

+0

donc pour rendre les choses claires, n-r vecteurs dans V, U ne garantit pas d'être dans l'espace nul nul/gauche de A? –

+0

Dans les algorithmes habituels, les valeurs singulières sont dans l'ordre décroissant, de sorte que les dernières colonnes «n-r» s'étendent sur les espaces vides gauche et droit de la matrice. Cependant, quelle base orthonormale de ces espaces vides apparaît dans ces colonnes peut différer de l'implémentation à l'implémentation. – LutzL

+0

merci de votre réponse! –