2013-02-25 1 views
2

행렬의 역함수를 풀 때 문제가 발생합니다. 첫째, 나는 아래의 코딩에 의해, 그것을 만들 파이썬 NumPy와 라이브러리를 사용 :왜 반대 결과가 동일하지 않습니까?

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) 

는 2를 반환; 내가 입력하여 옥타브 소프트웨어를 사용하는 경우 만 :

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) 

그것은 역 결과가 다른 이유 4.

가 궁금 반환?

답변

3

그것은 아니라 온라인 NumPy와 문헌에서 설명 아니지만되는 문서화 문자열에서 다음

>>> 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 

물론 결과 옥타브와 동일하다 :

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

+1 : 잘 했어. :) –