2013-02-25 6 views
2

Je pose un problème lors de la résolution inverse d'une matrice. Tout d'abord, j'utilise la bibliothèque numpy python pour le faire, par le codage ci-dessous:Pourquoi les résultats inverses ne sont-ils pas égaux?

import numpy as np 
mtx_str = '1 0.05336904 1.03164031 0.05505765;1 0.05248641 3.0928260 0.16233134;1 2.16503202 1.03197617 2.23426146;1 0.05347855 -1.02633768 -0.05488705' 
A = np.matrix(mtx_str) 
np.rank(A) 

le retourner 2; mais si j'utilise le logiciel d'octave en entrant:

A = [1 0.05336904 1.03164031 0.05505765; 1 0.05248641 3.09282607 0.16233134; 1 2.16503202 1.03197617 2.23426146; 1 0.05347855 -1.02633768 -0.05488705] 
inv(A) 

le retourner 4.

Je me demande pourquoi le résultat inverse est différent?

Répondre

3

Il est pas bien documenté sur la référence numpy en ligne, mais des docstrings:

>>> help(np.rank) 
Help on function rank in module numpy.core.fromnumeric: 

rank(a) 
    Return the number of dimensions of an array. 

>>> help(np.linalg.matrix_rank) 
Help on function matrix_rank in module numpy.linalg.linalg: 

matrix_rank(M, tol=None) 
    Return matrix rank of array using SVD method 

Et bien sûr, le résultat est le même que dans Octave:

>>> np.linalg.matrix_rank(A) 
4 
+0

+1: Bon travail. :) –

Questions connexes