Diary & Note - 两个惊喜
我们有单位根反演:
\]
我们有 CRT:
\Leftrightarrow x\equiv \sum_{i=1}^nr_i\cdot\operatorname{inv}(M/m_i,m_i)\cdot M/m_i\pmod M.
\]
我们还有 Lagrange 插值:
\]
然后我宣称 CRT 才是老大!
从单位根反演开始,其实它指出
\]
(左侧在组合意义上与原式左侧相等是显然的,就不证了。)它是如何实现这一过程的?注意到有
\]
然后浅代数基本定理一下就是
\]
如果我们求出 \(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 的话……
\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)\) 的点值。带入插值公式:
\]
对比上面 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)\) 就是
\]
为什么插出 \(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 - 两个惊喜的更多相关文章
- [翻译]魅族的M1 Note是十分廉价(dirt-cheap)的iphone5C增强版
Meizu's M1 Note is a dirt-cheap iPhone 5c on steroids 魅族的M1 Note是十分廉价(dirt-cheap)的ihone5C增强版 While m ...
- Oracle库Delete删除千万以上普通堆表数据的方法
需求:Oracle数据库delete删除普通堆表千万条历史记录. 直接删除的影响: 1.可能由于undo表空间不足从而导致最终删除失败的问题: 2.可能导致undo表空间过度使用,影响到其他用户正常操 ...
- SVN学习之参数定义及设置
http://jackyrong.iteye.com/blog/238835 conf目录中打开svnserve.conf ,去掉注释,搞成如下这样 [general] anon-access = r ...
- 《锋利的Jquery第二版》读书笔记 第三章
DOM操作的分类 1.DOM Core不专属JavaScript,任何一种支持DOM的程序设计语言都可以使用它,也可以处理XML等标记语言编写出来的文档,getElementById().setAtt ...
- SVN配置文件详解
本章将详细介绍前一章所涉及的两个配置文件, svnserve.conf 和 authz.conf,通过对配置逐行的描述,来阐明其中的一些细节含义.除此之外的其他配置.安装等内容,不是本文重点,读者若有 ...
- threejs里面的vector3源码解析
// File:src/math/Vector3.js /** * @author mrdoob / http://mrdoob.com/ * @author *kile / http://kile. ...
- mysql数据库的基本操作:索引、视图,导入和导出,备份和恢复
1.索引: 索引是一种与表有关的结构,它的作用相当于书的目录,可以根据目录中的页码快速找到所需的内容. 当表中有大量记录时,若要对表进行查询,没有索引的情况是全表搜索:将所有记录一一取出,和查询条件进 ...
- C 语言 符合运算符
复合赋值 5个算术运算符 + - * / % 可以和赋值运算符 = 结合起来形成符合运算符 += -= *= /= %= total += 5 total = total + 5 note:两个运算符 ...
- OJ题解记录计划
容错声明: ①题目选自https://acm.ecnu.edu.cn/,不再检查题目删改情况 ②所有代码仅代表个人AC提交,不保证解法无误 E0001 A+B Problem First AC: 2 ...
- PHP之数组函数
php数组中的预定义变量 预定义常量 CASE_LOWER (integer) CASE_LOWER 用在array_change_key_case()中将数组的键名转换为小写字母.这也是array_ ...
随机推荐
- PHP调用Python无返回或提示No Module
问题:自己通过命令行执行python正常,但通过php调用就没有反应.解决方法:1.首先检查一下php有没有执行权限,简单粗暴的:sudo chmod 777 xxx.php2.Python如果有中文 ...
- 关于C++当中的“模板函数”
本人C++草鸟,在工作当中遇到了这个问题,就简单做个记录.
- dateFormater:格式化时间
function dateFormater(formater, t){ let date = t ? new Date(t) : new Date(), Y = date.getFullYear() ...
- GPU 环境搭建指南:使用 GPU Operator 加速 Kubernetes GPU 环境搭建
本文主要分享如何使用 GPU Operator 快速搭建 Kubernetes GPU 环境. 1. 概述 上一篇文章 GPU 使用指南:如何在裸机.Docker.K8s 等环境中使用 GPU 分享了 ...
- 轻松上云怎么操作?IoT_CLOUD之中移OneNET
最近来了很多新朋友,也经常被问:可以多讲些云平台的操作吗?当然可以!文末留言你想要了解的云平台,优先安排~ 接下来,本文将以Air780E+LuatOS作为示例,教你使用合宙IoT_CLOUD连 ...
- Windows远程登录到VirtualBox安装的Ubuntu11.10
一.环境 本地:Windows xp 虚拟机:VirtualBox 虚拟机的操作系统:Linux-Ubuntu11.10 二.目的 在Windows下通过SecureCRT(putty也可)远程登录到 ...
- 通向架构师的道路(第二十四天)之Oracle性能调优-朝拜先知之旅
前言 这次,我们将在Linux下来动手完成Oracle数据库的安装与使用. Oracle本身是可以免费下载的包括 它的企业版以及被它收购的Weblogic和Sun中的几乎任何东西你都可以拿来下载和使用 ...
- DSPf28335 --工程模版相关文件
创建工程需要的两个文件 DSP2833x_common 1.cmd 下图中的两个文件(由TI公司提供的) 1.28335_RAM_lnk.cmd :程序下载到RAM中进行调试和仿真所使用的启动文件. ...
- Python数据存储之shelve和dbm
一.shelve 和 dbm 的介绍 shelve 和 dbm 都是 python 自带的数据库管理模块,可以用于持久化存储和检索 python 中的对象. 虽然这两个模块的本质都是建立 key-va ...
- nvm node版本管理
1.说明 NVM是NODE JS的版本管理工具,可以安装nodejs切换nodejs版本. 2.安装NVM https://github.com/coreybutler/nvm-windows/rel ...