我们有单位根反演:

\[\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. 关于MNN的OPENCL和Vulkan支持

    关于MNN框架推理的时候,通过调用库当中结构体的内容,可以切换选择创建Session的具体配置.关于结构的描述见官方文档: 官方文档--创建Session CPU是编译的时候默认选择的配置方式,通过文 ...

  2. 干货分享:Air700ECQ的硬件设计,第二部分

    ​ 接下来分享第二部分. 3.10. 功能管脚 3.10.1. MAIN_RI 管脚名 类型 序号 电压域 作用 MAIN_RI DO 5 LDOAON 振铃信号,唤醒输出管脚,用于唤醒AP 表格 1 ...

  3. 关于linux 终端的小命令

    Ubuntu 为例 ctrl alt t   新开一个终端(默认工作目录) ctrl shift t 在当前终端开一个tab (工作目录和当前tab一致 当你进入一个很深的目录的时候需要新开一个命令行 ...

  4. 使用免费的SVN服务器

    在本地环境中安装SVN window版本自行搜索图文教程. linux版本(以我的 ubuntu 为例子) 我尝试直接敲SVN svn 报错 Command 'svn' not found, but ...

  5. apisix lua插件开发

    1. 怎么定义ngx自定义变量 ngx.var.custom_var nginx_config: # config for render the template to generate nginx. ...

  6. JDBC批处理Select语句

    本文由 ImportNew - 刘志军 翻译自 Javaranch.如需转载本文,请先参见文章末尾处的转载要求. 注:为了更好理解本文,请结合原文阅读 在上一篇文章中提到了PreparedStatem ...

  7. Liunx-Shell脚本

    shell可以理解为对命令行的一个解释器,命令行输入命令,shell执行,linux系统输出结果 1. shell脚本格式 开头: #!/bin/bash #!告诉系统其后路径所指定的程序即是解释此脚 ...

  8. python之日常开发常用库

    1. 配置文件解析(configobj) pip install configobj 基本使用: 配置文件 [server] name = zbj port = 9000 [home] # 注释 ar ...

  9. 揭秘UGO SQL审核功能4大特性,让业务平滑迁移至GaussDB

    业务挑战 数据库是企业应用系统的核心,SQL作为数据库查询.更新等操作的标准语言,重要性不言而喻.然而在实际的SQL开发过程中,也面临着诸多挑战: 数据库应用开发人员的SQL能力良莠不齐,经常写出不符 ...

  10. Echarts 坐标轴

    1.坐标轴组件配置项总览 坐标轴分为x轴和y轴,操作这两个轴的字段分别为xAxis和yAxis var option = { xAxis:{ name:"月份", axisTick ...