文章目录

  • 插值问题:Interpolation.
  • 插值多项式唯一性.
  • 拉格朗日插值法.
    • 线性(一次)插值.
    • 二次插值.
    • nnn 次插值.
    • 插值余项.
  • 碎碎念.

插值问题:Interpolation.

  • 已知函数 f(x)f(x)f(x) 在区间 [a,b][a,b][a,b] 上 n+1n+1n+1 个相异点 a≤x0<x1<...<xn≤ba≤x_0<x_1<...<x_n≤ba≤x0​<x1​<...<xn​≤b 处的函数值为 f(x0),f(x1),...,f(xn)f(x_0),f(x_1),...,f(x_n)f(x0​),f(x1​),...,f(xn​),如果存在一个函数 S(x)S(x)S(x) 满足 S(xi)=f(xi),i=0,1,2,...,nS(x_i)=f(x_i),i=0,1,2,...,nS(xi​)=f(xi​),i=0,1,2,...,n,则称函数 S(x)S(x)S(x) 为 f(x)f(x)f(x) 在点 xi,i=0,1,2,...,nx_i,i=0,1,2,...,nxi​,i=0,1,2,...,n 处的插值函数
  • 相应地,f(x)f(x)f(x) 为被插值函数,xix_ixi​ 为插值节点,[a,b][a,b][a,b] 为插值区间,求解插值函数 S(x)S(x)S(x) 的方法统称为插值法。
  • 一般而言,插值函数 S(x)S(x)S(x) 和原函数 f(x)f(x)f(x) 之间总是会存在一定误差的,误差函数 R(x)=f(x)−S(x)R(x)=f(x)-S(x)R(x)=f(x)−S(x) 被称作插值余项

初次接触余项概念是学习泰勒展开,使用高阶导数组合逼近原函数,熟悉的有皮亚诺余项、拉格朗日余项。泰勒展开的理念表明可以基于多项式来逼近光滑函数。

  • 插值函数可以用于计算原函数 f(x)f(x)f(x) 的函数值、导数值、数值积分和数值微分等一系列近似计算。满足插值条件的插值函数有多种形式,常见的有多项式、有理分式、三角函数和指数函数。多项式(分段多项式)由于其计算简单的优势,在工程应用中备受青睐,例如Bezier曲线和B-样条曲线。
  • 当插值函数是次数不超过 nnn 次的多项式 Pn(x)=∑i=0naixiP_n(x)=\sum^n_{i=0}a_ix^iPn​(x)=∑i=0n​ai​xi 时,称其为 f(x)f(x)f(x) 的 nnn 次插值多项式

插值多项式唯一性.

  • 定理】已知函数 f(x)f(x)f(x) 在区间 [a,b][a,b][a,b] 上 n+1n+1n+1 个相异点 a≤x0<x1<...<xn≤ba≤x_0<x_1<...<x_n≤ba≤x0​<x1​<...<xn​≤b 处的函数值 f(xi),i=0,1,2,...,nf(x_i),i=0,1,2,...,nf(xi​),i=0,1,2,...,n,则存在唯一的不超过 nnn 次的多项式 Pn(x)=∑i=0naixiP_n(x)=\sum^n_{i=0}a_ix^iPn​(x)=∑i=0n​ai​xi 使得 Pn(xi)=f(xi),i=0,1,2,...,nP_n(x_i)=f(x_i),i=0,1,2,...,nPn​(xi​)=f(xi​),i=0,1,2,...,n.
  • 证明】由插值函数的定义可知 Pn(xi)=f(xi),i=0,1,2,...,nP_n(x_i)=f(x_i),i=0,1,2,...,nPn​(xi​)=f(xi​),i=0,1,2,...,n 必须成立,即 a0xi0+a1xi1+a2xi2+...+anxin=f(xi),i=0,1,2,...,na_0x_i^0+a_1x_i^1+a_2x_i^2+...+a_nx_i^n=f(x_i),i=0,1,2,...,na0​xi0​+a1​xi1​+a2​xi2​+...+an​xin​=f(xi​),i=0,1,2,...,n.
  • 其系数矩阵的行列式是著名的范德蒙德行列式(注意此处是 n+1n+1n+1 阶),值为 ∏0≤j<i≤n(xi−xj)\prod_{0≤j<i≤n}(x_i-x_j)0≤j<i≤n∏​(xi​−xj​)
  • 由于插值节点互异,所以系数行列式不为零,该方程组有唯一解,即插值多项式 Pn(x)P_n(x)Pn​(x) 存在且唯一

拉格朗日插值法.

  • 上部分证明过程中使用待定系数法也能够解出插值多项式的系数,但其问题在于计算量过大,并且当插值节点分布密集时,其稀疏矩阵是病态的,数值求解不稳定。

线性(一次)插值.

  • 如果只有一个插值节点 f(x0)f(x_0)f(x0​),那么得到的插值多项式即为常函数 Pn(x)=f(x0)P_n(x)=f(x_0)Pn​(x)=f(x0​).
  • 一次插值】已知函数 f(x)f(x)f(x) 在区间 [a,b][a,b][a,b] 上两点 x0,x1x_0,x_1x0​,x1​ 处的函数值 y0,y1y_0,y_1y0​,y1​,求插值函数 L1L_1L1​ 满足 L1(x0)=y0,L1(x1)=y1L_1(x_0)=y_0,L_1(x_1)=y_1L1​(x0​)=y0​,L1​(x1​)=y1​.
  • 实际上此时的插值多项式就是过点 (x0,y0),(x1,y1)(x_0,y_0),(x_1,y_1)(x0​,y0​),(x1​,y1​) 的直线,其函数式为 L1(x)=x−x1x0−x1⋅y0+x−x0x1−x0⋅y1L_1(x)=\frac{x-x_1}{x_0-x_1}·y_0+\frac{x-x_0}{x_1-x_0}·y_1L1​(x)=x0​−x1​x−x1​​⋅y0​+x1​−x0​x−x0​​⋅y1​.
  • 记 l0(x)=x−x1x0−x1,l1(x)=x−x0x1−x0l_0(x)=\frac{x-x_1}{x_0-x_1},l_1(x)=\frac{x-x_0}{x_1-x_0}l0​(x)=x0​−x1​x−x1​​,l1​(x)=x1​−x0​x−x0​​,那么 L1(x)=l0(x)⋅y0+l1(x)⋅y1L_1(x)=l_0(x)·y_0+l_1(x)·y_1L1​(x)=l0​(x)⋅y0​+l1​(x)⋅y1​ 称为 f(x)f(x)f(x) 在 [a,b][a,b][a,b] 上的Lagrange型线性插值函数,其中 l0(x),l1(x)l_0(x),l_1(x)l0​(x),l1​(x) 分别是点 x0,x1x_0,x_1x0​,x1​ 上的Lagrange插值基函数
  • 可以发现 l0(x),l1(x)l_0(x),l_1(x)l0​(x),l1​(x) 都是线性函数,并且具有以下性质:①l0(x)+l1(x)=1①~l_0(x)+l_1(x)=1① l0​(x)+l1​(x)=1;②lk(xi)=δki②~l_k(x_i)=\delta_{ki}② lk​(xi​)=δki​,其中 δ\deltaδ 是Kronecker符号
  • 拉格朗日插值函数可以视为节点函数值 yiy_iyi​ 对节点插值基函数 li(x)l_i(x)li​(x) 的线性组合。

二次插值.

  • 已知函数 f(x)f(x)f(x) 在区间 [a,b][a,b][a,b] 上三点 x0,x1,x2x_0,x_1,x_2x0​,x1​,x2​ 处的函数值 y0,y1,y2y_0,y_1,y_2y0​,y1​,y2​,求插值函数 L2L_2L2​ 满足 L2(xi)=yiL_2(x_i)=y_iL2​(xi​)=yi​.
  • 令 L2(x)=∑i=02li(x)⋅yiL_2(x)=\sum^2_{i=0}l_i(x)·y_iL2​(x)=∑i=02​li​(x)⋅yi​,由于 lk(xi)=δkil_k(x_i)=\delta_{ki}lk​(xi​)=δki​,所以对于 l0(x)l_0(x)l0​(x) 而言,它是一个以 x1,x2x_1,x_2x1​,x2​ 为零点的二次函数 C(x−x1)(x−x2)C(x-x_1)(x-x_2)C(x−x1​)(x−x2​),又 l0(x0)=1l_0(x_0)=1l0​(x0​)=1,可得 C=[(x0−x1)(x0−x2)]−1C=[(x_0-x_1)(x_0-x_2)]^{-1}C=[(x0​−x1​)(x0​−x2​)]−1,同理可以计算出 l1(x),l2(x)l_1(x),l_2(x)l1​(x),l2​(x).
  • 观察 l0(x)=(x−x1)(x−x2)(x0−x1)(x0−x2)=∏j=0,j≠02x−xjx0−xjl_0(x)=\frac{(x-x_1)(x-x_2)}{(x_0-x_1)(x_0-x_2)}=\prod^2_{j=0,j≠0}\frac{x-x_j}{x_0-x_j}l0​(x)=(x0​−x1​)(x0​−x2​)(x−x1​)(x−x2​)​=∏j=0,j​=02​x0​−xj​x−xj​​ 以及 l1(x),l2(x)l_1(x),l_2(x)l1​(x),l2​(x) 的表达式,可以统一写为 lk(x)=∏j=0,j≠k2x−xjxk−xjl_k(x)=\prod^2_{j=0,j≠k}\frac{x-x_j}{x_k-x_j}lk​(x)=∏j=0,j​=k2​xk​−xj​x−xj​​,所以: L2(x)=∑k=02(∏j=0,j≠k2x−xjxk−xj)L_2(x)=\sum^2_{k=0}(\prod^2_{j=0,j≠k}\frac{x-x_j}{x_k-x_j})L2​(x)=k=0∑2​(j=0,j​=k∏2​xk​−xj​x−xj​​)

nnn 次插值.

  • 回到最一般的情况,已知函数 f(x)f(x)f(x) 在区间 [a,b][a,b][a,b] 上 n+1n+1n+1 个相异点 a≤x0<x1<...<xn≤ba≤x_0<x_1<...<x_n≤ba≤x0​<x1​<...<xn​≤b 处的函数值为 yi,i=0,1,2,...,ny_i,i=0,1,2,...,nyi​,i=0,1,2,...,n.
  • Ln(x)=∑k=0n(∏j=0,j≠knx−xjxk−xj)L_n(x)=\sum^n_{k=0}(\prod^n_{j=0,j≠k}\frac{x-x_j}{x_k-x_j})Ln​(x)=k=0∑n​(j=0,j​=k∏n​xk​−xj​x−xj​​)

插值余项.

  • 定理】拉格朗日插值法得到的插值多项式 Ln(x)L_n(x)Ln​(x) 产生的误差 Rn(x)=f(x)−Ln(x)=f(n+1)(ξ)(n+1)!ωn+1(x)R_n(x)=f(x)-L_n(x)=\frac{f^{(n+1)(\xi)}}{(n+1)!}\omega_{n+1}(x)Rn​(x)=f(x)−Ln​(x)=(n+1)!f(n+1)(ξ)​ωn+1​(x).
  • 其中 f(x)f(x)f(x) 在 [a,b][a,b][a,b] 上具有 nnn 阶连续导数,并且在 (a,b)(a,b)(a,b) 内 n+1n+1n+1 阶可导,ξ∈(a,b)\xi∈(a,b)ξ∈(a,b),ωn+1(x)=∏i=0n(x−xi)\omega_{n+1}(x)=\prod^n_{i=0}(x-x_i)ωn+1​(x)=∏i=0n​(x−xi​).
  • 证明】根据 Rn(x)=f(x)−Ln(x)R_n(x)=f(x)-L_n(x)Rn​(x)=f(x)−Ln​(x),当 x=xi,i=0,1,2,...,nx=x_i,i=0,1,2,...,nx=xi​,i=0,1,2,...,n 时 Rn(xi)=0R_n(x_i)=0Rn​(xi​)=0,所以 Rn(x)R_n(x)Rn​(x) 有 n+1n+1n+1 个零点,可以设 Rn(x)=K(x)(x−x0)(x−x1)...(x−xn)R_n(x)=K(x)(x-x_0)(x-x_1)...(x-x_n)Rn​(x)=K(x)(x−x0​)(x−x1​)...(x−xn​),其中 K(x)K(x)K(x) 待定。
  • 构造辅助函数 ϕ(t)=Rn(t)−K(x)∏i=0n(t−xi)\phi(t)=R_n(t)-K(x)\prod^n_{i=0}(t-x_i)ϕ(t)=Rn​(t)−K(x)∏i=0n​(t−xi​),当 t=xt=xt=x 时可以发现 ϕ(x)=0\phi(x)=0ϕ(x)=0,另外 t=xit=x_it=xi​ 时 ϕ(xi)=0\phi(x_i)=0ϕ(xi​)=0,因此 ϕ(t)\phi(t)ϕ(t) 有 n+2n+2n+2 个零点。

罗尔定理】函数 f(x)f(x)f(x) 满足在区间 [a,b][a,b][a,b] 连续,(a,b)(a,b)(a,b) 可导并且 f(a)=f(b)f(a)=f(b)f(a)=f(b) 时,一定存在 ξ∈(a,b)\xi∈(a,b)ξ∈(a,b) 使得 f′(ξ)=0f'(\xi)=0f′(ξ)=0.

  • 已知函数 ϕ(t)\phi(t)ϕ(t) 有 n+2n+2n+2 个零点,将其按从小到大的顺序排列并重新编号为 t0,t1,...,tn+1t_0,t_1,...,t_{n+1}t0​,t1​,...,tn+1​. 考察区间 [t0,t1][t_0,t_1][t0​,t1​],根据罗尔定理,存在 ξ0∈(t0,t1)\xi_0∈(t_0,t_1)ξ0​∈(t0​,t1​) 使得 ϕ′(ξ0)=0\phi'(\xi_0)=0ϕ′(ξ0​)=0. 同理可以得到另外 nnn 个 ϕ′(t)\phi'(t)ϕ′(t) 的零点。
  • 对 ϕ′(t)\phi'(t)ϕ′(t) 继续使用罗尔定理,可以得到 ϕ′′(t)\phi''(t)ϕ′′(t) 的 n−1n-1n−1 个零点,第 n+1n+1n+1 次迭代后得到以下结论:存在 ξ∈(a,b)\xi∈(a,b)ξ∈(a,b) 使得 ϕ(n+1)(ξ)=0\phi^{(n+1)}(\xi)=0ϕ(n+1)(ξ)=0.
  • 由于 ϕ(t)=Rn(t)−K(x)∏i=0n(t−xi)=f(x)−Ln(x)−K(x)∏i=0n(t−xi)\phi(t)=R_n(t)-K(x)\prod^n_{i=0}(t-x_i)=f(x)-L_n(x)-K(x)\prod^n_{i=0}(t-x_i)ϕ(t)=Rn​(t)−K(x)∏i=0n​(t−xi​)=f(x)−Ln​(x)−K(x)∏i=0n​(t−xi​),对其三个部分求 n+1n+1n+1 阶导数,f(x)f(x)f(x) 部分求导为 f(n+1)(x)f^{(n+1)}(x)f(n+1)(x);Ln(x)L_n(x)Ln​(x) 为 nnn 次多项式,所以其 n+1n+1n+1 阶导数为 000;第 333 部分为 n+1n+1n+1 次多项式,求导结果为 K(x)⋅(n+1)!K(x)·(n+1)!K(x)⋅(n+1)!.
  • 综上所述,得 ϕ(n+1)(ξ)=f(n+1)(ξ)−(n+1)!⋅K(x)=0\phi^{(n+1)}(\xi)=f^{(n+1)}(\xi)-(n+1)!·K(x)=0ϕ(n+1)(ξ)=f(n+1)(ξ)−(n+1)!⋅K(x)=0,解得 K(x)=f(n+1)(ξ)(n+1)!K(x)=\frac{f^{(n+1)(\xi)}}{(n+1)!}K(x)=(n+1)!f(n+1)(ξ)​,因此 Rn(x)=K(x)∏i=0n(x−xi)=f(n+1)(ξ)(n+1)!⋅ωn+1(x)R_n(x)=K(x)\prod^n_{i=0}(x-x_i)=\frac{f^{(n+1)(\xi)}}{(n+1)!}·\omega_{n+1}(x)Rn​(x)=K(x)∏i=0n​(x−xi​)=(n+1)!f(n+1)(ξ)​⋅ωn+1​(x),拉格朗日插值法余项得证。

碎碎念.

  • 如果将 f(x)f(x)f(x) 和 Ln(x)L_n(x)Ln​(x) 分别视为真实模型和假设模型,那么 Rn(x)R_n(x)Rn​(x) 可以视为误差。从其表达式可以看出 Rn(x)R_n(x)Rn​(x) 并不是随着插值节点数量的增加单调减小。
  • 一般来说对于拉格朗日插值法而言,增加插值节点的个数可以减小余项大小,但回忆前面部分从线性插值、二次插值到 nnn 次插值的推导过程可以发现,每次增加插值节点,插值基函数都需要重新计算,有很多冗余的计算量。

【NA】拉格朗日插值法相关推荐

  1. [模型]拉格朗日插值法

    文章目录 1 拉格朗日插值法的适用场景 2 拉格朗日插值法的基本原理 3 拉格朗日插值多项式的构建 5 拉格朗日插值法补全数据实现 5.1 Python 实现 6 插值效果验证 7 拉格朗日插值法算法 ...

  2. Python实现拉格朗日插值法

    已知sinx的一组x,y对应关系,用拉格朗日插值法估计sin(0.3367)的值. x x0.32 0.34 0.36 y 0.314567 0.333487 0.352274 / / class I ...

  3. 拉格朗日插值法(Lagrange插值法)

    插值介绍: 在离散数据的基础上补插连续函数,使得这条连续曲线通过全部给定的离散数据点. 插值是离散函数逼近的重要方法,利用它可通过函数在有限个点处的取值状况,估算出函数在其他点处的近似值. 这是百度百 ...

  4. 2021-01-07 matlab数值分析  插值法 拉格朗日插值法 牛顿插值法

    matlab数值分析  插值法 1 拉格朗日插值法 function yh=lagrange(x,y,xh) n=length(x); m=length(xh); yh=zeros(1,m); for ...

  5. 拉格朗日c语言实验报告,拉格朗日插值法C语言的实现(实验报告)(9页)-原创力文档...

    韩山师范学院 C语言程序设计 实验名称: 实验一:拉格朗日插值法C语言的实现 日期: 2011-9-19 任课教师: 赖国明 专业: 数学与应用数学 学号: 2009111437 姓名: 郑永锋 [实 ...

  6. 拉格朗日插值法matlab上机,拉格朗日插值法使用MATLAB做的例题

    <拉格朗日插值法使用MATLAB做的例题>由会员分享,可在线阅读,更多相关<拉格朗日插值法使用MATLAB做的例题(2页珍藏版)>请在人人文库网上搜索. 1.一物体廓线数据如下 ...

  7. 拉格朗日插值法(Lagrange)

    拉格朗日插值法是基于基函数的插值方法,插值多项式可以表示为: 其中称为 i 次基函数 Matlab中拉格朗日插值法函数为:Language 功能:求已知点数据点的拉格朗日多项式 调用格式:f=Lagr ...

  8. 【BZOJ3453】XLkxc [拉格朗日插值法]

    XLkxc Time Limit: 20 Sec  Memory Limit: 128 MB [Submit][Status][Discuss] Description 给定 k,a,n,d,p f( ...

  9. 缺失值处理 - 拉格朗日插值法 - Python代码

    目录 缺失值处理 拉格朗日差值法的理论基础 拉格朗日插值法代码实现 其他数据预处理方法 缺失值处理 处理缺失值常用的办法可分为三类:删除记录.数据插补.不处理. 其中常见的数据插补法有: 如果通过删除 ...

最新文章

  1. 云计算时代,你真的懂 Docker 吗?
  2. Sitecake – 可视化编辑,所见即所得的 CMS
  3. [已经完美解决]IE下 'document.getElementById(...)' is null
  4. linux文件本编辑,Linux就该这么学 -- 命令 -- 文本文件编辑命令
  5. centos java mvn_Linux(centos7)安装JDK1.8与maven
  6. JS将字符串yyyyMMddHHmmss转Date
  7. P1494 [国家集训队]小Z的袜子/莫队学习笔记(误
  8. 浅谈-国标GB28181协议抓包内容分析(一)
  9. linux 怎么在pe下安装驱动程序,【教程】再谈“万能驱动7在PE下安装驱动”功能...
  10. 服务器装系统鼠标键盘用不了怎么办,教你重装系统鼠标键盘不能用怎么解决?...
  11. AutoCAD快速入门(二十九):视口
  12. sdut - 英文金曲大赛
  13. 获取执行程序的原路径(绝对路径)
  14. Excel的类、方法和Excel操作
  15. 我们该如何全面提高程序的可读性
  16. 怎么才能做好一套软件系统
  17. HZ 和 usleep最小睡眠时间(低精度定时器)
  18. 贴片电阻0603、1206之间的区别是什么
  19. 实在智能:RPA领域如何使用CRM实现业务精益化管理
  20. Web实现:背景颜色渐变色

热门文章

  1. Linux修改用户名
  2. 【龙芯1B】:龙芯1B200字号修改程序(基于龙芯1B200)
  3. Nginx 指定域名(或子域名)和网站绑定
  4. 用Python绘制诱人的桑基图,一眼看透熬夜和狗粮的秘密...
  5. 【Spring】IDEA中创建Spring项目
  6. 「行业/市场分析」简说
  7. 各行业分析研究报告 入口汇总
  8. 各种图片格式综述(转载)
  9. 电脑发到,电脑发送到手机的文件在哪里
  10. 计算机教学学期小结,学年第一学期信息技术教学工作总结