在(0,1)二元域上寻找8次不可约多项式

由于8次多项式有9个系数,其中8次的系数一定为一,所以它的全体为2⁸个,即256个,0~255。8次可约的多项式全体B为B1,B2,B3,B4的并集。其中B1为1次多项式与7次多项式的乘积,B2为2次多项式与6次多项式的乘积,B3为3次多项式与5次多项式的乘积,B4为4次多项式与4次多项式的乘积。全集S-B=A,此时A为8次不可约多项式的全体。(S,A,B)均为集合。

为求出8次不可约多项式全体S,需要求得8次多项式全集与8次可约多项式全集,并将它们做差,求得8次不可约多项式全体。建立数学模型的基本步骤如下:

第一步:构造8次多项式全集

算法一:8次多项式中的系数为1,其他项系数任意,则系数矩阵为100000000~111111111,观察系数矩阵的变化规律:第一列全为1;第二列平均分为两份,上面全为0,下面全为1;第三列平均分为四份,前0~1/4,2/4~3/3全为0,1/4~2/4,3/4~最后全为1……以此类推:第1行全为1,以后每一行行数减1模(n表示第n列)得到的数字若大于列数/,此处系数置为1,反之为0。

在(0,1)二元域上寻找8次不可约多项式_第1张图片

eg:4次多项式的系数如下所示(二元域)


1 0 0 0 0
1 0 0 0 1
1 0 0 1 0
1 0 0 1 1
1 0 1 0 0
1 0 1 0 1
1 0 1 1 0
1 0 1 1 1
1 1 0 0 0
1 1 0 0 1
1 1 0 1 0
1 1 0 1 1
1 1 1 0 0
1 1 1 0 1
1 1 1 1 0
1 1 1 1 1

算法二:因为系数开始为100000000B,并且每次加1,直到111111111B。想要得到S,可以将系数拆分为9个数字。最终成为系数矩阵。

第二步:构造8次可约多项式的全

1,2,3,4,5,6,7次多项式的构造与8次多项式的构造一致。B4集由2个4次多项式矩阵相乘求得,1个4次多项式矩阵为16行5列,两个矩阵相乘将得到256种结果。假设其中系数为10010与系数为11101的多项式相乘。它们下标之和为2~10,相乘得到8次多项式,所以相乘后系数矩阵应为9位,下标为1~9。可以表示为k-1。如果下标之和为k,那么它们的系数之和是k-2次多项式的系数。最终得到B4,将B4模2即可得到0,二元域上的多项式。B1,B2,B3集合与B4求法一致。

第三步:做差

调用union(matlab)函数求得B1,B2,B3,B4的并集B,调用setdiff函数求全集S与B的差集A,A就是8次不可约多项式的系数。

%8次不可约多项式的寻找
B1=zeros(256,9);
B11=zeros(2,2);
B17=zeros(128,8);
B2=zeros(256,9);
B22=zeros(4,3);
B26=zeros(64,7);
B3=zeros(256,9);
B33=zeros(8,4);
B35=zeros(32,6);
B4=zeros(256,9);
B414=zeros(16,5);
B424=zeros(16,5);

S=zeros(256,9);

%8次不可约多项式的全体S系数矩阵的构造
s1=size(S,1);
s2=size(S,2);

for i=1:s1
    for j=1:s2
        if(j==1)
            S(i,j)=1;
        end
        if(j>=2)
           n=j-2;
           p=2^n;
           h=mod((i-1),s1/p);
           if(h>=(s1/(p*2)))
               S(i,n+2)=1;
           else
               S(i,n+2)=0;
           end
        end
    end
end

%1次多项式B11  系数矩阵的构造
s1=size(B11,1);
s2=size(B11,2);

for i=1:s1
    for j=1:s2
        if(j==1)
            B11(i,j)=1;
        end
        if(j>=2)
           n=j-2;
           p=2^n;
           h=mod((i-1),s1/p);
           if(h>=(s1/(p*2)))
               B11(i,n+2)=1;
           else
               B11(i,n+2)=0;
           end
        end
    end
end

%7次多项式B17  系数矩阵的构造
s1=size(B17,1);
s2=size(B17,2);

for i=1:s1
    for j=1:s2
        if(j==1)
            B17(i,j)=1;
        end
        if(j>=2)
           n=j-2;
           p=2^n;
           h=mod((i-1),s1/p);
           if(h>=(s1/(p*2)))
               B17(i,n+2)=1;
           else
               B17(i,n+2)=0;
           end
        end
    end
end

%2次多项式B22  系数矩阵的构造
s1=size(B22,1);
s2=size(B22,2);

for i=1:s1
    for j=1:s2
        if(j==1)
            B22(i,j)=1;
        end
        if(j>=2)
           n=j-2;
           p=2^n;
           h=mod((i-1),s1/p);
           if(h>=(s1/(p*2)))
               B22(i,n+2)=1;
           else
               B22(i,n+2)=0;
           end
        end
    end
end


%6次多项式B26  系数矩阵的构造
s1=size(B26,1);
s2=size(B26,2);

for i=1:s1
    for j=1:s2
        if(j==1)
            B26(i,j)=1;
        end
        if(j>=2)
           n=j-2;
           p=2^n;
           h=mod((i-1),s1/p);
           if(h>=(s1/(p*2)))
               B26(i,n+2)=1;
           else
               B26(i,n+2)=0;
           end
        end
    end
end


%3次多项式B33  系数矩阵的构造
s1=size(B33,1);
s2=size(B33,2);

for i=1:s1
    for j=1:s2
        if(j==1)
            B33(i,j)=1;
        end
        if(j>=2)
           n=j-2;
           p=2^n;
           h=mod((i-1),s1/p);
           if(h>=(s1/(p*2)))
               B33(i,n+2)=1;
           else
               B33(i,n+2)=0;
           end
        end
    end
end

%5次多项式B35  系数矩阵的构造
s1=size(B35,1);
s2=size(B35,2);

for i=1:s1
    for j=1:s2
        if(j==1)
            B35(i,j)=1;
        end
        if(j>=2)
           n=j-2;
           p=2^n;
           h=mod((i-1),s1/p);
           if(h>=(s1/(p*2)))
               B35(i,n+2)=1;
           else
               B35(i,n+2)=0;
           end
        end
    end
end



%4次多项式B414  系数矩阵的构造
s1=size(B414,1);
s2=size(B414,2);

for i=1:s1
    for j=1:s2
        if(j==1)
            B414(i,j)=1;
        end
        if(j>=2)
           n=j-2;
           p=2^n;
           h=mod((i-1),s1/p);
           if(h>=(s1/(p*2)))
               B414(i,n+2)=1;
           else
               B414(i,n+2)=0;
           end
        end
    end
end


%4次多项式B424  系数矩阵的构造
s1=size(B424,1);
s2=size(B424,2);

for i=1:s1
    for j=1:s2
        if(j==1)
            B424(i,j)=1;
        end
        if(j>=2)
           n=j-2;
           p=2^n;
           h=mod((i-1),s1/p);
           if(h>=(s1/(p*2)))
               B424(i,n+2)=1;
           else
               B424(i,n+2)=0;
           end
        end
    end
end


%B4矩阵的构造  两个4次多项式相乘
m=size(B414,1);
n=size(B424,1);
p=size(B414,2);
q=size(B424,2);

sum=0;
for i1=1:m
    for i2=1:n
        h=zeros(1,9);
        w=0;
        sum=sum+1;
        for j1=1:p
            for j2=1:q
                k=j1+j2;
                w=B414(i1,j1)*B424(i2,j2);
                h(1,k-1)=h(1,k-1)+w;
            end
        end
        h(1,:)=mod(h(1,:),2);
        B4(sum,:)=h;
    end
end


%B3矩阵的构造  3次多项式与5次多项式相乘
m=size(B33,1);
n=size(B35,1);
p=size(B33,2);
q=size(B35,2);

sum=0;
for i1=1:m
    for i2=1:n
        h=zeros(1,9);
        w=0;
        sum=sum+1;
        for j1=1:p
            for j2=1:q
                k=j1+j2;
                w=B33(i1,j1)*B35(i2,j2);
                h(1,k-1)=h(1,k-1)+w;
            end
        end
        h(1,:)=mod(h(1,:),2);
        B3(sum,:)=h;
    end
end



%B2矩阵的构造  2次多项式与6次多项式相乘
m=size(B22,1);
n=size(B26,1);
p=size(B22,2);
q=size(B26,2);

sum=0;
for i1=1:m
    for i2=1:n
        h=zeros(1,9);
        w=0;
        sum=sum+1;
        for j1=1:p
            for j2=1:q
                k=j1+j2;
                w=B22(i1,j1)*B26(i2,j2);
                h(1,k-1)=h(1,k-1)+w;
            end
        end
        h(1,:)=mod(h(1,:),2);
        B2(sum,:)=h;
    end
end



%B1矩阵的构造  1次多项式与7次多项式相乘
m=size(B11,1);
n=size(B17,1);
p=size(B11,2);
q=size(B17,2);

sum=0;
for i1=1:m
    for i2=1:n
        h=zeros(1,9);
        w=0;
        sum=sum+1;
        for j1=1:p
            for j2=1:q
                k=j1+j2;
                w=B11(i1,j1)*B17(i2,j2);
                h(1,k-1)=h(1,k-1)+w;
            end
        end
        h(1,:)=mod(h(1,:),2);
        B1(sum,:)=h;
    end
end


%求8次可约多项式的并集
[B12,IA1,IB1] = union(B1,B2,'rows');
[B34,IA2,IB2] = union(B3,B4,'rows');
[B,IA3,IB3] = union(B12,B34,'rows');
%8次多项式全体与8次可约多项式求差集得到8次不可约多项式
[A,ia]=setdiff(S,B,'rows');
A = unique (A,'rows');

你可能感兴趣的:(线性代数,matlab)