前言

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

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

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

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

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

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

$$l\equiv k(mod \ 3),l\equiv k(mod \ 5),l\equiv k(mod \ 7)$$.

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

通常,我们把$x\equiv 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)=e\cdot p(x)+f\cdot q(x)+g\cdot r(x). \tag{(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)}. \tag{(2)}$$

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

解同余方程组

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

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

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

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

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

此时,$x\equiv k(mod \ 3 \times 5 \times 7)$就是同余方程组的解.

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

由于$,p\equiv 0(mod \ 5),p \equiv 0(mod \ 7)$,故$5 | p,7 | p$,于是$p = 5 \times 7 \times c$,其中c是某个整数.再由$p\equiv 1(mod \ 3)$知,整数c满足:$5 \times 7 \times c\equiv 1(mod \ 3)$.而$5 \times 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 \times 70 + 3 \times 21 + 2 \times 15 = 223$,于是同余方程组得解为$x\equiv 233\equiv 23(mod \ 105)$.

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

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

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

仅有一解:$x\equiv 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\{
\begin{array}{c}
x \equiv 1 (mod \ 5) \\
x \equiv 5 (mod \ 6) \\
x \equiv 4 (mod \ 7) \\
x \equiv 10 (mod \ 11) \\
\end{array}
\right.
$$

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

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

转载于:https://www.cnblogs.com/lfri/p/10449620.html

拉格朗日插值法和孙子定理相关推荐

  1. C语言实现拉格朗日插值法和牛顿插值法

    拉格朗日插值法的实现就是通过构造函数,通过已知几对数据然后估算输入对应的数据所得得值. 通过例子可知道拉格朗日法,假设有三组数据分别为(x0,y0),(x1,y1),(x2,y2),与第一个y值相乘得 ...

  2. 拉格朗日插值的优缺点_拉格朗日插值法与牛顿插值法的比较

    第 1 页 共 7 页 拉格朗日插值法与牛顿插值法的比较 [ 摘 要 ] 在生产和科研中出现的函数是多样的.对于一些函数很难找出其解析表达式.即使在某些情况下,可以写出函 数的解析表达式,但由于解析表 ...

  3. 拉格朗日插值的优缺点_拉格朗日插值的优缺点_拉格朗日插值法与牛顿插值法的比较...

    第 1 页 共 7 页 拉格朗日插值法与牛顿插值法的比较 [ 摘 要 ] 在生产和科研中出现的函数是多样的.对于一些函数很难找出其解析表达式.即使在某些情况下,可以写出函 数的解析表达式,但由于解析表 ...

  4. 1月16日:拉格朗日中值定理,罗尔定理,柯西中值,拉格朗日插值,牛顿插值,重心插值,拉格朗日乘子法的证明

    拉格朗日中值定理 https://www.bilibili.com/video/BV117411E7kx?from=search&seid=17921778669593975548 拉格朗日中 ...

  5. 拉格朗日插值_拉格朗日插值定理的理论基础

    缺失,几乎是不可避免的.只要做数据处理,不可避免的工作就是插值.而插值里面比较常用的方法之一就是拉格朗日插值法,这篇文章就跟大家讲讲拉格朗日插值的理论基础. 为什么需要进行插值 我们进行数据处理的理想 ...

  6. 插值法:拉格朗日插值、牛顿插值

    拉格朗日插值法 (*以下定义选自维基百科) 算法流程图 算法代码 [cpp] view plaincopy #include<iostream> #include<string> ...

  7. matlab全域基函数,多项式函数插值:全域多项式插值(一)单项式基插值、拉格朗日插值、牛顿插值 [MATLAB]...

    全域多项式插值指的是在整个插值区域内形成一个多项式函数作为插值函数.关于多项式插值的基本知识,见"计算基本理论". 在单项式基插值和牛顿插值形成的表达式中,求该表达式在某一点处的值 ...

  8. 数值分析(part1)--拉格朗日插值

    学习笔记,仅供参考,按学习进度更博,不按书本顺序 学习书籍:<数值分析>–Timothy Sauer 插值 数据和插值函数 定义(3.1) 如果对于每个1≤i≤n,P(xi)=yi1 \l ...

  9. 拉格朗日乘数法和KKT条件的直观解释

    拉格朗日乘数法和KKT条件的直观解释 标签(空格分隔): 机器学习 linbin 2018-05-10 Abstract 在SVM的推导中,最优化问题是其中的核心,这里我们简单介绍下最优化问题,特别是 ...

最新文章

  1. oracle 修改用户密码_干货!数据库安全之Oracle数据库安全加固
  2. wps插件实用插件_6款实用PS插件合集,好用的PS插件都在这里!
  3. Tiny C++通用库终于基本上完成了 - 专职C++ - C++博客
  4. Sqlserver中分页,2012后支持offset + fetch,2012之前用rownum嵌套查询
  5. 福州大学计算机专业录取位次,盘点福州大学历年最低录取分数线以及最低位次!给考生做参考...
  6. mvc大对象json传输报错
  7. Gartner:2015年SIEM(安全信息与事件管理)市场分析
  8. cmd ibm服务器型号,ibm gpfs
  9. 为什么Nginx性能比Apache高
  10. 3部世界顶级宇宙纪录片,献给对宇宙万物充满好奇的你~
  11. java web容器_Java Web容器安全
  12. 【笔记】iOS开发基础笔记二
  13. eclipse终止端处的加载主类错误
  14. FactoryBean在XML中的依赖注入方法
  15. SQL Server中char与nchar区别
  16. kindeditor 编辑器手机访问默认为HTML编辑
  17. 记录一下 MacBook 中 texlive 的安装路径
  18. python将十进制转换二进制_python进制转换:十进制转二进制的用法
  19. .Net使用FlashPaper
  20. 从浏览器直接转跳到APP具体页面---(魔窗)MagicWindow使用教程

热门文章

  1. 软件架构设计杂记: 分层架构 与 PO、VO、DTO、BO、POJO、BO/DO、DAO
  2. Java中的VO,BO,PO,DO,DTO
  3. 《AV(反病毒)技术的演进》AV方法论的改善和修正部分学习笔记
  4. php课程实验总结报告_php实训心得体会范文
  5. 【51单片机STC89C52】IO口模拟PWM控制SG90舵机
  6. 阿里java代码检测工具p3c
  7. 抽取_内插_半带滤波器_多相滤波器
  8. 欧科云链研究院|今日学习:区块链上的房地产交易
  9. 吴恩达深度学习笔记(四)
  10. KeePass 2.37版本的简体中文翻译更新