实验二插值法概论
二次插值

二次插值法是多项式逼近法的一种,是 用目标函数在若干点的函数值或导数值 等信息,构成一个与目标函数相近似的 低次插值多项式。用多项式的最优解作 为目标函数的最优解近似值。
1、二次插值函数的构成
设一维目标函数的初始区间为[a,b],取 x1 , x2 , x3 点使 x1 a, x3 b 并设 x2 0.5( x1 x3 )
p ( x)
插值函数的极小点,令一阶导数为零
得
xp
*
x p*
b , 将a, b, c代入,得 2a 1 ( x2 2 x32 ) f1 ( x32 x12 ) f 2 ( x12 x2 2 ) f 3 2 ( x2 x3 ) f1 ( x3 x1 ) f 2 ( x1 x2 ) f 3 f 3 f1 x3 x1 c2 ( f 2 f1 ) ( x2 x1 ) c1 x2 x3
2 1 2 1 1 2 2 3
f p*
2ห้องสมุดไป่ตู้
3 终止准则
*( k 1) x (1)当相继两次插值函数极值点 p
, *( k ) x p 之 间 的 距 离 小 于 某 一 个 预 定 的 精 度 时 ,即 *( k ) *( k 1)
xp xp
k2
计算终止 (2)函数下降准则 在上一个框图中,加一判据 c2 0 ,若成立 x x )c 0 即 c ( f f )x ( 便终止 x
令c1 则x p
*
c1 1 ( x1 x3 ) 2 c2
2 区间的缩短
* * x f ( x ) p p 方法计算 点的函数值
* p
记做 比较 f 与 f 取较小者所在对应的点作为 新的 x2 ,以此点左右两邻点分别取做新 的 x1 和 x3 ,得新的区间[ x1 x3]。 在实际操作中,会出现一下4种情况:
实验名称 插值法2

探索实验5 插值法一、 实验目的了解插值问题及其适用的场合,理解并掌握常用的插值算法的构造和计算,了解差商概念、Runge 现象及样条插值方法,学习用计算机求近似函数的一些科学计算方法和简单的编程技术。
二、概念与结论1. 插值问题与插值函数:由实验或测量的方法得到所求函数 y=f(x) 在互异点x 0 , x 1, ... , x n 处的值 y 0 , y 1 , … , y n ,构造一个简单函数 ϕ(x) 作为函数 y=f(x) 的近似表达式 y= f(x) ≈ ϕ(x)使 ϕ(x 0)=y 0 , ϕ(x 1)=y 1 , ⋯, ϕ(x n )=y n , (1)这类问题称为插值问题。
f(x) 称为被插值函数,ϕ(x) 称为插值函数, x 0 , x 1, ... , x n 称为插值节点。
(1)式称为插值条件。
常用的插值函数是多项式函数。
且当n=1时是称为线性插值,n=2时称为Simpson 插值或抛物线插值。
2.插值定理:假设x 0 ,x 1,…,x n 是n+1个互异节点,函数f(x)在这组节点的值f(x k )(k=0,1,…,n)是给定的,那么存在唯一的n 次次多项式p n (x)满足p n (x k )=f(x k ), k=0,1,…,n3.插值的截断误差设ϕn (x)是过点x 0 ,x 1 ,x 2 ,…x n 的 n 次插值多项式, f (n+1)(x)在(a ,b )上存在,其中[a ,b]是包含点x 0 ,x 1 ,x 2 ,…,x n 的任一区间,则对任意给定的x ∈[a ,b],总存在一点ξ∈(a ,b )(依赖于x )使其中 ωn+1 (x)=(x –x 0) (x - x 1)…(x -x n ) ,f (n+1)(ξ) 是f(x)的n+1阶微商在 ξ 的值。
4. 差商:给定一个函数表x | x 0 x 1 ….... x n -------- --------------------------------------------------------- y | y 0 ,y 1 ……. y n其中当i ≠j 时 ,x i ≠x j 记 f[x i ]=f(x i ) ,定义f(x)关于x i ,x j 的一 阶差商一般的, f(x)关于x i ,x i+1,…,x i+k 的k 阶差商定义为:)()!1()()()()(1)1(x n x x f x R n n n n f+++=-=ωξϕji j i j i x x x f x f x x f --=][][],[5. 分段线性插值:在区间[a,b]上给定一组节点:a=x 0<x 1<x 2<∙∙∙<x n =b且在节点上的函数值f(x i )=y i , i=0,1,2,∙∙∙,n, 如果函数ϕ(x) 满足: 1) ϕ (x)在[a , b]上连续 2) ϕ (x i )=y i , i=0,1,2,∙∙∙,n3) ϕ (x)在每个子区间[x i , x i+1](i=0,1,2,∙∙∙,n-1)上是次数为1的多项式 则称ϕ (x)是定义在[a ,b]上的分段线性插值函数。
数值分析实验报告--实验2--插值法

1 / 21数值分析实验二:插值法1 多项式插值的震荡现象1.1 问题描述考虑一个固定的区间上用插值逼近一个函数。
显然拉格朗日插值中使用的节点越多,插值多项式的次数就越高。
我们自然关心插值多项式的次数增加时, 是否也更加靠近被逼近的函数。
龙格(Runge )给出一个例子是极著名并富有启发性的。
设区间[-1,1]上函数21()125f x x=+ (1)考虑区间[-1,1]的一个等距划分,分点为n i nix i ,,2,1,0,21 =+-= 则拉格朗日插值多项式为201()()125nn ii iL x l x x ==+∑(2)其中的(),0,1,2,,i l x i n =是n 次拉格朗日插值基函数。
实验要求:(1) 选择不断增大的分点数目n=2, 3 …. ,画出原函数f(x)及插值多项式函数()n L x 在[-1,1]上的图像,比较并分析实验结果。
(2) 选择其他的函数,例如定义在区间[-5,5]上的函数x x g xxx h arctan )(,1)(4=+=重复上述的实验看其结果如何。
(3) 区间[a,b]上切比雪夫点的定义为 (21)cos ,1,2,,1222(1)k b a b ak x k n n π⎛⎫+--=+=+ ⎪+⎝⎭(3)以121,,n x x x +为插值节点构造上述各函数的拉格朗日插值多项式,比较其结果,试分析2 / 21原因。
1.2 算法设计使用Matlab 函数进行实验, 在理解了插值法的基础上,根据拉格朗日插值多项式编写Matlab 脚本,其中把拉格朗日插值部分单独编写为f_lagrange.m 函数,方便调用。
1.3 实验结果1.3.1 f(x)在[-1,1]上的拉格朗日插值函数依次取n=2、3、4、5、6、7、10、15、20,画出原函数和拉格朗日插值函数的图像,如图1所示。
Matlab 脚本文件为Experiment2_1_1fx.m 。
可以看出,当n 较小时,拉格朗日多项式插值的函数图像随着次数n 的增加而更加接近于f(x),即插值效果越来越好。
实验二 插值法

实验二 插值法实验2.1(多项式插值的振荡现象)问题提出:考虑一个固定的区间上用插值逼近一个函数。
显然拉格朗日插值中使用的节点越多,插值多项式的次数就越高。
我们自然关心插值多项式的次数增加时,)(x L n 是否也更加靠近被逼近的函数。
龙格(Runge )给出一个例子是极著名并富有启发性的。
设区间[-1,1]上函数22511)(xx f +=实验内容:考虑区间[-1,1]的一个等距划分,分点为 n i nix i ,,2,1,0,21 =+-= 则拉格朗日插值多项式为 201()()125nn ii iL x l x x ==+∑其中的n i x l i ,,2,1,0),( =是n 次拉格朗日插值基函数。
实验要求:(1) 选择不断增大的分点数目n=2,3….,画出原函数f(x)及插值多项式函数)(x L n 在[-1,1]上的图像,比较并分析实验结果。
(2)选择其他的函数,例如定义在区间[-5,5]上的函数x x g x xx h arctan )(,1)(4=+=重复上述的实验看其结果如何。
(3)区间[a,b]上切比雪夫点的定义为 1,,2,1,)1(2)12(cos 22+=⎪⎪⎭⎫⎝⎛+--++=n k n k a b a b x k π 以121,,+n x x x 为插值节点构造上述各函数的拉格朗日插值多项式,比较其结果,试分析原因。
实验2.2(样条插值的收敛性)问题提出:多项式插值是不收敛的,即插值的节点多,效果不一定就好。
对样条函数插值又如何呢?理论上证明样条插值的收敛性是比较困难的,但通过本实验可以验证这一理论结果。
实验内容:请按一定的规则分别选择等距或者非等距的插值节点,并不断增加插值节点的个数。
考虑实验2.1中的函数或选择其他你有兴趣的函数。
实验要求:(1)随节点个数增加,比较被逼近函数和样条插值函数误差的变化情况。
分析所得结果并与拉格朗日多项式插值比较(可以用MATLAB 的函数“spline”作此函数的三次样条插值,取n=10、20,分别画出插值函数及原函数的图形)。
数值计算方法-拉格朗日牛顿插值实验

3.对比牛顿前插和牛顿后插两种方法的差异, 讨论分析同一个数值两种方法的计 算结果。 答:如果插值点 x 离 x0。比较近,则一般使用牛顿前差公式;如果插值点 x
离 x0。比较远,则一般使用牛顿后差公式。但对于同一个插值点 x 来说,不管 用牛顿前差公式还是用牛顿后差公式,得到的结果是一-样的,这两种插值公式 只是形式上的差别。 4.讨论分段插值法的意义。 答:高次插值的收敛性没有保证,实际计算稳定性也没有保证,所以当插值结 点 n 较大时, 通常不采用高次多项式插值, 用低次多项式插值, 它能保证收敛性, 得到的结果也相对稳定。
《计算方法》实验报告
实验二 插值法 实验目的
1. 掌握拉格朗日插值法、牛顿插值法、牛顿前后插值法及分段插值法的原理与算法。 2. 讨论几种方法的计算精度与误差,分析拉格朗日插值与牛顿插值法的差异。 3. 学会使用 Matlab 绘图方法,并以此方法来显示插值函数,使结果更直观更形象。
算法原理
(一)拉格朗日插值法 设 是互异插值节点,则满足插值条件 的插值多项式
是存在且唯一的。那么可以得到 n+1 个插值方程,求解 这个方程组,可以得到 n 次拉格朗日插值公式: ‴ , (二)牛顿插值法
其中:
(三)牛顿前后插值法 牛顿前插法为: th t t t t t t t t t t t t t t t t
牛顿后插法为: th
程序代码
拉格朗日插值 +
牛顿插值法运行脚本
牛顿向前插值法
牛顿向后插值法
牛顿向前插值作业
牛顿向后插值
数据测试结果
(1)选取 n=7,拉格朗日插值结果为:
(2)选取 n=7,牛顿插值法结果为:
(3) (4)X1=1.3,x2=5.6,牛顿向前向后插值法结果为:
插值数值实验报告(3篇)

第1篇一、实验目的1. 理解并掌握插值法的基本原理和常用方法。
2. 学习使用拉格朗日插值法、牛顿插值法等数值插值方法进行函数逼近。
3. 分析不同插值方法的优缺点,并比较其精度和效率。
4. 通过实验加深对数值分析理论的理解和应用。
二、实验原理插值法是一种通过已知数据点来构造近似函数的方法。
它广泛应用于科学计算、工程设计和数据分析等领域。
常用的插值方法包括拉格朗日插值法、牛顿插值法、样条插值法等。
1. 拉格朗日插值法拉格朗日插值法是一种基于多项式的插值方法。
其基本思想是:给定一组数据点,构造一个次数不超过n的多项式,使得该多项式在这些数据点上的函数值与已知数据点的函数值相等。
2. 牛顿插值法牛顿插值法是一种基于插值多项式的差商的插值方法。
其基本思想是:给定一组数据点,构造一个次数不超过n的多项式,使得该多项式在这些数据点上的函数值与已知数据点的函数值相等,并且满足一定的差商条件。
三、实验内容1. 拉格朗日插值法(1)给定一组数据点,如:$$\begin{align}x_0 &= 0, & y_0 &= 1, \\x_1 &= 1, & y_1 &= 4, \\x_2 &= 2, & y_2 &= 9, \\x_3 &= 3, & y_3 &= 16.\end{align}$$(2)根据拉格朗日插值公式,构造插值多项式:$$P(x) = \frac{(x-x_1)(x-x_2)(x-x_3)}{(x_0-x_1)(x_0-x_2)(x_0-x_3)}y_0 + \frac{(x-x_0)(x-x_2)(x-x_3)}{(x_1-x_0)(x_1-x_2)(x_1-x_3)}y_1 + \frac{(x-x_0)(x-x_1)(x-x_3)}{(x_2-x_0)(x_2-x_1)(x_2-x_3)}y_2 + \frac{(x-x_0)(x-x_1)(x-x_2)}{(x_3-x_0)(x_3-x_1)(x_3-x_2)}y_3.$$(3)计算插值多项式在不同点的函数值,并与实际值进行比较。
插值法概述PPT课件

i0
拉格朗日(Lagrange) 插值多项式
若引入记号 n 1 ( x ) ( x x 0 )x (x 1 )x . .x n .)(
' n 1 ( x k ) ( x k x 0 ) .x . k . x k 1 ( ) x k ( x k 1 )x k . x . n ) ..
(3)
a0a1xna2xn2...anxnn yn
一般插值多项式的原理
令: 1
A
1
x0
x1
x0n x1n
1
xn
xnn
方程组的矩阵形式如下:
a 0
X
a
1
a
n
y0
Y
y
1
y
n
A Y X
( 4 )
n n1
由 于A (xi xj)0 i1 j0
所以方程组(4)有唯一解。
则 (x k ) 0 (k 0 ,1 ,2 ,.n )..
Lagrange插值余项与误差估计
注 R n ( x 意 ) f ( x ) L n ( 到 x ) K ( x ) n 1 ( x )
故 ( x k 有 ) 0( k 0 , 1 , 2 ,n . )且 .. ( x ) 0
插值引例
三、插值引例
实例1
标准正态分布函数 (x)
查
x0
1
2…
函
┇┇ ┇ ┇┇
数
1.0 0.8413 0.8438 0.8461 … 1.1 0.8643 0.8665 0.8686 …
表
┇┇ ┇ ┇┇
求(1.014)
实例2
插值引例
求机翼下轮廓线上一点的近似数值
插值法

第一节 Lagrange插值
一、问题提出
设 x0 , x1 xn 为给定的节点,yi f ( xi ),i 0,1,n
为相应的函数值,求一个次数不超过 n 的多项式 Pn (x), 使其满足
Pn ( xi ) yi,
i 0,1,n .
这类问题称为插值问题。 f ( x) 称为被插值函数,Pn ( x) 称 为插值函数, x0 , x1 xn 称为插值节点
差商
二阶差商
三阶差商 四阶差商
x0 f ( x0 ) x1 f ( x1 )
x2 f ( x2 )
f [ x0 , x1 ]
f [ x1 , x2 ]
f [ x0 , x1 , x2 ]
f [ x0 , x1 , x2 , x3 ]
1 2 3 4
0 1 2 3 4
x3
f ( x3 ) f [ x2 , x3 ] f [ x1 , x2 , x3 ]
评价
优点: Lagrange基函数容易构造,结构紧凑,便于理 论研究. 缺点: 当增加或减少插值结点时,基函数需要重新 构造,不便于实际的计算使用
第二节 Newton插值
一、差商定义及性质
1.差商定义 f ( x ) f ( x ) i j f [ xi , x j ] , i j 为 f ( x) 在 xi , x j 称 两点处的一阶差商.xi x j
( n1) ( ) f ( n1) ( )
f ( x) Pn ( x) (n 1)! 0 ( x)
由此得
. f ( n1) ( ) Rn ( x) f ( x) Pn ( x) n1 ( x) (n 1)! 定理得证.
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二插值法实验2.1(1)实验程序:function charpt2_1%输入插值结点result=inputdlg({'请输入插值结点数N:'},'charpt_2',1,{'2'}) N1=str2num(char(result));result=inputdlg({'请输入区间下界:'},'charpt_2',1,{'-1'})N2=str2num(char(result));result=inputdlg({'请输入区间上界:'},'charpt_2',1,{'1'})N3=str2num(char(result));if(N1<1) errordlg('结点输入错误!');return;end%插值结点小于1时错误f=inline('1./(1+25*x.^2)');a=N2;b=N3;%标准函数fx1=linspace(a,b,N1+1);y1=feval(f,x1);x=a:0.001:b;inter1=Lagrange(x1,y1,x);fplot(f,[a,b],'r-');%画标准函数f的图形hold on;plot(x,inter1,'b-');%画插值逼近函数legend('原函数','插值多项式函数')xlabel('x');ylabel('y=f(x) o and y=Ln(x)--');function y=Lagrange(x0,y0,x)n=length(x0);m=length(x);for i=1:mz=x(i);s=0.0;for k=1:np=1.0;for j=1:nif(j~=k)p=p*(z-x0(j))/(x0(k)-x0(j));endends=s+p*y0(k);endy(i)=s;end实验结果:n=2 n=3n=5 n=10n=15 n=20实验分析:多项式插值逼近结果如图所示,当结点数由3个结点增加为5个结点时,函数图形越接近,当插值结点增加到10时,曲线光滑,函数逼近效果在曲线的中间部分(-0.6,0.6)比较好,但是由上图在两个端点处x=-1和x=1附近时会出现在与原函数f(x)偏差会很大(龙格现象)。
可以看出,适当提高插值多项式次数,可以提高逼近的精度,但是太高反而会产生不良的现象。
(2) 实验程序:function charpt2_2 %输入插值结点result=inputdlg({'请输入插值结点数N :'},'charpt_2',1,{'2'}) N1=str2num(char(result));result=inputdlg({'请输入区间下界:'},'charpt_2',1,{'-5'}) N2=str2num(char(result));result=inputdlg({'请输入区间上界:'},'charpt_2',1,{'5'}) N3=str2num(char(result));if(N1<1) errordlg('结点输入错误!');return;end %插值结点小于1时错误f=inline('x./(1+x.^4)');a=N2;b=N3; %标准函数fx1=linspace(a,b,N1+1); y1=feval(f,x1);x=a:0.001:b;inter1=Lagrange(x1,y1,x); fplot(f,[a,b],'r-'); %画标准函数f 的图形 hold on;plot(x,inter1,'b-'); %画插值逼近函数legend('原函数','插值多项式函数')xlabel('x');ylabel('y=f(x) o and y=Ln(x)--');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 ends=s+p*y0(k); end y(i)=s; end4()1x h x x =+实验结果:n=2n=3n=5n=10n=15 n=20实验分析:由实验结果可知,随着n 值的增大,插值多项式函数在区间中部的拟合情况愈来愈好,而端点附近的则出现振荡的情况,且误差逐渐增大。
实验程序:()arctan g x xfunction charpt2_3%输入插值结点result=inputdlg({'请输入插值结点数N:'},'charpt_2',1,{'2'}) N1=str2num(char(result));result=inputdlg({'请输入区间下界:'},'charpt_2',1,{'-5'})N2=str2num(char(result));result=inputdlg({'请输入区间上界:'},'charpt_2',1,{'5'})N3=str2num(char(result));if(N1<1) errordlg('结点输入错误!');return;end%插值结点小于1时错误f=inline('atan(x)');a=N2;b=N3;%标准函数fx1=linspace(a,b,N1+1);y1=feval(f,x1);x=a:0.001:b;inter1=Lagrange(x1,y1,x);fplot(f,[a,b],'r-');%画标准函数f的图形hold on;plot(x,inter1,'b-');%画插值逼近函数legend('原函数','插值多项式函数')xlabel('x');ylabel('y=f(x) o and y=Ln(x)--');function y=Lagrange(x0,y0,x)n=length(x0);m=length(x);for i=1:mz=x(i);s=0.0;for k=1:np=1.0;for j=1:nif(j~=k)p=p*(z-x0(j))/(x0(k)-x0(j));endends=s+p*y0(k);endy(i)=s;end实验结果:n=2 n=3n=5 n=10n=15 n=20实验分析:由实验结果可知,随着n 值的增大,插值多项式函数在区间中部的拟合情况愈来愈好,而端点附近的则出现振荡的情况,且误差逐渐增大。
(3)21()125f x x=+ 实验程序:function charpt2_4 %输入插值结点result=inputdlg({'请输入插值结点数N :'},'charpt_2',1,{'2'})N1=str2num(char(result));result=inputdlg({'请输入区间下界:'},'charpt_2',1,{'-1'}) N2=str2num(char(result));result=inputdlg({'请输入区间上界:'},'charpt_2',1,{'1'}) N3=str2num(char(result));if(N1<1&N2<N3) errordlg('结点输入错误!');return;end%插值结点小于1时错误f=inline('1./(1+25*x.^2)');a=N2;b=N3;%标准函数fk=1:N1+1x1=(b+a)./2+((b-a)./2)*cos((2.*k-1).*pi/(2.*(N1+1)));y1=feval(f,x1);x=a:0.001:b;inter1=Lagrange(x1,y1,x);fplot(f,[a,b],'r-');%画标准函数f的图形hold on;plot(x,inter1,'b-');%画插值逼近函数legend('原函数','插值多项式函数')xlabel('x');ylabel('y=f(x) o and y=Ln(x)--');function y=Lagrange(x0,y0,x)n=length(x0);m=length(x);for i=1:mz=x(i);s=0.0;for k=1:np=1.0;for j=1:nif(j~=k)p=p*(z-x0(j))/(x0(k)-x0(j));endends=s+p*y0(k);endy(i)=s;end实验结果:n=2 n=3n=5 n=10n=15 n=20实验分析:由实验结果可知,通过切比雪夫点的变换,随着n 值的增大,插值多项式函数在区间中部的拟合情况愈来愈好, 且端点的振荡现象消失,误差也不断下降。
4()1xh x x=+ 实验程序:function charpt2_5 %输入插值结点result=inputdlg({'请输入插值结点数N :'},'charpt_2',1,{'2'})N1=str2num(char(result));result=inputdlg({'请输入区间下界:'},'charpt_2',1,{'-5'}) N2=str2num(char(result));result=inputdlg({'请输入区间上界:'},'charpt_2',1,{'5'}) N3=str2num(char(result));if(N1<1&N2<N3) errordlg('结点输入错误!');return;end%插值结点小于1时错误f=inline('x./(1+x.^4)');a=N2;b=N3;%标准函数fk=1:N1+1x1=(b+a)./2+((b-a)./2)*cos((2.*k-1).*pi/(2.*(N1+1)));y1=feval(f,x1);x=a:0.001:b;inter1=Lagrange(x1,y1,x);fplot(f,[a,b],'r-');%画标准函数f的图形hold on;plot(x,inter1,'b-');%画插值逼近函数legend('原函数','插值多项式函数')xlabel('x');ylabel('y=f(x) o and y=Ln(x)--');function y=Lagrange(x0,y0,x)n=length(x0);m=length(x);for i=1:mz=x(i);s=0.0;for k=1:np=1.0;for j=1:nif(j~=k)p=p*(z-x0(j))/(x0(k)-x0(j));endends=s+p*y0(k);endy(i)=s;end实验结果:n=2 n=3n=5 n=10n=15 n=20实验分析:由实验结果可知,通过切比雪夫点的变换,随着n值的增大,插值多项式函数在区间中部的拟合情况愈来愈好,且端点的振荡现象消失,误差也不断下降。