《机器学习数学基础》补充资料:韩信点兵与拉格朗日插值法

article/2025/8/13 20:40:45

本文作者:卓永鸿

19世纪的伟大数学家高斯,他对自己做的数学有非常高的要求,未臻完美不轻易发表。于是经常有这样的情况:其他也很厉害的数学家提出自己的工作,高斯便拿出自己的文章说他一二十年前就做出来了,而且做得更好。导致经常有杰出数学家吐血三升,甚至对高斯怀恨在心。

高斯在 1801年发表《算术研究》(Disquisitiones Arithmeticae),当中提出一个关于同余的定理。后来 1874年,德国科学史家马蒂生,指出早在南北朝时《孙子算经》里面就提出了等价的算法,比高斯早了一千多年。此后,这个定理就被称为中国剩余定理(Chinese remainder theorem)。这下,高斯若天上有知,总算自己也尝了一次这种滋味。

《孙子算经》中所提出的,是“物不知数”问题,俗称“韩信点兵”,这是中国古代数学研究成果中极少数为世界所知晓的。这问题大概是说:有一正数除以三余二、除以五余三、除以七余二,则此正数最小为多少?

这个问题在《孙子算经•卷下》第二十六题,原文抄附如下:“今有物,不知其数。三、三数之,剩二;五、五数之,剩三;七、七数之,剩二。问物几何?答曰:二十三。术曰:‘三、三数之,剩二’,置一百四十;‘五、五数之,剩三’,置六十三;‘七、七数之,剩二’,置三十。并之,得二百三十三。以二百一十减之,即得。凡三、三数之,剩一,则置七十;五,五数之,剩一,则置二十一;七、七数之,剩一,则置十五。一百零五以上,以一百零五减之,即得。”其中“一百零五”乃是一百零五,并非今日口语所指的一百五十。

这类问题在高中数学课程中经常出现,许多老师所授解题方式千奇百怪,常令学生无所适从。然而观察《孙子算经》的算法,它其实是带有比较朴素的一般性思想,先考虑几个简单的特殊情况,将这些特殊情况线性组造出特解,再写出通解。以今日的数学符号表述如下:

首先解齐次方程
{ x h = 3 q 1 + 0 x h = 5 q 2 + 0 x h = 7 q 3 + 0 \begin{cases} x_h = 3q_1 + 0 \\ x_h = 5q_2 + 0 \\ x_h = 7q_3 + 0 \end{cases} xh=3q1+0xh=5q2+0xh=7q3+0
得到齐次方程的通解公式
x h = 3 × 5 × 7 × n = 105 n , n ∈ Z (1) x_h = 3 \times 5 \times 7 \times n = 105n, n \in \mathbb{Z}\tag{1} xh=3×5×7×n=105n,nZ(1)

接着分别找

{ x 1 = 3 q 11 + 1 x 1 = 5 q 12 + 0 x 1 = 7 q 13 + 0 { x 2 = 3 q 21 + 0 x 2 = 5 q 22 + 1 x 2 = 7 q 23 + 0 { x 3 = 3 q 31 + 0 x 3 = 5 q 32 + 0 x 3 = 7 q 33 + 1 \begin{cases} x_1 = 3q_{11} + 1 \\ x_1 = 5q_{12} + 0 \\ x_1 = 7q_{13} + 0 \end{cases} \qquad \begin{cases} x_2 = 3q_{21} + 0 \\ x_2 = 5q_{22} + 1 \\ x_2 = 7q_{23} + 0 \end{cases} \qquad \begin{cases} x_3 = 3q_{31} + 0 \\ x_3 = 5q_{32} + 0 \\ x_3 = 7q_{33} + 1 \end{cases} x1=3q11+1x1=5q12+0x1=7q13+0 x2=3q21+0x2=5q22+1x2=7q23+0 x3=3q31+0x3=5q32+0x3=7q33+1

之特解,得到
x 1 = 70 , x 2 = 21 , x 3 = 15 x_1 = 70, x_2 = 21, x_3 = 15 x1=70,x2=21,x3=15
然后线性组合
x p = 70 × 2 + 21 × 3 + 15 × 2 = 233 (2) x_p = 70 \times 2 + 21 \times 3 + 15 \times 2 = 233\tag{2} xp=70×2+21×3+15×2=233(2)

此便为原问题的一个特解。结合(1)与(2),便得到通解
x = x p + x h = 233 + 105 n , n ∈ Z (3) x = x_p + x_h = 233 + 105n, n \in \mathbb{Z}\tag{3} x=xp+xh=233+105n,nZ(3)
其中当 n = − 2 n= -2 n=2 有最小正整数解 x = 23 x = 23 x=23。写到此处,笔者想起孔子说的:“吾道一以贯之。”

拉格朗日插值法,亦是韩信点兵思想之发扬。以下举一实例,用同样的想法写出拉格朗日插值多项式。

给定 A ( 3 , 2 ) , B ( 2 , − 1 ) , C ( − 1 , 3 ) A(3,2), B(2,-1), C(-1,3) A(3,2),B(2,1),C(1,3) 三点,求过此三点的最低次多项式函数 f ( x ) f(x) f(x)。我们先求出三个较特别的二次函数:
f 1 ( x ) :过 ( 3 , 1 ) , ( 2 , 0 ) , ( − 1 , 0 ) f 2 ( x ) :过 ( 3 , 0 ) , ( 2 , 1 ) , ( − 1 , 0 ) f 3 ( x ) :过 ( 3 , 0 ) , ( 2 , 0 ) , ( − 1 , 1 ) \begin{split} f1(x):过(3,1),(2,0),(-1,0) \\ f2(x):过(3,0),(2,1),(-1,0) \\ f3(x):过(3,0),(2,0),(-1,1) \end{split} f1(x):过(3,1),(2,0),(1,0)f2(x):过(3,0),(2,1),(1,0)f3(x):过(3,0),(2,0),(1,1)
然后设定
f ( x ) = 2 ⋅ f 1 ( x ) + ( − 1 ) ⋅ f 2 ( x ) + 3 ⋅ f 3 ( x ) f(x)= 2 \cdot f_1(x)+(-1) \cdot f_2(x)+3 \cdot f_3(x) f(x)=2f1(x)+(1)f2(x)+3f3(x)
这样便有
{ f ( 3 ) = 2 ⋅ 1 + 0 + 0 = 2 f ( 2 ) = 0 + ( − 1 ) ⋅ 1 + 0 = − 1 f ( − 1 ) = 0 + 0 + 3 ⋅ 1 = 3 \begin{cases} f(3)= 2 \cdot 1+ 0+ 0= 2 \\ f(2)= 0+(-1) \cdot 1+ 0=-1 \\ f(-1)= 0+ 0+ 3 \cdot 1= 3 \end{cases} f(3)=21+0+0=2f(2)=0+(1)1+0=1f(1)=0+0+31=3
即为所欲求之二次多项式函数。而每个 f i ( x ) f_i(x) fi(x) 皆容易,因 f 1 ( x ) f_1(x) f1(x) ( 2 , 0 ) , ( − 1 , 0 ) (2,0),(-1,0) (2,0),(1,0),设
f 1 ( x ) = a ( x − 2 ) ( x + 1 ) (4) f_1(x)= a(x - 2)(x+ 1)\tag{4} f1(x)=a(x2)(x+1)(4)
( 3 , 1 ) (3,1) (3,1)​ 得
1 = a ⋅ ( 3 − 2 ) ( 3 + 1 ) ⇒ a = 1 ( 3 − 2 ) ( 3 + 1 ) 1 = a \cdot (3- 2)(3+ 1) \Rightarrow a = \frac{1}{(3- 2)(3+ 1)} 1=a(32)(3+1)a=(32)(3+1)1
再把这个 a a a 代回式子 (4) 得
f 1 ( x ) = ( x − 2 ) ( x + 1 ) ( 3 − 2 ) ( 3 + 1 ) f_1(x)=\frac{(x - 2)(x+ 1)}{(3- 2)(3+ 1)} f1(x)=(32)(3+1)(x2)(x+1)
同样的流程,可解出
f 2 ( x ) = ( x − 3 ) ( x + 1 ) ( 2 − 3 ) ( 2 + 1 ) f 3 ( x ) = ( x − 2 ) ( x − 3 ) ( − 1 − 2 ) ( − 1 − 3 ) \begin{split} f_2(x)&=\frac{(x - 3)(x+ 1)}{(2- 3)(2+ 1)}\\ f_3(x)&=\frac{(x - 2)(x - 3)}{(-1- 2)(-1- 3)} \end{split} f2(x)f3(x)=(23)(2+1)(x3)(x+1)=(12)(13)(x2)(x3)
便得到
f ( x ) = 2 ⋅ ( x − 2 ) ( x + 1 ) ( 3 − 2 ) ( 3 + 1 ) + ( − 1 ) ⋅ ( x − 3 ) ( x + 1 ) ( 2 − 3 ) ( 2 + 1 ) + 3 ⋅ ( x − 2 ) ( x − 3 ) ( − 1 − 2 ) ( − 1 − 3 ) f(x)= 2 \cdot \frac{(x - 2)(x+ 1)}{(3- 2)(3+ 1)} + (-1) \cdot \frac{(x - 3)(x+ 1)}{(2- 3)(2+ 1)} + 3 \cdot \frac{(x - 2)(x - 3)}{(-1- 2)(-1- 3)} f(x)=2(32)(3+1)(x2)(x+1)+(1)(23)(2+1)(x3)(x+1)+3(12)(13)(x2)(x3)
这就是拉格朗日插值法


http://www.hkcw.cn/article/sWfBpbyxPP.shtml

相关文章

Go 即时通讯系统:日志模块重构,并从main函数开始

重构logger 上次写的logger.go过于繁琐,有很多没用到的功能;重构后只提供了简洁的日志接口,支持日志轮转、多级别日志记录等功能,并采用单例模式确保全局只有一个日志实例 全局变量 var (once sync.Once // 用于实现…

力扣面试150题--二叉树的锯齿形层序遍历

Day 56 题目描述 思路 锯齿形就是一层是从左向右,一层是从右向左,那么我们可以分析样例,对于第奇数层是从左向右,第偶数层是从右向左,于是可以采取一个计数器,采取链表方式,从左向右就是正常插…

uni-app学习笔记二十一--pages.json中tabBar设置底部菜单项和图标

如果应用是一个多 tab 应用,可以通过 tabBar 配置项指定一级导航栏,以及 tab 切换时显示的对应页。 在 pages.json 中提供 tabBar 配置,不仅仅是为了方便快速开发导航,更重要的是在App和小程序端提升性能。在这两个平台&#xff…

Vue3+SpringBoot全栈开发:从零实现增删改查与分页功能

前言 在现代化Web应用开发中,前后端分离架构已成为主流。本文将详细介绍如何使用Vue3作为前端框架,SpringBoot作为后端框架,实现一套完整的增删改查(CRUD)功能,包含分页查询、条件筛选等企业级特性。 技术栈介绍 前端&#xff1…

用户资产化视角下开源AI智能名片链动2+1模式S2B2C商城小程序的应用研究

摘要:在数字化时代,平台流量用户尚未完全转化为企业的数字资产,唯有将其沉淀至私域流量池并实现可控、随时触达,方能成为企业重要的数字资产。本文从用户资产化视角出发,探讨开源AI智能名片链动21模式S2B2C商城小程序在…

用dayjs解析时间戳,我被提了bug

引言 前几天开发中突然接到测试提的一个 Bug,说我的时间组件显示异常。 我很诧异,这里初始化数据是后端返回的,我什么也没改,这bug提给我干啥。我去问后端:“这数据是不是有问题?”。后端答:“…

适配器模式:让不兼容接口协同工作

文章目录 1. 适配器模式概述2. 适配器模式的分类2.1 类适配器2.2 对象适配器 3. 适配器模式的结构4. C#实现适配器模式4.1 对象适配器实现4.2 类适配器实现 5. 适配器模式的实际应用场景5.1 第三方库集成5.2 遗留系统集成5.3 系统重构与升级5.4 跨平台开发 6. 类适配器与对象适…

多模态AI的企业应用场景:视觉+语言模型的商业价值挖掘

关键词:多模态AI | 视觉语言模型 | 企业应用 | 商业价值 | 人工智能 📚 文章目录 一、引言:多模态AI时代的到来二、多模态AI技术架构深度解析三、客服场景:智能化服务体验革命四、营销场景:精准投放与创意生成五、研…

设备驱动与文件系统:01 I/O与显示器

操作系统设备驱动学习之旅——以显示器驱动为例 从这一节开始,我要学习操作系统的第四个部分,就是i o设备的驱动。今天要讲的是第26讲,内容围绕i o设备中的显示器展开,探究显示器是如何被驱动的,也就是操作系统怎样让…

【计算机网络】Linux下简单的UDP服务器(超详细)

套接字接口 我们把服务器封装成一个类,当我们定义出一个服务器对象后需要马上初始化服务器,而初始化服务器需要做的第一件事就是创建套接字。 🌎socket函数 这是Linux中创建套接字的系统调用,函数原型如下: int socket(int domain, int typ…

基于微信小程序的云校园信息服务平台设计与实现(源码+定制+开发)云端校园服务系统开发 面向师生的校园事务小程序设计与实现 融合微信生态的智慧校园管理系统开发

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

6月1日星期日今日早报简报微语报早读

6月1日星期日,农历五月初六,早报#微语早读。 1、10个省份城镇化率超70%,广东城镇人口超9700万; 2、长沙居民起诉太平财险不赔“新冠险”,立案878天后获胜判; 3、海口:全市范围内禁止投放互联…

linux命令 systemctl 和 supervisord 区别及用法解读

目录 基础与背景服务管理范围配置文件和管理方式监控与日志依赖管理适用场景常用命令对照表实际应用场景举例优缺点对比小结参考链接 1. 基础与背景 systemctl 和 supervisord 都是用于管理和控制服务(进程)的工具,但它们在设计、使用场景和…

用mediamtx搭建简易rtmp,rtsp视频服务器

简述: 平常测试的时候搭建rtmp服务器很麻烦,这个mediamtx服务器,只要下载就能运行,不用安装、编译、配置等,简单易用、ffmpeg推流、vlc拉流 基础环境: vmware17,centos10 64位,wi…

YOLOv5-入门篇笔记

1.创建环境 conda create -n yolvo5 python3.8 去pytorch.org下载1.8.2的版本。 pip --default-timeout1688 install torch1.8.2 torchvision0.9.2 torchaudio0.8.2 --extra-index-url https://download.pytorch.org/whl/lts/1.8/cu111 github上下载yolov5的zip pip --def…

设计模式-行为型模式-模版方法模式

概述 模板方法模式 :Template Method Pattern : 是一种行为型设计模式. 它定义了一个操作中的算法骨架,而将一些步骤延迟到子类中实现。 模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。 符合 开闭原则。 可以在算法的流程中&…

barker-OFDM模糊函数原理及仿真

文章目录 前言一、巴克码序列二、barker-OFDM 信号1、OFDM 信号表达式2、模糊函数表达式 三、MATLAB 仿真1、MATLAB 核心源码2、仿真结果①、barker-OFDM 模糊函数②、barker-OFDM 距离分辨率③、barker-OFDM 速度分辨率④、barker-OFDM 等高线图 四、资源自取 前言 本文进行 …

十三、【核心功能篇】测试计划管理:组织和编排测试用例

【核心功能篇】测试计划管理:组织和编排测试用例 前言准备工作第一部分:后端实现 (Django)1. 定义 TestPlan 模型2. 生成并应用数据库迁移3. 创建 TestPlanSerializer4. 创建 TestPlanViewSet5. 注册路由6. 注册到 Django Admin 第二部分:前端…

Python训练第四十一天

DAY 41 简单CNN 知识回顾 数据增强卷积神经网络定义的写法batch归一化:调整一个批次的分布,常用与图像数据特征图:只有卷积操作输出的才叫特征图调度器:直接修改基础学习率 卷积操作常见流程如下: 1. 输入 → 卷积层 →…

【C++进阶篇】哈希表的封装(赋源码)

C哈希表终极封装指南:从线性探测到STL兼容的迭代器魔法 一. 哈希表的封装1.1 基本结构1.1.1 插入1.1.2 查找1.1.3 删除1.1.4 Begin()1.1.5 End()1.1.6 构造函数1.1.7 析构函数 1.2 迭代器设计(重点)1.2.1 重载operator*()1.2.2 重载operator-…