当前位置: 代码迷 >> 综合 >> 使用拉格朗日多项式(Lagrangian polynomials)的插值法(python,数值积分)
  详细解决方案

使用拉格朗日多项式(Lagrangian polynomials)的插值法(python,数值积分)

热度:62   发布时间:2024-01-20 21:10:25.0

第三十五篇 拉格朗日多项式插值

插值多项式

首先考虑一个函数的推导,该函数精准地通过一系列np离散数据点。虽然有无限多的函数具备这个条件,但我们将专注于最简单的一个,一个n阶多项式,其中n = np?1。我们称这个函数为“插值多项式”
在这里插入图片描述
因此,如果有n + 1个点为(xi, yi)当i = 0,1,2,…, n,然后
在这里插入图片描述
在这篇和下篇中,将描述推导Qn(x)的两种方法;这两种方法都非常通用,适用于任何一组初始数据点,但是,如果x数据间隔相等,差分方法将具有很多优点。

拉格朗日多项式

这种方法适用于任意n + 1个数据点(xi, yi), i = 0,1,2,…,n,可以得到下面形式的插值多项式
在这里插入图片描述
Li(x), i = 0,1,2,…,n本身就是n次多项式,定义为“拉格朗日多项式”
在这里插入图片描述
由上式可知,拉格朗日多项式具有这样的性质
在这里插入图片描述
拉格朗日多项式的另一个性质是它们的和为单位1,因此
在这里插入图片描述
计算实例
使用拉格朗日去推导通过下面点的多项式,然后去计算x=4.5时候的y
在这里插入图片描述
有三个(np = 3)数据点,因此n = 2,需要的插值多项式将是二阶的,因此
在这里插入图片描述
三个拉格朗日多项式将会计算得到,
在这里插入图片描述
通过对应的y值“加权”到每个拉格朗日多项式,然后进行化简得到
在这里插入图片描述
作为检验,可以将x的三个值代入插值多项式得到
在这里插入图片描述
如下图所示。得到需要值得结果
在这里插入图片描述
在这里插入图片描述
可见看出,拉格朗日多项式方法中的x值不需要等距,也不需要排列成任何特定的顺序。
拉格朗日方法的一个缺点是,为了计算一个插值,必须执行大量的算术等差运算。,另一个问题涉及到拉格朗日方法的效率,如果添加新数据点集,不能从已经计算得拉格朗日多项式中换的任何方便,整个过程必须从头开始。
程序如下:

import numpy as np
npo=4;xi=4.5
x=np.array([1,3,6,5])
y=np.array([1,5,10,9])
print('使用拉格朗日多项式得插值法')
print('数据点',' x y')
for i in range(1,npo+1):print('{:13.4e}'.format(x[i-1]),end='')print('{:13.4e}'.format(x[i-1]))
yi=0
for i in range(1,npo+1):term=1.0for j in range(1,npo+1):if j!=i:term=term*(xi-x[j-1])/(x[i-1]-x[j-1])yi=yi+term*y[i-1]
print('插值点',' x y')
print('{:13.4e}'.format(xi),end='')
print('{:13.4e}'.format(yi))

终端输出结果如下
在这里插入图片描述