zoukankan      html  css  js  c++  java
  • 拉格朗日插值法和孙子定理

    前言

    约在2000多年以前,我国古代数学著作《孙子算经》中提出了著名的“物不知其数”问题:“今有物不知其数,三三数之余二,五五数之余三,七七数之余二,问物几何?”答曰:“二十三”。

    我国历史上还有很多人研究过这类问题,人们将这一类问题进一步发展和推广,并称之为“孙子定理”,在国外文献和教科书中称为“中国剩余定理”。

    设物数为x,那么“物不知其数”问题相当于解如下形式的方程组:

    $$
    left{
    egin{array}{c}
    x equiv 2 (mod 3) \
    x equiv 3 (mod 5) \
    x equiv 2 (mod 7) \
    end{array}
    ight. 
    $$

    这种方程组我们称为同余方程组。

    容易验证,当k使得上面每个同余式都成立时,所有模3x5x7=105同余于k的整数,也使得每个同余式成立,反过来,如果还有l使得同余方程组成立,那么,

    $$lequiv k(mod 3),lequiv k(mod 5),lequiv k(mod 7)$$.

    于是$3 | l-k,5 | l-k,7 | l-k$,这表明l-k含有素因数3,5,7,从而$3 imes 5 imes 7 | l-k$,即$lequiv k(mod 105)$.

    通常,我们把$xequiv k(mod 105)$叫做同余方程组额解,在这个意义下,同余方程只有一个解。

    为了解同余方程组,我们首先建立拉格朗日插值公式。

     

    拉格朗日插值法

    例.你能否求一个多项式$f(x)$,使其满足$f(1)=1,f(-1)=3,f(2)=3$?

    由二次函数的知识,先假设$f(x)=ax^2+bx+c$,代入可解得$f(x)=x^2-x+1$,利用这个多项式,我们可以写出所有满足条件的多项式

    $$f(x)=x^2-x+1 + (x-1)(x+1)(x-2)h(x)$$.

    其中$h(x)$是任意多项式.

    下面介绍一种更为一般的方法——拉格朗日插值法,我们按如下步骤进行:

    (1)求多项式$p(x)$,使$p(1)=1,p(-1)=0,p(2)=0$;

    (2)求多项式$q(x)$,使$q(1)=0,q(-1)=1,q(2)=0$;

    (3)求多项式$r(x)$,使$r(1)=0,r(-1)=0,r(2)=1$;

    (4)作多项式$f(x)=1*p(x) + 3*q(x) + 3*r(x)$,它就是问题的一个解.

    这里的$p(x)、q(x)、r(x)$好求吗?

    如选取$p(x)=c(x+1)(x-2)$,其中$c$为常数,显然$p(-1)=0,p(2)=0$,再将$p(1)=1$代入,可求得$c$是$(1+1)(1-2)$的倒数,于是

    $$p(x)=frac{(x+1)(x-2)}{(1+1)(1-2)} = -frac{1}{2} (x^2 -x -2).$$

    同理可得

    $$q(x)=frac{(x-1)(x-2)}{(-1-1)(-1-2)} = frac{1}{6} (x^2 -3x +2).$$

    $$q(x)=frac{(x-1)(x+1)}{(2-1)(2+1)} = frac{1}{3} (x^2 - 1).$$

    一般地,设$a,b,c$两两不同,那么满足$f(a)=e,f(b)=f,f(c)=g$的一个多项式$f(x)$可由下面的公式给出

    $$f(x)=ecdot p(x)+fcdot q(x)+gcdot r(x). ag{(1)}$$

    其中

    $$p(x)=frac{(x-b)(x-c)}{(a-b)(a-c)},q(x)=frac{(x-a)(x-c)}{(b-a)(b-c)},r(x)=frac{(x-a)(x-b)}{(c-a)(c-b)}. ag{(2)}$$

    通常,我们把公式(1)和(2)叫做拉格朗日插值公式.运用类似的方法,我们可以将它推广到一般情况.

    解同余方程组

    为了解同余方程组,我们依照建立拉格朗日插值公式的想法,按如下两个步骤进行:

    1°求整数$p$,使$pequiv 1(mod 3),pequiv 0(mod 5),p equiv 0(mod 7).$

       求整数$q$,使$qequiv 0(mod 3),qequiv 1(mod 5),q equiv 0(mod 7).$

       求整数$r$,使$requiv 0(mod 3),requiv 0(mod 5),r equiv 1(mod 7).$

    2°作整数$k=2 imes p + 3 imes q + 2 imes r$,这个$k$使得方程组中每个同余式都成立.

     此时,$xequiv k(mod 3 imes 5 imes 7)$就是同余方程组的解.

    如何求出$p、q$和$r$呢?不妨以求$p$为例.

      由于$,pequiv 0(mod 5),p equiv 0(mod 7)$,故$5 | p,7 | p$,于是$p = 5 imes 7 imes c$,其中c是某个整数.再由$pequiv 1(mod 3)$知,整数c满足:$5 imes 7 imes cequiv 1(mod 3)$.而$5 imes 7 equiv -1(mod 3)$,于是$-c equiv 1(mod 3)$,进而$c equiv 1(mod 3)$.若选取c=2,则p=70。

      用类似的方法,我们可以得q=21,r=15.作整数$k=2 imes 70 + 3 imes 21 + 2 imes 15 = 223$,于是同余方程组得解为$xequiv 233equiv 23(mod 105)$.

    一般地,我们有如下结论:

    孙子定理:设$a,b,c$为两两互素的正整数,$e,f,g$为任意整数,则同余方程组

    $$
    left{
    egin{array}{c}
    x equiv e (mod a) \
    x equiv f (mod b) \
    x equiv g (mod c) \
    end{array}
    ight.
    $$

    仅有一解:$xequiv ebcc_1 + facc_2 + gabc_3 (mod abc)$,其中$c_1,c_2,c_3$为分别满足同余式:$bcc_1 equiv 1(mod a),acc_2 equiv 1(mod b),abc_3 equiv 1(mod c)$的整数.

    运用类似的方法,我们可以将孙子定理推广到更一般的情形.

    例.(韩信点兵问题)有兵一队,若排成5行,则末行1人;若排成6行,则末行5人;若排成7行,则末行4人;若排成11行,则末行10人.求兵数。

    解:先考虑第一种排列方式,设每行$t$个人,兵数为$x$,则$5t+1 = x$,所以$x≡1(mod   5)$.同理可得到另外3个式子.

    $$
    left{
    egin{array}{c}
    x equiv 1 (mod 5) \
    x equiv 5 (mod 6) \
    x equiv 4 (mod 7) \
    x equiv 10 (mod 11) \
    end{array}
    ight.
    $$

    利用孙子定理,设$p=6 imes 7 imes 11 imes c equiv 1(mod 5) Rightarrow  1 imes 2 imes 1 imes c equiv 1(mod 5)Rightarrow 2cequiv 1(mod 5)$,取$c=3$,所以$p  =6 imes 7 imes 11 imes 3$,同理可得到$q,r,t$.

    $xequiv 1 imes p + 5 imes q + 4 imes r + 10 imes t = 6731 equiv 2111(mod 5 imes 6 imes 7 imes 11)$,即$xequiv 2111(mod 2310)$.

  • 相关阅读:
    PHP之防御sql注入攻击的方式
    分享Java开发的利器-Lombok
    Linux最佳的云存储服务分析
    提升PHP编程效率的20个要素
    Java中常见的URL问题及解决方案
    配置CNPM-基础案例
    微软Skype Linux客户端全新发布
    jQuery 3.0最终版发布,十大新特性眼前一亮
    【风马一族_mysql】MySQL免安装版环境配置图文教程
    【风马一族_物理】维度空间的粒子
  • 原文地址:https://www.cnblogs.com/lfri/p/10449620.html
Copyright © 2011-2022 走看看