如何在Octave中反转矩阵和整数结果?

时间:2010-01-17 00:41:05

标签: matrix octave inversion

我想在Octave中得到一个可逆矩阵但是作为整数矩阵,所以:

x = [9,15;19,2];
inv(x)

我得到:

[-0.0074906, 0.0561798; 0.0711610, -0.0337079]

但我想得到[22,17;25,21] 谁知道如何反转矩阵?

3 个答案:

答案 0 :(得分:8)

每个元素的反转是:

x .^ -1

结果

0.1111    0.0667
0.0526    0.5000

为什么要获得[22,17;25,21]?什么数学运算会产生这样的结果?

答案 1 :(得分:6)

以八度为单位反转矩阵:

反转单位矩阵会返回单位矩阵:

octave:3> a = [1,0;0,1]
a =

   1   0
   0   1

octave:4> inv(a)
ans =

   1  -0
   0   1

在对角线上反转为零的矩阵会导致无穷大

octave:5> a = [1,0;0,0]
a =

   1   0
   0   0

octave:6> inv(a)
warning: inverse: matrix singular to machine precision, rcond = 0
ans =

   Inf   Inf
   Inf   Inf

使用如下所示的完整值反转矩阵:

octave:1> a = [1,2;3,4]
a =
   1   2
   3   4

octave:2> inv(a)
ans =    
  -2.00000   1.00000
   1.50000  -0.50000

有关反函数引擎内容的描述:

https://www.khanacademy.org/math/precalculus/precalc-matrices/inverting_matrices/v/inverse-of-a-2x2-matrix

答案 2 :(得分:1)

我很晚了,不知道如何有效地回答这个问题,但是看起来您正在寻找矩阵的逆矩阵,特别是mod 26。

x = [9,15,19,2];
modulus = 26;
inverse_determinant = mod_inverse(det(x),modulus)

您必须自己实现mod_inverse函数,但是该算法应该足够容易找到。如果这仅适用于较小的模量值,则线性搜索应该足够有效。

result = mod(det(x)*inv(x)*inverse_determinant,modulus)`