拉格朗日插值公式详解

article/2025/10/24 12:35:30

一.线性插值(一次插值)
    已知函数f(x)在区间[xk ,xk+1 ]的端点上的函数值yk =f(xk ), yk+1 = f(xk+1 ),求一个一次函数y=P1 (x)使得yk =f(xk ),yk+1 =f(xk+1 ), 其几何意义是已知平面上两点(xk ,yk ),(xk+1 ,yk+1 ),求一条直线过该已知两点。

    1. 插值函数和插值基函数
由直线的点斜式公式可知: 

          

把此式按照 yk 和yk+1 写成两项:
          

          
并称它们为一次插值基函数。该基函数的特点如下表: 
          
从而
         P1 (x) = yk lk (x) + yk+1 lk+1 (x)

此形式称之为拉格朗日型插值多项式。其中, 插值基函数与yk 、yk+1 无关,而由插值结点xk 、xk+1所决定。一次插值多项式是插值基函数的线性组合, 相应的组合系数是该点的函数值yk 、yk+1 .

例1: 已知lg10=1,lg20=1.3010, 利用插值一次多项式求lg12的近似值。

解: f(x)=lgx,f(10)=1,f(20)=1.3010,设
          x0 =10 ,x1 =20 ,y0 =1 ,y1 =1.3010
则插值基函数为:
          
于是, 拉格朗日型一次插值多项式为:
          
故 :
          
即lg12 由lg10和lg20 两个值的线性插值得到,且具有两位有效数字(精确值lg12=1.0792).

    二.二次插值多项式
    已知函数y=f(x)在点xk-1 ,xk ,xk+1上的函数值yk-1 =f(xk-1 ),yk =f(xk ), yk+1 =f(xk+1 ), 求一个次数不超过二次的多项式P2(x), 使其满足,

             P2 (xk-1 )=yk-1 , P2 (xk )=yk , P2 (xk+1 )=yk+1 .

其几何意义为:已知平面上的三个点
             (xk-1 ,yk-1 ),(xk ,yk ),(xk+1 ,yk+1 ),

求一个二次抛物线, 使得该抛物线经过这三点。
    1.插值基本多项式
有三个插值结点xk-1 ,xk ,xk+1 构造三个插值基本多项式,要求满足:

(1) 基本多项式为二次多项式; (2) 它们的函数值满足下表: 
               
因为lk-1 (xk )= 0,lk-1 (xk+1 )=0, 故有因子(x-xk )(x-xk+1 ), 而其已经是一个二次多项式, 仅相差一个常数倍, 可设
              lk-1 (x)=a(x-xk )(x-xk+1 ),
又因为
               lk-1 (xk-1 )=1 ==> a(xk-1 -xk )(xk-1 -xk+1 )=1
得 
                 


从而

同理得

基本二次多项式见右上图(点击按钮“显示Li”)。

    2. 拉格朗日型二次插值多项式
由前述, 拉格朗日型二次插值多项式:
                P2 (x)=yk-1 lk-1 (x)+yk lk (x)+yk+1 lk+1 (x),P2 (x)
是三个二次插值多项式的线性组合,因而其是次数不超过二次的多项式,且满足:
                P2 (xi )=yi , (i=k-1,k,k+1) 。
例2 已知:
                xi         10      15             20

                yi=lgxi    1    1.1761         1.3010

利用此三值的二次插值多项式求lg12的近似值。
解:设x0 =10,x1 =15,x2 =20,则: 
      
故:
      
      

所以

      
7利用三个点进行抛物插值得到lg12的值,与精确值lg12=1.0792相比,具有3位有效数字,精度提高了。

    三、拉格朗日型n次插值多项式
已知函数y=f(x)在n+1个不同的点x0 ,x1 ,…,x2 上的函数值分别为

y0 ,y1 ,…,yn ,求一个次数不超过n的多项式Pn (x),使其满足:

         Pn (xi )=yi , (i=0,1,…,n),

即n+1个不同的点可以唯一决定一个n次多项式。
    1. 插值基函数
过n+1个不同的点分别决定n+1个n次插值基函数
          l0 (x),l1 (x),…,ln (X)
每个插值基本多项式li (x)满足:

   (1) li (x)是n次多项式;

   (2) li (xi )=1,而在其它n个li (xk )=0 ,(k≠i)。

由于li (xk )=0 ,(k≠i), 故有因子: 

         (x-x0 )…(x-xi-1 )(x-xi+1 )…(x-xn )

因其已经是n次多项式,故而仅相差一个常数因子。令:
          li (x)=a(x-x0 )…(x-xi-1 )(x-xi+1 )…(x-xn )

由li (xi )=1,可以定出a, 进而得到: 

          

2.n次拉格朗日型插值多项式Pn (x)

Pn (x)是n+1个n次插值基本多项式l0 (x),l1 (x),…,ln (X)的线性组合,相应的组合系数是y0 ,y1 ,…,yn。即:

          Pn (x)=y0 l0 (x)+y1 l1 (x)+…+yn ln (x),

从而Pn (x)是一个次数不超过n的多项式,且满足

          Pn (xi )=yi , (i=0,1,2,…,n).

    例3 求过点(2,0),(4,3),(6,5),(8,4),(10,1)的拉格朗日型插值多项式。
解 用4次插值多项式对5个点插值。
                 

   
所以
           

    四、拉格朗日插值多项式的截断误差
我们在[a,b]上用多项式Pn (x) 来近似代替函数f(x), 其截断误差记作 
      Rn (x)=f(x)-Pn (x)
当x在插值结点xi 上时Rn (xi )=f(xi )-P n(xi )=0,下面来估计截断误差:

定理1:设函数y=f(x)的n阶导数y(n) =f(n) (x)在[a,b]上连续,
     y(n+1) = f(n+1) (x)
在(a,b)上存在;插值结点为:
    a≤x0 <x1 <…<xn ≤b,
Pn (x)是n次拉格朗日插值多项式;则对任意x∈[a,b]有: 
       
其中ξ∈(a,b), ξ依赖于x:ωn+1 (x)=(x-x0 )(x-x1 )…(x-xn )

证明:由插值多项式的要求:
      Rn(xi )=f(xi )-Pn (xi )=0,(i=0,1,2,…,n);

      Rn (x)=K(x)(x-x0 )(x-x1 )…(x-xn )=K(x)ωn+1 (x)

其中K(x)是待定系数;固定x∈[a,b]且x≠xk ,k=0,1,2,…,n;作函数

       H(t)=f(t)-Pn (t)-K(x)(t-x0 )(t-x1 )…(t-xn )

则 H(xk )=0,(k=0,1,2,…,n), 且H(x)=f(x)-Pn (x)-Rn(x)=0, 所以,

H(t)在[a,b]上有n+2个零点,反复使用罗尔中值定理:存在ξ∈(a,b),


使; 因Pn (x)是n次多项式,故P(n+1) (ξ)=0, 而 

       ωn+1 (t)=(t-x0 )(t-x1 )…(t-xn )

是首项系数为1的n+1次多项式,故有

        
于是
        H(n+1) (ξ)=f(n+1)(ξ)-(n+1)!K(x)
得:
        
所以
        

设 , 则:

        
易知,线性插值的截断误差为:
        
二次插值的截断误差为:
        
下面来分析前面两个例子(例1,例2)中计算lg12的截断误差:
在例1中,用lg10和lg20计算lg12,
       P1(12)=1.0602,lg12=1.0792

       e=|1.0792-1.0602|=0.0190;
估计误差:f(x)=lgx, 
       ,当x∈[10,20]时, 
       

在例2中,用lg10,lg15和lg20计算lg12.
        P2(12)=1.0766,

      e = |1.0792-1.0766|=0.0026
估计误差:
        


http://chatgpt.dhexx.cn/article/CERNf9ks.shtml

相关文章

【拉格朗日差值法】 公式

拉格朗日插值法 给出对于给定的若n1个点的坐标&#xff08;x0,y0)&#xff0c;(x1,y1)…&#xff0c;(xn,yn)&#xff0c;对应于它们的次数不超过n的拉格朗日多项式只有一个。 应用&#xff1a;给出平面上n1个点&#xff0c;求一条穿过这n1个点的n次多项式&#xff0c;或这个多…

拉格朗日乘子法的分析基础篇

拉格朗日乘子法&#xff08;Lagrange Multiplier)在在求取有约束条件的优化问题时使用的算法。约束条件又分为等式和不等式方法。这里只用等式方法作为例子分析算法的含义原理&#xff08;自己理解的&#xff09;。 首先看拉格朗日的计算式子&#xff1a;L(a, x) f(x) a*g(x…

拉格朗日(Lagrange)插值

问题 给定 n n n 个点&#xff0c;可确定一个多项式 y f ( x ) yf(x) yf(x) &#xff0c;要求确定这个多项式并求出 f ( k ) f(k) f(k) 拉格朗日&#xff08;Lagrange&#xff09;插值公式 搬运 令 L n ( x ) f ( x ) L_n(x)f(x) Ln​(x)f(x) n1 有 由点斜式可以得…

oracle手动锁表

[转载]oracle手动锁表 手工锁表&#xff1a; lock table tbl_t1 in row share mode nowait; --2 lock table tbl_t1 in share update mode nowait; --2 lock table tbl_t1 in row exclusive mode nowait; --3 lock table tbl_t1 in sha…

Oracle数据库锁表解决办法

1.输入查锁语句 SELECT s.sid, s.serial#,b.object_name, s.username, s.schemaname, s.osuser, s.process, s.machine, s.terminal, s.logon_time, l.type FROM v$session s, v$lock l,v$locked_object a,dba_objects b WHERE s.sid l.sid and b.object_id a.object_id and …

Oracle数据库锁表解决

PLSQL不会用,Oracle数据库不了解&#xff0c;哈哈哈,直接闹出了笑话, 由于多次的事务没有提交,导致多个会话没有关闭 造成Oracle数据库表锁死 报 ORA-00054错误 即多个会话没有关闭,Oracle不然你操作了 解决办法 1.查所有被锁的sessionid 用户 哪张表被锁 select l.sessio…

Oracle锁表解决方法

锁表或锁超时相信大家都不陌生&#xff0c;经常发生在DML语句中&#xff0c;产生的原因就是数据库的独占式封锁机制&#xff0c;当执行DML语句时对表或行数据进行锁住&#xff0c;直到事务提交或回滚或者强制结束当前会话。 对于我们的应用系统而言锁表大概率会发生在SQL执行慢…

centos7 升级 gcc 版本

GNU Mirror List 查看动态库版本 strings /usr/lib64/libstdc.so.6 | grep CXXABI查找gcc生成的最新动态库 find / -name "libstdc.so*"一、升级 gcc&#xff1a; 1、查看当前gcc版本 #默认4.8.5 g -v 或者 gcc --version2、下载gcc源码&#xff08;10.2.0&…

环境搭建—3.0 Linaro gcc

一、gcc gcc&#xff0c;GNU Compiler Collection&#xff0c;GNU编译器套件&#xff0c;它最初是专门给GNU操作系统开发的&#xff0c;随着时间推移&#xff0c;现在已经成为了嵌入式领域应用最广泛的c/c编译器工具。不管是单片机开发还是linux开发&#xff0c;都离不开gcc。主…

mac使用gcc编译器

mac自带的编译器是clang编译器而且自带的gcc是映射到clang的之前看到网上需要关闭SIP模式很烦&#xff0c;我试了试关闭了也删除不了gcc&#xff0c;也无法软链接。 后来找到一篇曲线救国的帖子&#xff0c;是在&#xff5e;目录下使用的。 首先下载gcc的最新版本&#xff0c…

win10下安装gcc

win10下安装gcc 一、gcc是什么&#xff1f;1.1、安装gcc 第一次安装,记录一下 一、gcc是什么&#xff1f; GNU编译器套件(GNU Compiler Collection)包括C、C、Objective-C、Fortran、Java、Ada和Go语言的前端&#xff0c;也包括了这些语言的库(如libstdc、libgcj等等)。GCC的初…

gcc

gcc&#xff1a;一个工具集合,包含预处理器,编辑器,汇编器,链接器等组件 说明&#xff1a;当不使用任何选项时,gcc将会生成一个名为a.out的可执行文件 gcc选项 gcc -E 预处理 .igcc -S 编译成汇编代码 .sgcc -c 汇编成目标代码 .ogcc -o 链接成可执行代码 .out/.…

GCC,G++介绍

1.什么是GCC GCC 原名为 GNU C语言编译器&#xff08;GNU C Compiler&#xff09;GCC&#xff08;GNU Compiler Collection&#xff0c;GNU编译器套件&#xff09;是由 GNU 开发的编程语言 译器。GNU 编译器套件包括C、C、Objective-C、Java、Ada 和 Go 语言前 端&#xff0c;…

tdm gcc怎么运行c语言,TDM-GCC 64位

TDM-GCC 是为windows系统打造的编译器套件&#xff0c;包括了自由并开源的 MinGW 或 MinGW-w64 的运行时 APIs&#xff0c;当GCC创建一个新的版本&#xff0c;TDM构建二进制包在MinGW环境中使用MinGW的官方GCC软件包的替代品。需要的朋友可以下载&#xff01; TDM-GCC安装教程 …

什么是GCC? GCC编译过程

什么是GCC&#xff1f; 最简单的回答就是Linux 下的C/C 编译器。 其实一开始的确是这样的&#xff0c;GCC 原名为GUN C 语言编译器( GNU C Compiler), 原本只能处理编译C语言。 但是后来GCC发展壮大了&#xff0c;可以编译C, Fortran,Pascal,Objective-C&#xff0c; Java,A…

GCC是什么

GCC是什么 说到 GCC&#xff0c;就不得不提 GNU&#xff0c;“GNU”是“GNUs Not Unix!”&#xff08;GNU并非Unix&#xff01;&#xff09;的首字母递归缩写&#xff0c;中文名“革奴计划”。GNU 计划的最终目标是打造出一套完全自由&#xff08;即自由使用、自由更改、自由发…

GCC简介

一. GCC简介 GCC&#xff08;GNU C Compiler&#xff09;原名GNU C语言编译器&#xff0c;是由GNU开发的编程语言译器&#xff0c;只能处理C语言。但其很快扩展&#xff0c;变得可处理C&#xff0c;后来又扩展为能够支持更多编程语言&#xff0c;如Fortran、Pascal、Objective…

一张图学会python递归函数

递归函数属于那种“难者不会&#xff0c;会者不难”的事情&#xff0c;回想自己大学时学习递归函数的经历&#xff0c;简直是痛不欲生&#xff0c;代码里没有一行是看不懂的&#xff0c;但就是理解不了它是怎样运行的。 等到自己悟通了原理&#xff0c;就又会觉得这东西太简单了…

【Python递归练习】

1.出售金鱼问题第一次卖出全部金鱼的一半加二分之一条金鱼&#xff1b;第二次卖出乘余金鱼的三分之一加三分之一条金鱼&#xff1b;第三次卖出剩余金鱼的四分之一加四分之一条金鱼&#xff1b;第四次卖出剩余金鱼的五分之一加五分之一条金鱼&#xff1b;现在还剩下11条金鱼。问…

python 递归函数详解

在 python中&#xff0c;有一种非常神奇的函数&#xff1a;递归函数&#xff0c;它可以让你的程序实现自顶向下的递归调用&#xff0c;从而实现程序的无限循环。这是一种非常神奇的语言&#xff0c;可以让你使用一种语言实现另一种语言。它还有一个很酷的名字&#xff1a; shel…