2

逆行列を解くときに問題が発生します。まず、以下のコーディングにより、python 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 を返します。しかし、次のように入力して Octave ソフトウェアを使用する場合:

  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 を返します。

なぜ逆の結果が違うのだろうか?

4

1 に答える 1

3

オンラインの numpy リファレンスでは十分に文書化されていませんが、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

そしてもちろん、結果は Octave と同じです:

>>> np.linalg.matrix_rank(A)
4
于 2013-02-25T14:51:21.140 に答える