我想在Octave中得到一个可逆矩阵但是作为整数矩阵,所以:
x = [9,15;19,2];
inv(x)
我得到:
[-0.0074906, 0.0561798; 0.0711610, -0.0337079]
但我想得到[22,17;25,21]
谁知道如何反转矩阵?
答案 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
有关反函数引擎内容的描述:
答案 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)`