您的位置:首页 > 其它

求解线性同余方程组

2014-08-25 19:06 204 查看
求解线性同余方程组是个很古老的问题,在中国古代就给出了一种特殊的线性同余方程组的解法,那就是可用中国剩余定理求解的线性方程组,这个方程组有个特点,就是任意两个方程(x=b(mod m))的m直接互质,下面说一下它的一个解法:

方程组:x=b1(mod m1);

              x=b2(mod m2);

              x=b3(mod m3);

              ......

              x=bn(mod mn);

特点:其中mi与mj互质(i!=j);mi>0,(0<i<=n);这里的所有的参数均为非负整数

求解:令M0=m1*m2*....mn;

              Mi=M0/mi,(0 <i<=n);

Ci为方程Mi*x=1(mod mi)的一个特解,这个可以由扩展欧几里得直接解出来,(0<i<=n);

解为:x=b1*c1*M1+b2*c2*M2+.....+bn*cn*Mn(mod  M0);

这里就不给出证明了,证明可以用解空间的关系来证,只需说明解出的这个作为解的方程与上述的所有条件方程的解相互包含即可,下面介绍一般的同余方程到 解法,也就是合共同余方程的方法:

对于普通的两个同余方程:

               x=b1(mod m1);
               x=b2(mod m2);
求解:约定gcd(m1,m2)表示m1和m2的最大公约数,lcm(m1,m2)表示它们的最小公倍数,那么就有:
               m1*m2=gcd(m1,m2)*lcm(m1,m2) ;
上述的两个方程可以化为:
               x+k1*m1=b1;
               x-k2*m2=b2;
两式相减:
               k1*m1+k2*m2=b1-b2;
所以两个方程有整数解的充要条件是:
               gcd(m1,m2)|(b1-b2);(现不予以证明,"|"表示"可以整除")  
假如有解:
              k1*m1+k2*m2=b1-b2的通解k1为:
             (k0为j1*m1+j2*m2=gcd(m1,m2)的j1的一个特解)
             k1=(b1-b2)/gcd(m1,m2)*k0+t*m2/gcd(m1,m2)(t为任整数)
             (不予以推导);
将k1的通解带回到:x+k1*m1=b1得到:
         x=b1-m1*(b2-b1)/gcd(m1,m2)*k0+t*m1*m2/gcd(m1,m2)
         x=b1-m1*(b2-b1)/gcd(m1,m2)*k0+t*lcm(m1,m2)
也就是:x=b1-m1*(b2-b1)/gcd(m1,m2)*k0(mod lcm(m1,m2));
这样就把两个可以合并的方程合并成了一个,运用此方法可以将多个方程最终合并成为一个,  也就是解出来了方程组
数论问题是个古老而又值得探索的问题,这些问题的研究是基础性的,是值得一代又一代的我们去不断的探索,希望上述的一个到处都有的解法能给读者一些东西 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息