首页 > 其他分享 >拉格朗日插值学习笔记

拉格朗日插值学习笔记

时间:2024-02-02 11:13:22浏览次数:28  
标签:拉格朗 prod 插值 dfrac sum 笔记 times aligned

拉格朗日插值

定义

给定一个多项式函数过点 \((x_i,y_i)\),求出这个多项式函数的在 \(x=k\) 时的取值。

公式

\[f(k)=\sum_{i=0}^ny_i\prod_{j\not=i}\dfrac{k-x_j}{x_i-x_j} \]

时间复杂度 \(O(n^2)\)

横坐标连续的拉格朗日插值

在横坐标连续的情况下,可以做到 \(O(n)\) 插值。

\[\begin{aligned} f(k)&=\sum_{i=0}^ny_i\prod_{j\not=i}\dfrac{k-x_j}{x_i-x_j}\\ &=\sum_{i=0}^ny_i\prod_{j\not=i}\dfrac{k-j}{i-j} \end{aligned} \]

不难得到累乘的分子为

\[\begin{aligned} \prod_{j\not=i}(k-j)&=\dfrac{\prod\limits_{j=0}^n(k-j)}{k-i} \end{aligned} \]

若设 \(pre_i=\prod_{j<i}(k-j),pre_i=\prod_{j>i}(k-j)\),那么可得

\[\begin{aligned} \prod_{j\not=i}(k-j)&=\dfrac{\prod\limits_{j=0}^n(k-j)}{k-i}\\ &=pre_i\times suf_i \end{aligned} \]

分母的累乘可拆为

\[\begin{aligned} \prod_{j\not=i}(i-j)&=(-1)^{n-i}\times\prod_{j<i}(i-j)\times\prod_{j>i}(j-i)\\ &=(-1)^{n-i}\times i!\times(n-i)! \end{aligned} \]

所以可得

\[\begin{aligned} f(k)&=\sum_{i=0}^ny_i\dfrac{pre_i\times suf_i}{(-1)^{n-i}\times i!\times(n-i)!} \end{aligned} \]

拉格朗日插值求系数

先提出常数部分

\[a_i=\dfrac{y_i}{\prod\limits_{j\not=i}x_i-x_j} \]

可以先 \(O(n^2)\) 求出每一个 \(a_i\)。

然后求一个多项式 \(g(k)=\prod_{i=0}^n(k-x_i)\),可得递推式为

\[[k^i]g=[k^{i-1}]g-x_i[k^i]g \]

注意从大到小递推。

所以可得

\[f(x)=\sum_{i=0}^na_i\times\dfrac{g(k)}{k-x_i} \]

考虑快速求出 \(\dfrac{g(k)}{k-x_i}\)。设 \(h(k)=\dfrac{g(k)}{k-x_i}\),那么有 \((k-x_i)h(k)=g(k)\)。所以有递推式

\[[k^i]g=[k^{i-1}]h-x_i[k^i]h \]

移项得

\[[k^i]h=\dfrac{[k^i]g-[k^{i-1}]h}{-x_i} \]

于是可以求出

\[f(k)=\sum_{i=0}^na_i\times h(k) \]

时间复杂度为 \(O(n^2)\)。

标签:拉格朗,prod,插值,dfrac,sum,笔记,times,aligned
From: https://www.cnblogs.com/liuir/p/18002785

相关文章

  • 萌新的多项式学习笔记(板子)
    萌新的多项式学习笔记(板子)详细讲解FFT直接放板子structcp{ doublex,y; cp(doublexx=0,doubleyy=0){x=xx,y=yy;}};intr[maxn];cpoperator+(constcp&a,constcp&b){returncp(a.x+b.x,a.y+b.y);}cpoperator-(constcp&a,constcp&b){returncp(a.x-b.x,a......
  • [学习笔记] JavaScript中字符串的Slice()方法
    slice方法是对字符串进行切割/截取的一种方法。string.slice(index1,index2)其中:string为字符串名;index1为数字,意为字符串从第X个字符开始截取,如为1,则从字符串第1个字符开始截取。同时该数可为负数,当设为负数时则是从倒数第X个字符开始截取(但仍旧是向最后一个字符的方......
  • <学习笔记> 二项式反演
    二项式反演证明我们设\(g(x)\)为任意\(x\)个集合的交集的大小,\(f(x)\)表示任意\(x\)个集合补集的交集大小。首先有(组合数学6.2)\[|\overline{S_1}\cap\overline{S_2}\cap...\cap\overline{S_{n-1}}\cap\overline{S_n}|=|U|-|{S_1}|-|{S_2}|-...+(-1)^n\times|{S......
  • [数论学习笔记01]完系/同余最短路/费马小定理/扩欧/中国剩余定理
    #[数论学习笔记01]完系/同余最短路/费马小定理/扩欧/中国剩余定理###每日蒟蒻小故事(1/1)蒟蒻带了一本崭新的笔记本到S组.他发现这一节课居然在学习数论."听不懂,求讲解!"蒟蒻说.大佬邪魅一笑,并未理会.蒟蒻只能一边听着老师的讲解,一边努力地记着笔记."什么是完全剩余系......
  • [算法学习笔记02]分块应用
    #[算法学习笔记02]分块应用###每日蒟蒻小故事(1/1)蒟蒻考完CSP回到S1,开始(和S2一起)新一轮的S组学习。第一周,学校学习的内容是分块应用。蒟蒻尝试听懂,并听懂了$\huge\frac{1}{3}$的内容。被五年级小朋友吊打的蒟蒻想学懂分块应用。“所以……什么是分块应用呢?”###什......
  • [算法学习笔记01]线段树
    #[算法学习笔记01]线段树###每日蒟蒻小故事(1/1)蒟蒻刚刚升到S组,发现S组正在学习线段树Ⅲ.蒟蒻并不知道什么是线段树.蒟蒻十分害怕,向大佬询问什么是线段树.大佬邪魅一笑,并未解释.于是可怜的蒟蒻什么也听不懂,只得在洛谷和OIWIKI上自学线段树.“所以什么是线段树?”###什么......
  • Go语言精进之路读书笔记第12条——使用复合字面值作为初值构造器
    有些时候,零值并非最好的选择,我们有必要为变量赋予适当的初值以保证其后续以正确的状态参与业务流程计算,尤其是Go语言中的一些复合类型的变量。Go提供了复合字面值(compositeliteral)语法可以作为复合类型变量的初值构造器。Go语言中的复合类型包括结构体、数组/切片和map。Go提供......
  • Amway安利笔记
    336成功密码:三个本:本钱 本事 本人。做生意需要本钱,做安利不需要本钱和投资,钱是安利公司出。钱不自付。本事有人教,谁教?老师教。本人只要学习就可以了。外行通过学习成为内行。只要变为内行做事才会成功。三个值得(诱惑):①收入不受限制;②生活方式自由;③有人教有人帮换个......
  • Go语言精进之路读书笔记第11条——尽量定义零值可用的类型
    11.1Go类型的零值Go语言规范中关于变量默认值的描述:当通过声明或调用new为变量分配存储空间,或者通过复合文字字面量或调用make创建新值,且不提供显式初始化时,Go会为变量或值提供默认值。Go规范定义的内置原生类型的默认值(零值):所有整型类型:0浮点类型:0.0布尔类型:false字符......
  • Go语言精进之路读书笔记第9条——使用无类型常量简化代码
    9.1Go常量溯源绝大多数情况下,Go常量在声明时并不显式指定类型,也就是说使用的是无类型常量(untypedconstant)。9.2有类型常量带来的烦恼如果有类型常量与变量的类型不同,那么混合运算的求值操作会报错:typemyIntintconstnmyInt=13//constmint=n+5//编译器错误提......