三次样条插值、拉格朗日插值、herminte插值

合集下载

几种常用的插值方法

几种常用的插值方法

几种常用的插值方法

数学系 信息与计算科学1班 李平

指导老师:唐振先

摘要:插值在诸如机械加工等工程技术和数据处理等科学研究中有许多直接的应用,在很多领域都要用插值的办法找出表格和中间值,插值还是数值积分微分方程数值解等数值计算的基础。本文归纳了几种常用的插值方法,并简单分析了其各自的优缺点。 关键词:任意阶多项式插值,分段多项式插值。

引言:所谓插值,通俗地说就是在若干以知的函数值之间插入一些未知函数值,而插值函数的类型最简单的选取是代数多项式。用多项式建立插值函数的方法主要用两种:一种是任意阶的插值多项式,它主要有三种基本的插值公式:单项式,拉格朗日和牛顿插值;另一种是分段多项式插值,它有Hermite 和spine 插值和分段线性插值。

一.任意阶多项式插值:

1.用单项式基本插值公式进行多项式插值:

多项式插值是求通过几个已知数据点的那个n-1阶多项式,即P n-1(X)=A 1+A 2X+…A n X n-1,它是一个单项式基本函数X 0,X 1…X n-1的集合来定义多项式,由已知n 个点(X,Y )构成的集合,可以使多项式通过没数据点,并为n 个未知系数Ai 写出n 个方程,这n 个方程组成的方程组的系数矩阵为Vandermonde 矩阵。

虽然这个过程直观易懂,但它都不是建立插值多项式最好的办法,因为Vandermonde 方程组有可能是病态的,这样会导致单项式系数不确定。另外,单项式中的各项可能在大小上有很大的差异,这就导致了多项式计算中的舍入误差。 2.拉格朗日基本插值公式进行插值: 先构造一组插值函数L i (x )

插值法总结

插值法总结

插值法

在生产实践过程和科学实验中,经常要研究变量之间的函数关系,但在很多的情况下,

又很难找到具体的函数表达式,往往只能通过测量或者观察获得一些量以及对应的值,这种

无法求出其他量的对应的函数值,也不能进一步研究函数的分析性质。为了解决这个问题,我们设法通过已给的量以及对应的值来求出一个简单函数P (x ),使P (x )=x x (x =

0,1,2…x )成立。这个求插值函数P (x )的方法称为插值法。

1 拉格朗日插值法

先考虑一个简单的插值问题:求一个n 次插值多项式x x (x ),使它在各节点

x x (i=0,1…,n)上的值为

x x (x )={0 (x ≠x )1 (x =x )

(I,k=0,1,2…n) 由上式可知,x x (x )在x 0,x 1,…x x −1,x x +1,..x x 处有根,所以可设

x x (x )=x x (x −x 0)(x −x 1)…(x −x x −1)(x −x x +1)…(x −x x )

由x x (x x )=1,可求得

x x =1(x x −x 0)(x x −x 1)…(x x −x x −1)(x x −x x +1)…(x x −x x )

则 x x (x )=(x −x 0)(x −x 1)…(x −x x −1)(x −x x +1)…(x −x x )(x x −x 0)(x x −x 1)…(x x −x x −1)(x x −x x +1)…(x x −x x )

从而插值多项式 x x (x )=∑x x (x )x x x x =0,

几种常用的插值方法

几种常用的插值方法

几种常用的插值方法

常用的插值方法包括线性插值、多项式插值、样条插值和径向基函数插值等,下面将依次介绍这些方法。

1.线性插值:

线性插值是最简单的插值方法之一,它假设函数在两个已知点之间的变化是线性的。对于给定的两个点(x0,y0)和(x1,y1),线性插值公式为:y=y0+(x-x0)*(y1-y0)/(x1-x0)

其中,y是需要插值的点对应的函数值,x是插值点的横坐标。

2.多项式插值:

多项式插值方法通过在给定的一组点上构建一个多项式函数来进行插值。常用的多项式插值方法包括拉格朗日插值和牛顿插值。

- 拉格朗日插值通过构建一个n次多项式来插值n+1个给定的点。具体来说,对于给定的n+1个点(x0, y0), (x1, y1), ..., (xn, yn),拉格朗日插值公式为:

y = Σ(yk * lk(x))

其中,lk(x)是拉格朗日基函数,计算公式为:

lk(x) = Π((x - xj) / (xi - xj)),(j ≠ i)

- 牛顿插值通过构建一个n次插值多项式来插值n+1个给定的点。具体来说,对于给定的n+1个点(x0, y0), (x1, y1), ..., (xn, yn),牛顿插值公式为:

y = Σ(Π(x - xj) / Π(xi - xj) * finDiff(yj))

其中,finDiff(yj)是每个节点的差商,计算公式为:

finDiff(yj) = (ΣΠ(xj - xi) * yj) / ΣΠ(xi - xj),(i ≠ j) 3.样条插值:

样条插值方法通过使用分段函数来逼近给定的一组点。常用的样条插

三种插值方法的应用与比较

三种插值方法的应用与比较
例 题:给出 f(x)=lnx 下面的数值表,用 Larange 插值计算 ln(0.54)的近似值.
x 0.4
0.5
0.6
0.7
0.8
lnx - 0.916291 - 0.693147 - 0.510826 - 0.356675 - 0.223144
在 Matlab 命令窗口中输入: x=[0.4:0.1:0.8]; y= [-0.916291 -0.693147 -0.510826 -0.356675 -0.223144]; lagrange(x,y,0.54)[3] ans=
legend(’拉格朗日插值曲线’,’原曲线’,’分段
插值曲线’)[4]
Runge 现象的产生
作分段线性插值的目的在于克服 Lagrange 插
值方法可能发生的不收敛性缺点.所谓分段线性插
值就是利用每两个相邻插值基点作线性插值,即可
得如下分段线性插值函数:y(x)=li(x)fi+li+1(x)fi+1,x∈[xi,
分段线性插值与三次样条插值可以避免高次 插值可能出现的大幅度波动现象,在实际应用中通 常采用分段低次插值来提高近似程度,比如可用分
段线性插值或分段三次埃尔米特插值来逼近已知 函数,但它们的总体光滑性较差.为了克服这一缺 点,一种全局化的分段插值方法—— —三次样条插值 成为比较理想的工具. 1 拉格朗日(Lagrange)插值

各种插值法的对比研究

各种插值法的对比研究

各种插值法的对比研究

目录

1.引言 (1)

2.插值法的历史背景 (1)

3.五种插值法的基本思想 (2)

3.1拉格朗日插值 (2)

3.2牛顿插值 (3)

3.3埃尔米特插值 (3)

3.4分段线性插值 (4)

3.5三次样条插值 (5)

4.五种插值法的对比研究 (5)

4.1拉格朗日插值与牛顿插值的比较 (5)

4.2多项式插值法与埃尔米特插值的比较 (6)

4.3多项式插值法与分段线性插值的比较 (6)

4.4 分段线性插值与样条插值的比较 (6)

5.插值法在实际生活中的应用 (6)

6.结束语 (6)

致谢 (7)

参考文献 (7)

各种插值法的对比研究

摘要:插值法是一种古老的数学方法,也是数值计算中的一个算法.插值法不仅是微分方程、数值积分、数值微分等计算方法的基础,而且在医学、通讯、精密机械加工等领域都涉及到了它.本文首先介绍了插值的背景以及常用的五种插值法的基本思想,然后通过拉格朗日插值与牛顿插值、多项式插值与埃尔米特插值、多项式插值与分段线性插值、分段线性插值和样条函数插值给出相应的算法与MATLAB 程序,根据已学的知识对五种插值方法与被插函数的逼近程度进行对比研究,找出不同方法间的联系与区别,分析出它们的优缺点,最后在此基础上进一步研究插值法的实际应用,以提高插值法的实用性,从而能让我们在以后的应用中看到一个问题,就知道哪种方法更适合于它,然后大大地快速的提高效率.

关键词:多项式插值;样条函数插值;MATLAB 程序;应用

1.引言

在很多解题以及应用生活中,常常需要用数量关系来反映问题,但是有时没有办法通过数学语言准确地表达出来.已知有些变量之间存在一种函数关系,但没法用函数的表达式表示出来.比如,)(x f 在某个区间上[]b a ,是存在某种数量关系的,但是根据观察和测量或者实验只能得到有限个函数值,我们可以利用这几点来确定函数表达式.或者有一些函数表达式是已经知道的,但是它们的计算是十分繁琐复杂的,不容易发现它的本质,而且它的使用方法也比较局限.函数是表达数与数之间的联系,为了能很好地用数学语言表达出函数的关系,一般通过给定的数据构造一个函数)(x P ,这样既能反映函数)(x f 的特点,又方便计算,用)(x P 近似)(x f .通常选一个简单的函数)(x P ,而且=)(i x P )(i x f ()n i ,...,2,1,0=成立,这个时候的)(x P ,从要表达的函数规律来看,就是我们需要的插值函数[1]

数值分析笔记

数值分析笔记

2
βk +1 ( x=)
(x

)
xk +1
x − xk xk +1 − xk
2
插值多项式: H3 (x) = ykαk (x) + yk+1αk+1(x) + mk βk (x) + mk+1βk+1(x)
3、三次样条
三、数值积分
∫ 1、梯形公式: I ( f ) = b f (x)dx ≈ b − a [ f (a) + f (b)] 代数精确度为 1
0=k 1
f
(xk )+f
(b)
其余项: Rn ( f ) =

b−a 180
h 2
4
f (4) (η )
h= b−a n
四、解线性方程组的迭代法( Ax = b )
1、考虑线性方程组 Ax = b
①构造迭代序列,可将方程改写为不动点形式=x Bx + f
②并由此构造迭代公式 x(k+1) =Bx(k) + f ,
a
2
2、辛普森(Simpson)公式: S =
b− 6
a
f
(a) +
4
f
(a + b) 2
+
f
(b)

第2章-插值法(Hermite插值,样条插值)

第2章-插值法(Hermite插值,样条插值)

[ y
j j 0
n
j ( x)
yj j ( x)]
显然要满足
H 2 n 1 ( xk ) y k , n 1 ( xk ) y k , (k 0,1, , n) H2
问题归纳为求满足条件 的基函数 j ( x)及 j ( x)
2016/8/14 4
( 1 ) (2)
2 1
x x0 x x 0 1
2
2
0 ( x) ( x x0 ) l ( x) x x0
2 0
x x1 x x 1 0 x x0 x x 0 1
2
1 ( x) ( x x1 ) l ( x) x x1
2016/8/14
13
一、两点三次Hermite插值
作为Hermite插值多项式的重要特例 是n 1的情形。
设f ( x)在节点 x0 , x1处的函数值为 y0 , y1
, y1 在节点 x0 , x1处的的一阶导数值为 y0
两个节点最高可以用 3次Hermite 多项式H3 ( x)作为插值函数


j 0
n
( x x j )l j 2 ( x) yj
2016/8/14
8
定理一:满足插值条件
H ( xi ) f ( xi ) yi

几种常用的插值方法

几种常用的插值方法

几种常用的插值方法

数学系信息与计算科学1班平

指导老师:唐振先

摘要:插值在诸如机械加工等工程技术和数据处理等科学研究中有许多直接的应用,在很多领域都要用插值的办法找出表格和中间值,插值还是数值积分微分方程数值解等数值计算的基础。本文归纳了几种常用的插值方法,并简单分析了其各自的优缺点。

关键词:任意阶多项式插值,分段多项式插值。

引言:所谓插值,通俗地说就是在若干以知的函数值之间插入一些未知函数值,而插值函数的类型最简单的选取是代数多项式。用多项式建立插值函数的方法主要用两种:一种是任意阶的插值多项式,它主要有三种基本的插值公式:单项式,拉格朗日和牛顿插值;另一种是分段多项式插值,它有Hermite和spine插值和分段线性插值。

一.任意阶多项式插值:

1.用单项式基本插值公式进行多项式插值:

多项式插值是求通过几个已知数据点的那个n-1阶多项式,即P n-1(X)=A1+A2X+…A n X n-1,它是一个单项式基本函数X0,X1…X n-1的集合来定义多项式,由已知n个点(X,Y)构成的集合,可以使多项式通过没数据点,并为n个未知系数Ai写出n个方程,这n个方程组成的方程组的系数矩阵为Vandermonde 矩阵。

虽然这个过程直观易懂,但它都不是建立插值多项式最好的办法,因为Vandermonde方程组有可能是病态的,这样会导致单项式系数不确定。另外,单项式中的各项可能在大小上有很大的差异,这就导致了多项式计算中的舍入误差。

2.拉格朗日基本插值公式进行插值:

先构造一组插值函数L i (x )

插值法总结

插值法总结

插值法总结

-标准化文件发布号:(9556-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

插值法

在生产实践过程和科学实验中,经常要研究变量之间的函数关系,但在很

多的情况下,又很难找到具体的函数表达式,往往只能通过测量或者观察获得

一些量以及对应的值,这种无法求出其他量的对应的函数值,也不能进一步研

究函数的分析性质。为了解决这个问题,我们设法通过已给的量以及对应的值

来求出一个简单函数P (x ),使P (x )=x x (x =0,1,2…x )成立。这个求插值

函数P (x )的方法称为插值法。

1 拉格朗日插值法

先考虑一个简单的插值问题:求一个n 次插值多项式x x (x ),使它在各节点

x x (i=0,1…,n)上的值为

x x (x )={0 (x ≠x )1 (x =x )

(I,k=0,1,2…n) 由上式可知,x x (x )在x 0,x 1,…x x −1,x x +1,..x x 处有根,所以可设

x x (x )=x x (x −x 0)(x −x 1)…(x −x x −1)(x −

x x +1)…(x −x x )

由x x (x x )=1,可求得

x x =1(x

x −x 0)(x x −x 1)…(x x −x x −1)(x x −x x +1)…(x x −x x ) 则

x x (x )=(x −x 0)(x −x 1)…(x −x x −1)(x −x x +1)…(x −x x )

(x x −x 0)(x x −x 1)…(x x −x x −1)(x x −x x +1)…(x x −x x )

【插值】插值方法原理详解

【插值】插值方法原理详解

【插值】插值⽅法原理详解

插值问题详解

注明出处:

1.

我在具体的应⽤(如数学建模竞赛)中,常常需要根据已知的函数点进⾏数据、模型的处理和分析,⽽通常情况下现有的数据是极少的,不⾜以⽀撑分析的进⾏,这时就需要使⽤⼀些数学的⽅法,“模拟产⽣”⼀些新的但⼜⽐较靠谱的值来满⾜需求。⼀般来说,我可以去调⽤MATLAB或者Python的⼀些库函数来实现,这个功能就是“插值”。然⽽这有个⾮常让我苦恼的问题,我可以从⼿册上知道这个函数实现“三次多项式插值”,那个函数实现“样条插值”.......但究竟在什么情况下使⽤何种插值⽅法呢?若不对插值⽅法做深⼊的学习,这个疑团恐难以解开。

于是,在这个原因驱动之下,我决定对常见、常⽤的插值⽅法⽐较深⼊的学习⼀下。我希望读者也是基于这个原因来读这篇⽂章,希望我的总结能对你有所帮助。

2. 插值

简单讲,插值就是根据已知数据点(条件),来预测未知数据点值得⽅法。具体来说,假如你有n个已知条件,就可以求⼀个n-1次的插值函数P(x),使得P(x)接近未知原函数f(x),并由插值函数预测出你需要的未知点值。⽽⼜n个条件求n-1次P(x)的过程,实际上就是求n元⼀次线性⽅程组。

代数插值

代数插值就是多项式插值,即所求插值函数为多项式函数:

显然,系数a0.....an为所求。如果已知n+1个条件,需要n+1个⽅程组如下:

这时,便可以⽤待定系数求解。

⼀、泰勒插值

⾸先需要回顾泰勒多项式:

因⽽,泰勒插值的条件就是已知0-n阶的导数:

余项:

满⾜n阶可导这个条件实在是太苛刻,导致实际上泰勒插值并不常⽤,下⾯介绍拉格朗⽇插值与⽜顿插值,这两种⽅法在本质上是相同的。

c++三次多项式拟合_数学建模_003_插值和拟合_2020_9_3

c++三次多项式拟合_数学建模_003_插值和拟合_2020_9_3

c++三次多项式拟合_数学建模_003_插值和拟合_2020_9_3插值问题:

有限个已知数据点,构造⼀个解析表达式,由此计算数据点之间的函数值,称之为插值。 当数据量不够,需要补充,且认定已有数据可信时,通常利⽤函数插值⽅法。

常见插值⽅法:

拉格朗⽇插值(lagrange插值)

分段线性插值

Hermite

三次样条插值

克⾥⾦插值(地理学)

反距离权重插值算法(地理学)

拉格朗⽇插值(⾼次多项式插值):(次数太⾼有Runge现象)

1. 曲线光滑;误差估计有表达式

2. 收敛性不能保证(振荡现象)

3. ⽤于理论分析,实际意义不⼤matlab中没有

分段线性插值:

1. 收敛性良好

2. 只⽤两个节点,且线性,简单实⽤

3. 曲线不光滑

三次样条插值:

1. 曲线2阶光滑,收敛性有保证

2. 实际中应⽤⼴泛

3. 误差估计较难

拟合:

已知有限个数据点,求近似函数,可不过已知数据点,只要求在某种意义

下它在这些点上的总偏差最⼩。

曲线拟合要解决的两个问题:

1. 线型的选择(关键点,⼀般根据散点图)

2. 线型中参数的计算

参数的求解:

1. 线性拟合----最⼩⼆乘法

2. ⾮线性拟合----Gauss-Newton迭代法

最⼩⼆乘法:

函数表达式: 其中 , k=

[1,n],是线性⽆关的函数, 是待定系数,⽬的找⼀组适当的

,使得 与

的距离平⽅和最⼩。这种准则称为最⼩⼆乘准则,求系数的⽅法称为最⼩⼆乘拟合法。

MATLAB拟合:

线性拟合:

polyfit(x,y,n)函数

x,y被拟合数据的⾃变量和应变量,n为拟合多项式的次数

polyval()函数

数值分析第六章1

数值分析第六章1

lk ( x) ak ( x x0 )( x xk 1 )( x xk 1 )( x xn )
由lk ( xk ) 1得到ak ,于是,
( x x0 )( x xk 1 )( x xk 1 )( x xn ) lk ( x ) ( xk x0 )( xk xk 1 )( xk xk 1 )( xk xn )
从而得到在n 1个节点x0 , x1 , , xn上的n 1 个n次Lagrange基函数l0 ( x ), l1 ( x ), , ln ( x ).
那么所求的n次插值多项式为 Ln ( x )
y l
k 0
n
k k
( x)
Ln ( x )称为n次Lagrange插值多项式.
引入记号
Ln ( x) a0 a1 x an x
n
是存在且唯一的. 2 Lagrange插值公式的计算 (1)来自百度文库线性插值公式 已知互异的插值节点x0,x1和相应的函数值y0,y1 构造线性插值函数,即构造过(x0,y0), (x1,y1) 两点的直线y=L1(x).
y1 y0 L1 ( x ) y1 ( x x1 ) x1 x0 x x0 x x1 L1 ( x ) y0 y1 x0 x1 x1 x0
二、 Newton插值
考虑插值基函数组(节点为x0 , … , xn)

数学实验插值

数学实验插值

S(x) = {si (x), x ∈[xi−1 , xi ], i = 1,Ln}
应满足的条件: 1) si (x) = ai x3 + bi x2 + ci x + di (i = 1 Ln) , 2) S(xi ) = yi (i = 0,1 Ln) ,
3) S(x) ∈C2[ x0 , xn ]
1•
P1(x)=y0L0+y1L1=1-2x/π, P1(π/6)=0.6667
π/6
• π/2
精确值:cos (π/6)=0.8660
n=2时: (x0,y0)=(0,1), (x1,y1)=(π/4,0.7071), 时 (x2,y2)=(π/2,0), P2(x)=y0L0+y1L1+y2L2 =8(x-π/4)(x-π/2)/π2-16x(x-π/2)0.7071/π2 P2(π/6)=0.8508
• • •
• • x0 • xj-1
xj
xj+1
xn
根据直线的两点式方程变形得到q(x)在第 段[xj-1, xj] 在第j段 根据直线的两点式方程变形得到 在第 上的表达式为: 上的表达式为:
q(x) =
x − xj x j−1 − x j
y j−1 +
x − x j−1 x j − x j−1
4) S′′(x0 ) = S′′(xn ) = 0 ( 自然边界条件)

插值方法比较

插值方法比较

Lagrange 插值虽然易算,但若要增加一个节点时,全部基函数li(x) 都需重新算过,这就大大地增大了计算量。

优点:结构紧凑、思想清晰、显式表示、公式对称,与插值节点的编号无关,适合理论分析。

缺点:没有承袭性。

埃尔米特插值优缺点

优点:1) 显式算法,算法简单,收敛性、稳定性好。只要结点间距充分小,分段插值总能获得所要求的精度,而不会出现Rung现象。

2) 局部性。如果要修改某个数据,插值曲线仅仅在某个局部范围内受到影响;而代数

插值却会影响到整个插值区间。

缺点:光滑度不高。若要提高光滑度,必须提供较多的信息才能达到。

分段线性插值优缺点

分段三次埃尔米特插值比分段线性插值效果明显改善。但分段三次埃尔米特插值要求给出节点上的导数值,所要提供的信息太多,其光滑度也不高,只有一阶导数连续。

三次样条插值的优缺点

•三次样条插值具有良好的收敛性与稳定性,又有二阶光滑性,理论上和实际应用上都有重要意义,在计算机图形学中有重要应用。

插值法小结

(1)拉格朗日插值

拉格朗日插值多项式在理论分析中非常方便,因为它的结构紧凑,利用基函数很容易推导和形象的描述算法,但是也有一些缺点,当插值节点增加、减少或其位置变化时,整个插值多项式的结构都会改变,这就不利于实际计算,增加了算法复杂度,此时我们通常采用牛顿插值多项式算法

(2)牛顿插值多项式

用它插值时,首先要计算各阶差商,而各高阶差商可归结为一阶差商的逐次计算。一般情况讨论的插值多项式的节点都是任意分布的,但是在实际应用中,出现了很多等距节点的情形,这时的插值公式可以进一步简化,在牛顿均差插值多项式中各阶均差用相应的差分代替,就得到了各种形式的等距节点插值公式,常用的是牛顿前插与后插公式。

几种常用的插值方法

几种常用的插值方法

几种常用的插值方法

数学系 信息与计算科学1班 李平

指导老师:唐振先

摘要:插值在诸如机械加工等工程技术和数据处理等科学研究中有许多直接的应用,在很多领域都要用插值的办法找出表格和中间值,插值还是数值积分微分方程数值解等数值计算的基础。本文归纳了几种常用的插值方法,并简单分析了其各自的优缺点。 关键词:任意阶多项式插值,分段多项式插值。

引言:所谓插值,通俗地说就是在若干以知的函数值之间插入一些未知函数值,而插值函数的类型最简单的选取是代数多项式。用多项式建立插值函数的方法主要用两种:一种是任意阶的插值多项式,它主要有三种基本的插值公式:单项式,拉格朗日和牛顿插值;另一种是分段多项式插值,它有Hermite 和spine 插值和分段线性插值。

一.任意阶多项式插值:

1.用单项式基本插值公式进行多项式插值:

多项式插值是求通过几个已知数据点的那个n-1阶多项式,即P n-1(X)=A 1+A 2X+…A n X n-1

,它是一个单项式基本函数

X 0,X 1…X n-1的集合来定义多项

式,由已知n 个点(X,Y )构成的集合,可以使多项式通过没数据点,并为n 个未知系数Ai 写出n 个方程,这n 个方程组成的方程组的系数矩阵为Vandermonde 矩阵。

虽然这个过程直观易懂,但它都不是建立插值多项式最好的办法,因为Vandermonde 方程组有可能是病态的,这样会导致单项式系数不确定。另外,单项式中的各项可能在大小上有很大的差异,这就导致了多项式计算中的舍入误差。 2.拉格朗日基本插值公式进行插值: 先构造一组插值函数L i (x )=

插值及其误差

插值及其误差

(1)用tan x 表格直接计算tan 5。

(2)用sin 5和cos 5来计算tan 5。并讨论这两个结果中误差变化的原因。

插值:求过已知有限个数据点的近似函数。 1 插值方法

下面介绍几种基本的、常用的插值:拉格朗日多项式插值、牛顿插值、分段线性插

值、Hermite 插值和三次样条插值。 拉格朗日多项式插值 1.1.1 插值多项式

用多项式作为研究插值的工具,称为代数插值。其基本问题是:已知函数

()f x 在区间[],a b 上1n +个不同点01,,,n x x x 处的函数值

()()0,1,

,i i y f x i n ==,求一个至多n 次多项式 ()01n n n x a a x a x ϕ=++

+(1)

使其在给定点处与()f x 同值,即满足插值条件

()()n i i i x f x y ϕ==(2)

()n i x ϕ称为插值多项式,()0,1,,i x i n =称为插值节点,简称节点,[],a b 称为插

值区间。从几何上看,n 次多项式插值就是过1n +个点()()(),0,1,,i i x f x i n =,

作一条多项式曲线()n y x ϕ=近似曲线()y f x =。

n 次多项式(1)有1n +个待定系数,由插值条件(2)恰好给出1n +个方程

01000

01111

01n

n n n n n

n n n

a a x a x y a a x a x y a a x a x y ⎧+++=⎪

+++=⎪⎨⎪

⎪+++=⎩(3)

记此方程组的系数矩阵为A ,则

()0

1111det 1n n

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

三次样条插值:

function s=spline(x0,y0,y2l,y2n,x)

n=length(x0);

km=length(x);

a(1)=-0.5;

b(1)=3*(y0(2)-y0(1))/(2*(x0(2)-x0(1)));

for j=1:n-1

h(j)=x0(j+1)-x0(j);

end

for j=2:n-1

alpha(j)=h(j-1)/(h(j-1)+h(j));

beta(j)=3*((1-alpha(j))*y0(j)-y(j-1)/h(j-1)+alpha(j)*(y0(j+1)-y0(j))/h(j));

a(j)=-alpha(j)/(2+(1-alpha(j))*a(j-1));

b(j)=(beta(j)-(1-alpha(j))*b(j-1))/(2+(1-alpha(j))*a(j-1));

end

m(n)=(3*(y0(n)-y0(n-1))/h(n-1)+y2n*h(n-1)/2-b(n-1))/(2+a(n-1));

for j=(n-1):-1:1

m(j)=a(j)*m(j+1)+b(j);

end

for k=1:km

for j=1:(n-1)

if ((x(k)>x0(j))&(x(k)

l(k)=j;

end

end

end

for k=1:km

sum=(3*(x0(l(k)+1)_x(k))^2/h(l(k))^2-2*(x0(l(k)+1)-x(k))^3/h(l(k))^3)*y0(l(k));

sum=sum+(3*(x(k)-x0(l(k)))^2/h(l(k))^2-2*(x(k)-x0(l(k)))^3/h(l(k))^3)*y0(l(k)+1);

sum=sum+h(l(k))*((x0(l(k)+1)-x(k))^2/h(l(k))^2)-(x0(l(k)+1)-x(k))^3/h(l(k))^3)*m(l(k));

s(k)=sum-h(l(k))*((x(k)-x0(l(k)))^2/h(l(k))^2-(x(k)-x0(l(k)))^3/h(l(k))^3)*m(l(k)+1); end

拉格朗日插值

function y=lagrange(x0,y0,x)

n=length(x0);

m=length(x);

for i=1:m

z=x(i);

s=0.0;

for k=1:n

p=1.0;

for j=1:n

if j~=k

p=p*(z-x0(j))/(x0(k)-x0(j));

end

end

s=p*y0(k)+s;

end

y(i)=s;

end

hermite插值

function y=hermite(x0,y0,y1,x)

n=length(x0);

m=length(x);

for k=1:m

yy=0.0

for i=1:n

h=1.0;

a=0.0;

for j=1:n

if j~=i

h=h*((x(k)-x0(j))/(x0(i)-x0(j)))^2;

a=1/(x0(i)-x0(j))+a;

end

end

yy=yy+h*((x0(i)-x(k))*(2*a*y0(i)-y1(i))+y0(i));

end

y(k)=yy;

end

相关文档
最新文档