我们有单位根反演:

\[\sum_{k\mid n}[x^n]f(x)=\frac{1}{k}\sum_{i=0}^{k-1}f(\omega_k^i).
\]

我们有 CRT:

\[x\equiv r_{1..n}\pmod{m_{1..n}}\\
\Leftrightarrow x\equiv \sum_{i=1}^nr_i\cdot\operatorname{inv}(M/m_i,m_i)\cdot M/m_i\pmod M.
\]

我们还有 Lagrange 插值:

\[f(x)=\sum_{i=0}^{\deg f}f(x_i)\prod_{j\neq i}\frac{x-x_j}{x_i-x_j}.
\]

然后我宣称 CRT 才是老大!


  从单位根反演开始,其实它指出

\[[x^0](f(x)\bmod(x^k-1))=\frac{1}{k}\sum_{i=0}^{k-1}f(\omega_k^i).
\]

(左侧在组合意义上与原式左侧相等是显然的,就不证了。)它是如何实现这一过程的?注意到有

\[x^k-1=0\Leftrightarrow x\in\{\omega_k^i\}_{i=0}^{k-1},
\]

然后浅代数基本定理一下就是

\[x^k-1=(x-\omega_k^0)(x-\omega_k^1)\cdots(x-\omega_k^{k-1}).
\]

如果我们求出 \(y_i=[x^0](f(x)\bmod (x-\omega_k^i))\),大概就可以 CRT 一发合并了?

  注意到 \(f(x)\bmod (x-t)=f(t)\),所以 \(y_i=f(\omega_k^i)\)。套一套 CRT 的话……

\[f(x)\equiv y_i\pmod{x-\omega_k^i}\\
\Leftrightarrow f(x)\equiv\sum_{i=0}^{k-1}y_i\cdot\prod_{j\neq i}\frac{1}{\omega_k^i-\omega_k^j}\cdot\prod_{j\neq i}(x-\omega_k^i)\pmod{x^k-1}\\
\begin{aligned}[]
\Rightarrow [x^0](f(x)\bmod (x^k-1)) &= \sum_{i=0}^{k-1}y_i\cdot \frac{\omega_k^i}{k}\cdot \omega_k^{-i}\\
&= \frac{1}{k}\sum_{i=0}^{k-1}f(\omega_k^i).
\end{aligned}
\]

(第二项的化简好像 3B1B 讲过形象证明,不过可以直接洛。)这 tm 不就是所谓单位根反演吗?

  但是,要说从 \(f(x)\bmod (x^k-1)\) 推导单位根反演,我一开始的思路是 Lagrange 插值。但……也许不怎么科学,我们用 \(f\) 的点值而非 \(f(x)\bmod(x^k-1)\) 的点值。带入插值公式:

\[g(x)=\sum_{i=0}^{k-1}f(\omega_k^i)\prod_{j\neq i}\frac{x-\omega_k^i}{\omega_k^i-\omega_k^j}.
\]

对比上面 CRT 的结论,发现 \(g(x)=f(x)\bmod (x^k-1)\),我们也可以从 Lagrange 插值的角度,取常数项得到单位根反演。

  那么 CRT 和 Lagrange 插值又是什么关系?

  式子是一样的,也就是说……

  若 Lagrange 用 \(x_{1..n}\) 去插 \(f(x)\),令 \(h(x)=\prod_{i=1}^n(x-x_i)\),那实际上得到的 \(g(x)\) 就是

\[g(x)\equiv f(x)\pmod{h(x)}.
\]

为什么插出 \(n\) 次多项式至少需要 \(n+1\) 个点值?因为 \(\deg h>n\) 时,可以保证 \(g(x)=f(x)\)。而在推导单位根反演的过程中,我们不知道 \(\deg f\),自然也就是引入模 \((x^k-1)\) 来表示最终结果了。


  也许可以这么说:

  • Lagrange 插值是 CRT 的特殊情况(无需取模);
  • 单位根反演是弟中弟。

  Lagrange 插值法是以法国十八世纪数学家 Joseph-Louis Lagrange 命名的一种多项式插值方法。然而在南北朝时期,《孙子算经》卷下第二十六题就已经提出了更为广义的中国剩余定理。比西方整整早了十三个世纪!(doge

  还是希望第一次学 Lagrange 插值 / CRT / 单位根反演,或者第一次学完 Lagrange 插值 & CRT & 单位根反演 的时候,就被安利这个惊喜 w。



  前面是第一个惊喜,下面这首翻唱是第二个咯。

  真的是 IT 的时代啊,最近的 ACE 和 SynthV 引入 AI 的技术力真的比传统 V 强大了几个层次,可以让音乐圈不明真相的叔叔评价“被上帝吻过的嗓音”。主页推送几乎从【洛天依原创】全部变成【洛天依 AI】(当然,中间没空格 w)。虽然 P 主变 A 主从客观上看应该是大势所趋,但不管怎么说都算是对“情怀”的巨大冲击。而且“不难听的歌”的调试门槛降低,肯定又会有一堆小鬼来污染环境。

  没有什么成熟的见解。有意思的是,“它们”都是洛天依,这似乎契合了我所认为的“爱”虚拟歌姬的本质。

  结束语:都给我去听啊喂!

Diary & Note - 两个惊喜的更多相关文章

  1. [翻译]魅族的M1 Note是十分廉价(dirt-cheap)的iphone5C增强版

    Meizu's M1 Note is a dirt-cheap iPhone 5c on steroids 魅族的M1 Note是十分廉价(dirt-cheap)的ihone5C增强版 While m ...

  2. Oracle库Delete删除千万以上普通堆表数据的方法

    需求:Oracle数据库delete删除普通堆表千万条历史记录. 直接删除的影响: 1.可能由于undo表空间不足从而导致最终删除失败的问题: 2.可能导致undo表空间过度使用,影响到其他用户正常操 ...

  3. SVN学习之参数定义及设置

    http://jackyrong.iteye.com/blog/238835 conf目录中打开svnserve.conf ,去掉注释,搞成如下这样 [general] anon-access = r ...

  4. 《锋利的Jquery第二版》读书笔记 第三章

    DOM操作的分类 1.DOM Core不专属JavaScript,任何一种支持DOM的程序设计语言都可以使用它,也可以处理XML等标记语言编写出来的文档,getElementById().setAtt ...

  5. SVN配置文件详解

    本章将详细介绍前一章所涉及的两个配置文件, svnserve.conf 和 authz.conf,通过对配置逐行的描述,来阐明其中的一些细节含义.除此之外的其他配置.安装等内容,不是本文重点,读者若有 ...

  6. threejs里面的vector3源码解析

    // File:src/math/Vector3.js /** * @author mrdoob / http://mrdoob.com/ * @author *kile / http://kile. ...

  7. mysql数据库的基本操作:索引、视图,导入和导出,备份和恢复

    1.索引: 索引是一种与表有关的结构,它的作用相当于书的目录,可以根据目录中的页码快速找到所需的内容. 当表中有大量记录时,若要对表进行查询,没有索引的情况是全表搜索:将所有记录一一取出,和查询条件进 ...

  8. C 语言 符合运算符

    复合赋值 5个算术运算符 + - * / % 可以和赋值运算符 = 结合起来形成符合运算符 += -= *= /= %= total += 5 total = total + 5 note:两个运算符 ...

  9. OJ题解记录计划

    容错声明: ①题目选自https://acm.ecnu.edu.cn/,不再检查题目删改情况 ②所有代码仅代表个人AC提交,不保证解法无误 E0001  A+B Problem First AC: 2 ...

  10. PHP之数组函数

    php数组中的预定义变量 预定义常量 CASE_LOWER (integer) CASE_LOWER 用在array_change_key_case()中将数组的键名转换为小写字母.这也是array_ ...

随机推荐

  1. [Linux]学习之路---树梅派4B出现打开文件管理器闪退等问题

    直接控制台运行命令: sudo apt-get install --reinstall pcmanfm 后面的pcmanfm,是一个功能齐全的Linux上的轻量级文件管理器,我自己的记忆方法就是: P ...

  2. Python函数指定参数、返回值类型

    def fun(arg1: str, arg2: int ...) -> str: def as_view(name: str, *class_args: int, **class_kwargs ...

  3. 一些很好用的SVN功能

    1.checkout 1.1 只checkout部分目录和文件 目的:有时候项目的文件很多,但是只会关心其中的某几个文件,就可以只checkout这几个文件,可以缩短checkout时间且减少其他文件 ...

  4. 异常断链的惨痛经历!拯救Air780EP模块紧急项目

    ​ 必须要吐槽一下:最近被老板驱使,要用Air780EP模块做几个紧急项目... 就怕紧急项目,时间紧任务重,遇到了一些棘手问题,可把我给折腾死了-- 这里把遇到的问题,排查记录下来,看能不能帮到因遇 ...

  5. IPC- J-STD-001J, J-STD-003D, J-STD-004D, J-STD-005B, IPC-2221C, IPC-6012F, IPC-A-610J ,

  6. python3的json数据库-TinyDB效率篇

    安装了这个TinyDB库后,我突然想到一般来说python执行的速度并不算高,那这个库写文件速度如何呢? 测试代码如下: from tinydb import TinyDB import time # ...

  7. npm安装包出现Invalid Version,npm list报错UNMET DEPENDENCY报错

    执行 npm install 出现报错 2097 verbose stack TypeError: Invalid Version: 2097 verbose stack at new SemVer ...

  8. Apache Tomcat AJP 实现负载均衡

    大部分一开始接触WEB服务器的人可能和我一样对为什么有Apache又有Tomcat服务器感到奇怪(它们还都是Apache开发的呵呵),其实他们不是冗余的服务器,虽然他们都能对外提供WEB服务器,但总的 ...

  9. Python:pygame游戏编程之旅三(玩家控制的小球)

    上一节实现了小球自由移动,本节在上节基础上增加通过方向键控制小球运动,并为游戏增加了背景图片. 一.实现: # -*- coding:utf-8 -*- import os import sys im ...

  10. Lua之基础篇

    新到一家公司,接触有些业务竟然直接通过服务器,在nginx层面就完成了,主要是基于OpenResty和Lua来实现的.打算深入了解一下这门神奇的语言... 为了嵌入应用程序中,从而为应用程序提供灵活的 ...