2014-05-14 33 views
0

我必须乘以矩阵A和B,它可以由数字0,2,3,4,5,6组成,以获得单位矩阵,但是每一步之后的乘积都会与模数发生。例如: -矩阵双模乘法得到标识

[A1 A2 A3] and  [B1 B2 B3] 
[A4 A5 A6]    [B4 B5 B6] 
[A7 A8 A9]    [B7 B8 B9] 

((A1*B1)%7+(A2*B4)%7+(A3*B7)%7)%7 = 1 

这将是元素I_11

我怎么能找到两个矩阵A和B?

+0

我认为我们开始以A '和'B'作为给定的输入。 – Divakar

+0

@Divakar你不知道你必须获得标识矩阵,而A和B是未知的 –

回答

2

代码以获得将满足所要求的条件的AB可能的组合 -

nums = [0,2,3,4,5,6]  

%// allcomb is a MATLAB File-exchange tool available at - 
%// http://www.mathworks.in/matlabcentral/fileexchange/10064-allcomb 
t1 = allcomb(nums,nums) 

t2 = mod(prod(t1,2),7)==1 
out_comb = t1(t2,:) 

输出是 -

out_comb = 

    2  4 
    3  5 
    4  2 
    5  3 
    6  6 

这意味着AB可能的组合(假设I表示3x3大小的单位矩阵) -

A is 2I, B is 4I and A is 4I, B is 2I %%// 2I would be 2.*I and so on 
A is 3I, B is 5I and A is 5I, B is 3I 
A is 4I, B is 2I and A is 2I, B is 4I 
A is 5I, B is 3I and A is 3I, B is 5I 
A is 6I, B is 6I and A is 6I, B is 6I 

由于指针由@Luis,请注意,你可以混合和匹配这些数字如下拥有的AB更多的组合选择 -

A as diag([2 4 6]) and B as [4 2 6]) 
A as diag([5 3 2]) and B as [3 5 4]) 
+0

注意你也可以在不同的条目中混合这些数字:例如A = diag([2 4 6])和B = diag([4 2 6])。 A和B不必是身份的倍数。 +1虽然为'allcomb'的想法 –

+0

@LuisMendo谢谢!添加了你的作品! :) – Divakar

2

请注意,最后进行模运算就足够了。去除中间模操作不会影响结果。所以条件是mod(A*B,7)应该等于单位矩阵。现在

,因为rem(6^2,7)等于1,一个解决方案是

A = [ 6  0  0 
     0  6  0 
     0  0  6 ]; 

B = [ 6  0  0 
     0  6  0 
     0  0  6 ]; 

检查:

>> rem(A*B,7) 
ans = 
    1  0  0 
    0  1  0 
    0  0  1 

另一种可能性:由于rem(2*4,7)1

A = [ 2  0  0 
     0  2  0 
     0  0  2 ]; 

B = [ 4  0  0 
     0  4  0 
     0  0  4 ]; 

,你可以的当然结合:

A = [ 2  0  0 
     0  4  0 
     0  0  6 ]; 

B = [ 4  0  0 
     0  2  0 
     0  0  6 ];