当前位置:文档之家› 数值分析——多项式插值的振荡现象

数值分析——多项式插值的振荡现象

数值分析——多项式插值的振荡现象
数值分析——多项式插值的振荡现象

数值分析实验报告多项式插值的振荡现象

姓名:

班级:

学号:

数值分析实验报告

从图中可以看出,插值函数过两端和原点,并且也是奇函数;n 增大的现象;

b)当节点为偶数个时,即n=3:4:11时,可以得到:

N 取得很大的时候,插值函数和被插值函数几乎重合

x

节点为均匀节点时:n i n

i

x i ,,2,1,0,105 =+

-=

当节点为奇数时,即n=2:4:10,可以得到如下图像

从图中可以看出,插值函数过两端和原点,并且也是奇函数;n越大拟合度越好,没有出现误差增大的现象;

b)当节点为偶数个时,即n=3:4:11时,可以得到:

N取得很大的时候,插值函数和被插值函数几乎重合

综合分析上面的图像和数据可以发现:

节点数目的奇偶对实验没有什么影响,而且节点不是越多拟合越好,可能会发生发散现象,对称的节点选取,得到的插值函数的对称性与被插值函数相同节

数值分析上机实验原始记录

实验名称:多项式插值的振荡现象实验时间: 2013年 10月23日姓名:学号:班级:

实验一的关键程序:

事先估计程序

m=150; x=-1:2/(m-1):1; y=1./(1+25*x.^2); z=0*x;plot(x,z,'r',x,y,'k-'),

gtext('y=1/(1+25*x^2)'),pause

n=3; x0=-1:2/(n-1):1; y0=1./(1+25*x0.^2); y1=lagr1(x0,y0,x);hold on,

plot(x,y1,'g'),gtext('n=2'),pause,hold off

n=4; x0=-1:2/(n-1):1; y0=1./(1+25*x0.^2); y2=lagr1(x0,y0,x);hold on,

plot(x,y2,'b:'),gtext('n=3'),pause,hold off

n=5; x0=-1:2/(n-1):1; y0=1./(1+25*x0.^2); y3=lagr1(x0,y0,x);hold on,

plot(x,y3,'r'),gtext('n=4'),pause,hold off

n=11; x0=-1:2/(n-1):1; y0=1./(1+25*x0.^2); y4=lagr1(x0,y0,x);hold on,

plot(x,y4,'r:'),gtext('n=10'),pause,hold off

n=51; x0=-1:2/(n-1):1; y0=1./(1+25*x0.^2); y5=lagr1(x0,y0,x);hold on,

plot(x,y5,'m'),gtext('n=50'),pause,hold off

n=81; x0=-1:2/(n-1):1; y0=1./(1+25*x0.^2); y6=lagr1(x0,y0,x);hold on,

plot(x,y6,'m'),gtext('n=80'),pause,hold off

%%1.1.a y=1./(1+25*x.^2) 的程序——均匀节点

m=150; x=-1:2/(m-1):1; y=1./(1+25*x.^2); z=0*x;plot(x,z,'r',x,y,'k-'),

gtext('y=1/(1+25*x^2)'),pause

n=2; x0=-1:2/(n-1):1; y0=1./(1+25*x0.^2); y1=lagr1(x0,y0,x);hold on,

plot(x,y1,'g'),gtext('n=1'),pause,hold off

n=4; x0=-1:2/(n-1):1; y0=1./(1+25*x0.^2); y2=lagr1(x0,y0,x);hold on,

plot(x,y2,'b:'),gtext('n=3'),pause,hold off

n=6; x0=-1:2/(n-1):1; y0=1./(1+25*x0.^2); y3=lagr1(x0,y0,x);hold on,

plot(x,y3,'r'),gtext('n=5'),pause,hold off

n=8; x0=-1:2/(n-1):1; y0=1./(1+25*x0.^2); y4=lagr1(x0,y0,x);hold on,

plot(x,y4,'r:'),gtext('n=7'),pause,hold off

%%1.1b ——切比雪夫节点

m=150; x=-1:2/(m-1):1; y=1./(1+25*x.^2); z=0*x;plot(x,z,'r',x,y,'k-'),

gtext('y=1/(1+25*x^2)'),pause

x=q(2); y=1./(1+25*x.^2);n=2; x0=-1:2/(n-1):1;y1=lagr1(x,y,x0);hold on,

plot(x0,y1,'g'),gtext('n=1'),pause,hold off

x=q(4); y=1./(1+25*x.^2);n=4; x0=-1:2/(n-1):1; y2=lagr1(x,y,x0);hold on,

plot(x0,y2,'b:'),gtext('n=3'),pause,hold off

x=q(6); y=1./(1+25*x.^2); n=6;x0=-1:2/(n-1):1;y3=lagr1(x,y,x0);hold on,

plot(x0,y3,'r'),gtext('n=5'),pause,hold off

x=q(8); y=1./(1+25*x.^2);n=8;x0=-1:2/(n-1):1;y4=lagr1(x,y,x0);hold on, plot(x0,y4,'r:'),gtext('n=7'),pause,hold off

%%2.1 a y=x./(1+x.^4)的程序——均匀节点

m=150; x=-5:10/(m-1):5; y=x./(1+x.^4); z=0*x;plot(x,z,'r',x,y,'k-'),

gtext('y=x/(1+x^4)'),pause

n=2; x0=-5:10/(n-1):5; y0=x0./(1+x0.^4); y1=lagr1(x0,y0,x);hold on,

plot(x,y1,'g'),gtext('n=1'),pause,hold off

n=6;x0=-5:10/(n-1):5; y0=x0./(1+x0.^4); y3=lagr1(x0,y0,x);hold on,

plot(x,y3,'r'),gtext('n=5'),pause,hold off

n=10; x0=-5:10/(n-1):5; y0=x0./(1+x0.^4); y4=lagr1(x0,y0,x);hold on,

plot(x,y4,'r:'),gtext('n=9'),pause,hold off

%%2.1 b ——切比雪夫节点

m=150; x=-5:10/(m-1):5; y=x./(1+x.^4); z=0*x;plot(x,z,'r',x,y,'k-'),

gtext('y=x/(1+x^4)'),pause

x=q(2); y=x./(1+x.^4);n=3; x0=-5:10/(n-1):5;y1=lagr1(x,y,x0);hold on,

plot(x0,y1,'g'),gtext('n=1'),pause,hold off

x=q(6); y=x./(1+x.^4);n=5; x0=-5:10/(n-1):5; y2=lagr1(x,y,x0);hold on,

plot(x0,y2,'b:'),gtext('n=5'),pause,hold off

x=q(10); y=x./(1+x.^4); n=10;x0=-5:10/(n-1):5;y3=lagr1(x,y,x0);hold on,

plot(x0,y3,'r'),gtext('n=9'),pause,hold off

%%3.1 a y=atan(x) 的程序——均匀节点

m=150; x=-5:10/(m-1):5; y=atan(x); z=0*x;plot(x,z,'r',x,y,'k-'),

gtext('y=atan x'),pause

n=2; x0=-5:10/(n-1):5; y0=atan(x0); y1=lagr1(x0,y0,x);hold on,

plot(x,y1,'g'),gtext('n=1'),pause,hold off

n=6;x0=-5:10/(n-1):5; y0=atan(x0); y3=lagr1(x0,y0,x);hold on,

plot(x,y3,'r'),gtext('n=5'),pause,hold off

n=10; x0=-5:10/(n-1):5; y0=atan(x0); y4=lagr1(x0,y0,x);hold on,

plot(x,y4,'y:'),gtext('n=9'),pause,hold off

%%3.1 b ——切比雪夫节点

m=150;x=-5:10/(m-1):5; y=atan(x); z=0*x;plot(x,z,'r',x,y,'k-'),

gtext('y=1/(1+25*x^2)'),pause

x=q(1); y=atan(x);;n=2; x0=-5:10/(n-1):5;y1=lagr1(x,y,x0);hold on,

plot(x0,y1,'g'),gtext('n=1'),pause,hold off

x=q(5); y=atan(x); n=6;x0=-5:10/(n-1):5;y3=lagr1(x,y,x0);hold on,

plot(x0,y3,'r'),gtext('n=5'),pause,hold off

x=q(9); y=atan(x);n=10;x0=-5:10/(n-1):5;y4=lagr1(x,y,x0);hold on,

plot(x0,y4,'r:'),gtext('n=9'),pause,hold off

实验二的关键程序

问题一的程序

x0=linspace(-1,1,11);

y0=1./(1+9*x0.^2);

x=-1:0.02:1;

y=lagr1(x0,y0,x);

yi=spline(x0,y0,x)%%求三次样条插值

z=1./(1+9*x.^2);

Ri=abs((z-yi)./z);%%三次样条插值相对误差

R=abs((z-y)./z);%%lagrange插值相对误差

x,y,z,yi,R,Ri=[x',y',z',yi',R',Ri']

n=size(x0)

plot(x,z,'o',x,y,'-',x,yi,'r*')

legend('原始图像','lagrange插值','三次样条插值')

问题二的程序

m=101;

x=-1:2/(m-1):1;

y=1./(1+25*x.^2);

plot(x,y)

xi=0:10;

yi=[0.0,0.79,1.53,2.19,2.71,3.03,3.27,2.89,3.06,3.19,3.29];

pp=csape(x,y,'complete',[0.8,0.2]);

xj=0:0.1:10;

yj=ppval(pp,xi);

plot(x,y,'*');

plot(xi,yi)

思考题程序%%以下为三种不同的方式——1

x0=[100 200 300 400];

y0=[100

200

300

400];

z0=[636 697 624 478

698 712 630 478

680 674 598 412

662 626 552 334];

pp=csape({x0,y0},z0') ;

xi=100:1:400;yi=100:1:400 ;

cz1=fnval(pp,{xi,yi}) ;

cz2=interp2(x0,y0,z0,xi,yi','Linear') ;

数值分析实验2(wangwei)

实验2.1(多项式插值的振荡现象) 问题提出:考虑在一个固定的区间上用插值逼近一个函数。显然拉格朗日插值中使用的节点越多,插值多项式的次数就越高。我们自然关心插值多项式的次数增加时,()n L x 是否也更加靠近被逼近的函数,龙格给出的一个例子是极著名并富有启发性的,设区间[-1,1]上函数 2 1 ()125f x x = + 实验内容:考虑区间[-1,1]的一个等距划分,分点为 21,0,1,2,...,i i x i n n =-+= 则拉格朗日插值多项式为 201 ()()125n n i i i L x l x x == +∑ 其中的(),0,1,2,...,i l x i n =是n 次拉格朗日插值基函数。 实验要求: (1)选择不断增大的分点数目2,3...,n =画出原函数()f x 及插值多项式函数()n L x 在 [-1,1]上的图像,比较并分析实验结果。 (2)选择其他的函数,例如定义在区间[-5,5]上的函数 4 (),()arctan 1x h x g x x x = =+ 重复上述的实验看其结果如何。 (3)区间[a,b]上切比雪夫点的定义为 (21)cos ,1,2,...,1222(1)k a b b a k x k n n π?? +--= +=+ ?+?? 以121,,...,n x x x +为插值节点构造上述各函数的拉格朗日插值多项式,比较其结果。 程序清单: 1. 被逼近函数的函数文件func1.m function y=func1(x,c) %直接用被逼近函数计算函数值,c 用来选择函数 if c==1; y=1./(1+25*x.^2); end; if c==2; y=x./(1+x.^4); end; if c==3; y=atan(x);

数值分析参考答案(第二章)doc资料

数值分析参考答案(第 二章)

第二章 插值法 1.当1,1,2x =-时,()0,3,4f x =-,求()f x 的二次插值多项式。 解: 0120121200102021101201220211,1,2, ()0,()3,()4;()()1 ()(1)(2)()()2()()1 ()(1)(2) ()()6 ()()1 ()(1)(1) ()()3 x x x f x f x f x x x x x l x x x x x x x x x x x l x x x x x x x x x x x l x x x x x x x ==-===-=--==-+-----==------= =-+-- 则二次拉格朗日插值多项式为 2 20()()k k k L x y l x ==∑ 0223()4() 14 (1)(2)(1)(1)23537623l x l x x x x x x x =-+=---+-+=+- 2.给出()ln f x x =的数值表 用线性插值及二次插值计算ln0.54的近似值。 解:由表格知, 01234012340.4,0.5,0.6,0.7,0.8;()0.916291,()0.693147()0.510826,()0.356675()0.223144 x x x x x f x f x f x f x f x ======-=-=-=-=- 若采用线性插值法计算ln0.54即(0.54)f , 则0.50.540.6<<

2 112 1 221 11122()10(0.6)()10(0.5)()()()()() x x l x x x x x x l x x x x L x f x l x f x l x -==----= =---=+ 6.93147(0.6) 5.10826(0.5)x x =--- 1(0.54)0.62021860.620219L ∴=-≈- 若采用二次插值法计算ln0.54时, 1200102021101201220212001122()() ()50(0.5)(0.6) ()() ()() ()100(0.4)(0.6) ()()()() ()50(0.4)(0.5) ()() ()()()()()()() x x x x l x x x x x x x x x x x l x x x x x x x x x x x l x x x x x x x L x f x l x f x l x f x l x --==------==-------= =----=++ 500.916291(0.5)(0.6)69.3147(0.4)(0.6)0.51082650(0.4)(0.5) x x x x x x =-?--+---?--2(0.54)0.615319840.615320L ∴=-≈- 3.给全cos ,090x x ≤≤的函数表,步长1(1/60),h '==若函数表具有5位有效数字,研究用线性插值求cos x 近似值时的总误差界。 解:求解cos x 近似值时,误差可以分为两个部分,一方面,x 是近似值,具有5位有效数字,在此后的计算过程中产生一定的误差传播;另一方面,利用插值法求函数cos x 的近似值时,采用的线性插值法插值余项不为0,也会有一定的误差。因此,总误差界的计算应综合以上两方面的因素。 当090x ≤≤时, 令()cos f x x = 取0110,( )606018010800 x h ππ ===?=

(精品)数值分析课程设计-三次样条插值

《数值分析课程设计-三次样条插值》 报告

掌握三次样条插值函数的构造方法,体会三次样条插值函数对被逼近函数的近似。 三次样条插值函数边界条件由实际问题对三次样条插值在端点的状态要求给出。 以第1 边界条件为例,用节点处二阶导数表示三次样条插值函数,用追赶法求解相关方程组。通过Matlab 编制三次样条函数的通用程序,可直接显示各区间段三次样条函数体表达式,计算出已给点插值并显示各区间分段曲线图。 引言 分段低次样条插值虽然计算简单、稳定性好、收敛性有保证且易在电子计算机上实现,但只能保证各小段曲线在连接处的连续性,不能保证整件曲线的光滑性。利用样条插值,既可保持分段低次插值多项式,又可提高插值函数光滑性。故给出分段三次样条插值的构造过程算法步骤,利用Matlab软件编写三次样条插值函数通用程序,并通过数值算例证明程序的正确性。 三次样条函数的定义及特征 定义:设[a,b] 上有插值节点,a=x1<x2<…xn=b,对应函数值为y1,y2,?yn。若函数S(x) 满 足S(xj) = yj ( j = 1,2, ?,n ), S(x) 在[xj,xj+1] ( j =1,2,?,n-1)上都是不高于三的多项式(为了与其对应j 从1 开始,在Matlab 中元素脚标从1 开始)。当S(x) 在 [a,b] 具有二阶连续导

数。则称S(x) 为三次样条插值函数。要求S(x) 只需在每个子区 间[xj,xj+1] 上确定 1 个三次多项式,设为: Sj(x)=ajx3+bjx2+cjx+dj, (j=1,2,?,n-1) (1) 其中aj,bj,cj,dj 待定,并要使它满足: S(xj)=yj, S(xj-0)=S(xj+0), (j=2,?,n-1) (2) S'(xj-0)=S'(xj+0), S"(xj-0)=S"(xj+0), (j=2,?,n-1) (3) 式(2)、(3)共给出n+3(n-2)=4n-6 个条件, 需要待定4(n-1) 个系数,因此要唯一确定三次插值函数,还要附加2 个边界条件。通常由实际问题对三次样条插值在端点的状态要求给 出。常用边界的条件有以下3 类。 第 1 类边界条件:给定端点处的一阶导数值,S'(x1)=y1',S'(xn) =yn'。 第 2 类边界条件:给定端点处的二阶导数值,S"(x1)=y1",S"(xn) =yn"。特殊情况y1"=yn"=0,称为自然边界条件。 第 3 类边界条件是周期性条件,如果y=f(x)是以b-a 为周期的函 数,于是S(x) 在端点处满足条件S'(x1+0)=S'(xn-0),S"(x+0) =S"(xn-0)。 下以第 1 边界条件为例,利用节点处二阶导数来表示三次样条插值

Hermite插值方法

数值分析实验报告五 一、实验目的 理解Hermite插值方法,掌握Hermite插值算法设计 二、实验内容 使用vc++编程,实现该方法,即Hermite插值法 三、实验步骤 #include double herm(double x0,double x1,double y0,double y1,double h0,double g0,double g1,double x) { d oubl e alp0,alp1,bta0,bta1,t;double s; t=h0*h0; a lp0=(x-x1)*(x-x1)*(h0+2*(x-x0))/t/h0; a lp1=(x-x0)*(x-x0)*(h0-2*(x-x1))/t/h0; b ta0=(x-x0)*(x-x1)*(x-x1)/t; b ta1=(x-x1)*(x-x0)*(x-x0)/t; s=y0*alp0+y1*alp1+g0*bta0+g1*bta1; r eturn(s); } void main() { int n=7;double p0;double pn; double aa[8],bb[8],s=0; double xx[8]={0.5,0.7,0.9,1.1,1.3,1.5,1.7,1.9}; double yy[8]={0.4794,0.6442,0.7833,0.8912,0.9636,0.9975,0.9917,0.9463}; double g[8]; int i; double a[8],c[8],h[8]; cout<<"Please input p0 and pn"<>p0;cin>>pn; for(i=0;i<=n-1;i++) { h[i]=xx[i+1]-xx[i]; c out<<"h["<

数值分析课后题答案

数值分析 第二章 2.当1,1,2x =-时,()0,3,4f x =-,求()f x 的二次插值多项式。 解: 0120121200102021101201220211,1,2, ()0,()3,()4;()()1 ()(1)(2)()()2()()1 ()(1)(2) ()()6 ()()1 ()(1)(1) ()()3 x x x f x f x f x x x x x l x x x x x x x x x x x l x x x x x x x x x x x l x x x x x x x ==-===-=--==-+-----==------= =-+-- 则二次拉格朗日插值多项式为 2 20 ()()k k k L x y l x ==∑ 0223()4() 14 (1)(2)(1)(1)23 537623 l x l x x x x x x x =-+=---+ -+= +- 6.设,0,1,,j x j n =L 为互异节点,求证: (1) 0()n k k j j j x l x x =≡∑ (0,1,,);k n =L (2)0 ()()0n k j j j x x l x =-≡∑ (0,1,,);k n =L 证明 (1) 令()k f x x = 若插值节点为,0,1,,j x j n =L ,则函数()f x 的n 次插值多项式为0 ()()n k n j j j L x x l x == ∑。 插值余项为(1)1() ()()()()(1)! n n n n f R x f x L x x n ξω++=-= + 又,k n ≤Q

(1)()0 ()0 n n f R x ξ+∴=∴= 0()n k k j j j x l x x =∴=∑ (0,1,,);k n =L 0 000 (2)()() (())()()(()) n k j j j n n j i k i k j j j i n n i k i i k j j i j x x l x C x x l x C x x l x =-==-==-=-=-∑∑∑∑∑ 0i n ≤≤Q 又 由上题结论可知 ()n k i j j j x l x x ==∑ ()()0 n i k i i k i k C x x x x -=∴=-=-=∑原式 ∴得证。 7设[]2 (),f x C a b ∈且()()0,f a f b ==求证: 21 max ()()max ().8 a x b a x b f x b a f x ≤≤≤≤''≤- 解:令01,x a x b ==,以此为插值节点,则线性插值多项式为 10 101010 ()() ()x x x x L x f x f x x x x x --=+-- =() () x b x a f a f b a b x a --=+-- 1()()0()0 f a f b L x ==∴=Q 又 插值余项为1011 ()()()()()()2 R x f x L x f x x x x x ''=-= -- 011 ()()()()2 f x f x x x x x ''∴= --

数值分析实验题

实验2.1 多项式插值的振荡现象 问题提出:考虑在一个固定的区间上用插值逼近一个函数。显然Lagrange 插值中的使用节点越多,插值多项式的次数就越高.我们自然就关心插值多项式的次数增加时,()n L x 是否也更加靠近被逼近的函数.Runge 给出的一个例子就是极著名并富有启发性的.设区间[-1,1]上的函数 ()2 1 125f x x = +. 实验内容:考虑区间[-1,1]的一个等距划分,分点为 21,0,1,2,,,i i x i n n =-+ = 则拉格朗日插值多项式为 ()()201 125n n i i i L x l x x ==+∑ . 其中,(),0,1,2,,i l x i n =是n 次Lagrange 插值基函数. 实验要求: (1) 选择不断增大的分点数目2,3, n =,画出原函数()f x 及插值多项式()n L x 在 [-1,1]上的图像,并比较分析实验结果. (2) 选择其他的函数,例如定义在区间[-5,5]上的函数 ()()4 ,arctan ,1x h x g x x x = =+ 重复上面的实验看结果如何. 解:matlab 程序代码

实验结果: f(x)结果如下

h(x)结果如下 g(x)结果如下

结果分析:适当提高插值多项式的次数,可以提高逼近的精度,但次数太高反而会产生不良效果。主要是次数越高,计算工作量大,积累的误差也大;在整个区间上做高次多项式,但局部插值节点处的值有微笑偏差时,可能会影响整个区间上函数值的很大变化,使计算很不稳定。从上图可以看出,高次插值不准确。 实验3.1 编制以函数{} n k k x =为基的多项式最小拟合程序,并对表3.11中的数据作3次多项式最小二 乘拟合. 表3.11 取权数1i w ≡,求拟合曲线0 n k k k x ?α * *== ∑中的参数{}k α、平方误差2δ,并作离散数据 {},i i x y 的拟合函数()y x ?*=的图形. 解:matlab 程序代码 实验结果:

数值分析实验报告-插值、三次样条Word版

实验报告:牛顿差值多项式&三次样条 问题:在区间[-1,1]上分别取n=10、20用两组等距节点对龙格函数21()25f x x 作多项式插值及三次样条插值,对每个n 值,分别画出插值函数及()f x 的图形。 实验目的:通过编程实现牛顿插值方法和三次样条方法,加深对多项式插值的理解。应用所编程序解决实际算例。 实验要求: 1. 认真分析问题,深刻理解相关理论知识并能熟练应用; 2. 编写相关程序并进行实验; 3. 调试程序,得到最终结果; 4. 分析解释实验结果; 5. 按照要求完成实验报告。 实验原理: 详见《数值分析 第5版》第二章相关内容。 实验内容: (1)牛顿插值多项式 1.1 当n=10时: 在Matlab 下编写代码完成计算和画图。结果如下: 代码: clear all clc x1=-1:0.2:1; y1=1./(1+25.*x1.^2); n=length(x1); f=y1(:); for j=2:n for i=n:-1:j f(i)=(f(i)-f(i-1))/(x1(i)-x1(i-j+1)); end end syms F x p ; F(1)=1;p(1)=y1(1); for i=2:n F(i)=F(i-1)*(x-x1(i-1)); p(i)=f(i)*F(i); end

syms P P=sum(p); P10=vpa(expand(P),5); x0=-1:0.001:1; y0=subs(P,x,x0); y2=subs(1/(1+25*x^2),x,x0); plot(x0,y0,x0,y2) grid on xlabel('x') ylabel('y') P10即我们所求的牛顿插值多项式,其结果为:P10(x)=-220.94*x^10+494.91*x^8-9.5065e-14*x^7-381.43*x^6-8.504e-14*x^5+123.36*x^4+2.0 202e-14*x^3-16.855*x^2-6.6594e-16*x+1.0 并且这里也能得到该牛顿插值多项式的在[-1,1]上的图形,并和原函数进行对比(见Fig.1)。 Fig.1 牛顿插值多项式(n=10)函数和原函数图形 从图形中我们可以明显的观察出插值函数在两端点处发生了剧烈的波动,产生了极大的误差,即龙格现象,当n=20时,这一现象将更加明显。 1.2 当n=20时: 对n=10的代码进行修改就可以得到n=20时的代码。将“x1=-1:0.2:1;”改为“x1=-1:0.1:1;”即可。运行程序,我们得到n=20时的牛顿插值多项式,结果为:P20(x)= 260188.0*x^20 - 1.0121e6*x^18 + 2.6193e-12*x^17 + 1.6392e6*x^16 + 2.248e-11*x^15 - 1.4429e6*x^14 - 4.6331e-11*x^13 + 757299.0*x^12 + 1.7687e-11*x^11 - 245255.0*x^10 + 2.1019e-11*x^9 + 49318.0*x^8 + 3.5903e-12*x^7 - 6119.2*x^6 - 1.5935e-12*x^5 + 470.85*x^4 + 1.3597e-14*x^3 - 24.143*x^2 - 1.738e-14*x + 1.0 同样的,这里得到了该牛顿插值多项式的在[-1,1]上的图形,并和原函数进行对比(见Fig.2)。

多项式插值的震荡现象

数值分析课程设计多项式插值的震荡现象 指导教师 学院名称 专业名称 提交日期

一、问题的提出 在一个固定区间上用插值逼近一个函数。显然,拉格朗日插值中使用的节点越多,插值多项式的次数就越高。而插值多项式增加时,L n (x)是否也更加靠近被逼近的函数。下面就这个问题展开实验。 二、实验内容 1.设区间[-1,1]上的函数f x=1 1+25x ,对其等距划分,写出其拉格朗日插值 多项式为L n x=1 1+25x i2a i(x) n i=0 。通过不断增加分点数n=2,3,…。 并:I.画出原函数f(x)及插值多项式函数L n (x)在[-1,1]上的图像; II.给出每一次逼近的最大误差; III.比较并分析实验结果。 2.选择其他函数,如定义在区间[-5,5]上的函数 x=x 1+x 和g x=arctan x,重复上述I、II、III三个步骤看其结果如何。 3.区间[a,b]上切比雪夫点的定义为x k=a+b 2 + b?a 2cos?(2k?1π 2n+1 ),k=1,2,…,n+1。以x1,x2,…,x n+1为插值节点构造上述各函 数的Lagrange插值多项式,比较其结果。 三、实验结果及分析 1.I.画出函数f(x)及其插值多项式函数L n (x)在[-1,1]上的图像,如下图,

(程序代码1.1.1) II.由于fminbnd函数的不可靠性,先通过编程绘出每次逼近在定义区间上的误差如下图,(程序代码1.1.2) 观察图像可知每次逼近的最大误差在哪个区间,再通过编程缩小区间,得到

III.比较并分析实验结果: (1)在同一个坐标系中绘制f(x)及5次、7次等多次插值后的图像。从图中可以很清楚的看出,在[-0.4,0.4]的区间内,随着插值次数的增加插值图像越来越逼近f(x),然而当|x|>0.8以后,插值曲线围绕原函数曲线发生剧烈震荡现象,尤其是插值次数越多时震荡越强烈。 (2)在同一个坐标系中绘制每次插值后的误差图像。从图中可以看出较大误差主要出现在中心及两段,而就每次逼近的最大误差分析。可以观察到: 1.当插值次数在一定区间上增多时,其最大误差变小,即吻合度增高(5次 插值最大误差是0.437,7次插值最大误差是0.2474);2.而超过一定区间,随着插值次数增加其最大误差越大,而且其最大误差x的取值越趋向于两端,于是发生了震荡现象。 2.h(x): (x)在[-1,1]上的图像,如下图(程 I.画出函数h(x)及其插值多项式函数L n 序代码2.1.1):

数值分析第二章复习与思考题

第二章复习与思考题 1.什么是拉格朗日插值基函数?它们是如何构造的?有何重要性质? 答:若n 次多项式()),,1,0(n j x l j =在1+n 个节点n x x x <<< 10上满足条件 (),,,1,0,, ,0, ,1n k j j k j k x l k j =?? ?≠== 则称这1+n 个n 次多项式()()()x l x l x l n ,,,10 为节点n x x x ,,,10 上的n 次拉格朗日插值基函数. 以()x l k 为例,由()x l k 所满足的条件以及()x l k 为n 次多项式,可设 ()()()()()n k k k x x x x x x x x A x l ----=+- 110, 其中A 为常数,利用()1=k k x l 得 ()()()()n k k k k k k x x x x x x x x A ----=+- 1101, 故 ()()()() n k k k k k k x x x x x x x x A ----= +- 1101 , 即 ()()()()()()()()∏ ≠=+-+---=--------=n k j j j k j n k k k k k k n k k k x x x x x x x x x x x x x x x x x x x x x l 0110110)( . 对于()),,1,0(n i x l i =,有 ()n k x x l x n i k i k i ,,1,00 ==∑=,特别当0=k 时,有 ()∑==n i i x l 0 1. 2.什么是牛顿基函数?它与单项式基{ }n x x ,,,1 有何不同? 答:称()()()(){ }10100,,,,1------n x x x x x x x x x x 为节点n x x x ,,,10 上的牛顿基函数,利用牛顿基函数,节点n x x x ,,,10 上的n 次牛顿插值多项式()x P n 可以表示为 ()()()()10010---++-+=n n n x x x x a x x a a x P 其中[]n k x x x f a k k ,,1,0,,,,10 ==.与拉格朗日插值多项式不同,牛顿插值基函数在增加节点时可以通过递推逐步得到高次的插值多项式,例如 ()()()()k k k k x x x x a x P x P --+=++ 011,

三次样条插值方法的应用

CENTRAL SOUTH UNIVERSITY 数值分析实验报告

三次样条插值方法的应用 一、问题背景 分段低次插值函数往往具有很好的收敛性,计算过程简单,稳定性好,并且易于在在电子计算机上实现,但其光滑性较差,对于像高速飞机的机翼形线船体放样等型值线往往要求具有二阶光滑度,即有二阶连续导数,早期工程师制图时,把富有弹性的细长木条(即所谓的样条)用压铁固定在样点上,在其他地方让他自由弯曲,然后沿木条画下曲线,称为样条曲线。样条曲线实际上是由分段三次曲线并接而成,在连接点即样点上要求二阶导数连续,从数学上加以概括就得到数学样条这一概念。下面我们讨论最常用的三次样条函数及其应用。 二、数学模型 样条函数可以给出光滑的插值曲线(面),因此在数值逼近、常微分方程和偏微分方程的数值解及科学和工程的计算中起着重要的作用。 设区间[]b ,a 上给定有关划分b x x n =<<<= 10x a ,S 为[]b ,a 上满足下面条件的函数。 ● )(b a C S ,2∈; ● S 在每个子区间[]1,+i i x x 上是三次多项式。 则称S 为关于划分的三次样条函数。常用的三次样条函数的边界条件有三种类型: ● Ⅰ型 ()()n n n f x S f x S ''0'',==。 ● Ⅱ型 ()()n n n f x S f x S ''''0'''',==,其特殊情况为()()0''''==n n x S x S 。 ● Ⅲ型 ()() 3,2,1,0,0==j x S x S n j j ,此条件称为周期样条函数。 鉴于Ⅱ型三次样条插值函数在实际应用中的重要地位,在此主要对它进行详细介绍。 三、算法及流程 按照传统的编程方法,可将公式直接转换为MATLAB 可是别的语言即可;另一种是运用矩阵运算,发挥MATLAB 在矩阵运算上的优势。两种方法都可以方便地得到结果。方法二更直观,但计算系数时要特别注意。这里计算的是方法一的程序,采用的是Ⅱ型边界条件,取名为spline2.m 。 Matlab 代码如下: function s=spline2(x0,y0,y21,y2n,x) %s=spline2(x0,y0,y21,y2n,x) %x0,y0 are existed points,x are insert points,y21,y2n are the second

数值分析作业-三次样条插值

数值计算方法作业 实验4.3 三次样条差值函数 实验目的: 掌握三次样条插值函数的三弯矩方法。 实验函数: dt e x f x t ? ∞ -- = 2 221)(π 实验内容: (1) 编程实现求三次样条插值函数的算法,分别考虑不同的边界条件; (2) 计算各插值节点的弯矩值; (3) 在同一坐标系中绘制函数f(x),插值多项式,三次样条插值多项式的曲线 比较插值结果。 实验4.5 三次样条差值函数的收敛性 实验目的: 多项式插值不一定是收敛的,即插值的节点多,效果不一定好。对三次样条插值函数如何呢?理论上证明三次样条插值函数的收敛性是比较困难的,通过本实验可以证明这一理论结果。 实验内容: 按照一定的规则分别选择等距或非等距的插值节点,并不断增加插值节点的个数。 实验要求: (1) 随着节点个数的增加,比较被逼近函数和三样条插值函数的误差变化情 况,分析所得结果并与拉格朗日插值多项式比较; (2) 三次样条插值函数的思想最早产生于工业部门。作为工业应用的例子,考

虑如下例子:某汽车制造商根据三次样条插值函数设计车门曲线,其中一 算法描述: 拉格朗日插值: 错误!未找到引用源。 其中错误!未找到引用源。是拉格朗日基函数,其表达式为:() ∏ ≠=--=n i j j j i j i x x x x x l 0) ()( 牛顿插值: ) )...()(](,...,,[.... ))(0](,,[)0](,[)()(1102101210100----++--+-+=n n n x x x x x x x x x x f x x x x x x x f x x x x f x f x N 其中????? ?? ?? ?????? --=--= --= -)/(]),...,[],...,[(]...,[..],[],[],,[)()(],[01102110x x x x x f x x x f x x x f x x x x f x x f x x x f x x x f x f x x f n n n n i k j i k j k j i j i j i j i 三样条插值: 所谓三次样条插值多项式Sn(x)是一种分段函数,它在节点Xi(a

(完整)数值分析知识点,推荐文档

第一章绪论(1-4) 一、误差来源及分类 二、误差的基本概念 1.绝对误差及绝对误差限 2.相对误差及相对误差限 3.有效数字 三、数值计算的误差估计 1.函数值的误差估计 2.四则运算的误差估计 四、数值计算的误差分析原则 第二章插值(1.2.4-8) 一、插值问题的提法(定义)、插值条件、插值多项式的存在唯一性 二、拉格朗日插值 1.拉格朗日插值基函数的定义、性质 2.用拉格朗日基函数求拉格朗日多项式 3.拉格朗日插值余项(误差估计) 三、牛顿插值 1.插商的定义、性质 2.插商表的计算 3.学会用插商求牛顿插值多项式 四、等距节点的牛顿插值 1.差分定义、性质及计算(向前、向后和中心) 2.学会用差分求等距节点下的牛顿插值公式 五、学会求低次的hermite插值多项式 六、分段插值 1.分段线性插值 2.分段三次hermite插值 3.样条插值 第三章函数逼近与计算(1-6) 一、函数逼近与计算的提法(定义)、常用两种度量标准(一范数、二范数\平方逼近) 二、基本概念 连续函数空间、最佳一次逼近、最佳平方逼近、内积、内积空间、偏差与最小偏差、偏差点、交错点值、平方误差 三、学会用chebyshev定理求一次最佳一致逼近多项式,并估计误差(最大偏差) 四、学会在给定子空间上通过解方程组求最佳平方逼近,并估计误差(平方误差) 五、正交多项式(两种)定义、性质,并学会用chebyshev多项式性质求特殊函数的(降阶)最佳一次逼近多项式 六、函数按正交多项式展开求最佳平方逼近多项式,并估计误差 七、一般最小二乘法(多项式拟合)求线性拟合问题 第四章数值分析(1-4) 一、数值求积的基本思想及其机械求积公式

数值分析实验(2.3.5章)

试验2.1 多项式插值的振荡现象 实验目的: 观察多项式插值的振荡现象,了解多项式的次数与逼近效果的关系。 实验内容: 问题提出:考虑在一个固定的区间上用插值逼近一个函数。显然Lagrange 插值中使用的节点越多,插值多项式的次数就越高。我们自然关心插值多项式的次数增加时,Ln(x)是否也更加靠近被逼近的函数。Runge 给出的一个例子是极著名并富有启发性的。设区间[-1,1]上的函数 2 25x 11)x (+= f , 考虑区间[-1,1]上的一个等距划分,分点为 n 2i 1x i + -=,i=0,1,2,…,n 则拉格朗日插值多项式为: )x (l 25x 11 )x (Ln i n i 2 i ∑=+= , 其中的)x (l i ,i=0,1,2,…,n 是n 次拉格朗日插值基函数。 实验要求: 1、选择不断增大的分点数目n=2,3,………,画出原函数)x (f 及插值多项式函数)x (Ln 在[-1,1]上的图像,比较并分析试验结果。 2、选择其他的函数,例如定义在区间[-5,5]上的函数 4 ()1x h x x = +,()arctan g x x =, 重复上述的实验看其结果如何。 实验步骤及结果分析: 1、选择不断增大的分点数目n=2,3,4,5,6,7,8,9,10做)x (f 的拉格朗日插值多项式)x (Ln ,并与原函数值做比较,如下图所示。

观察图像可知: n=2,3时插值函数和原函数差别很大,n=4,5,6时插值函数与原函数的逼近程度相对较好,继续增加插值次数n ,插值函数在插值区域的中间部分收敛,而在

这区间外是发散的,此外,n=7,9时在插值中间区域逼近效果不好。 因此,适当提高插值多项式次数,可以提高逼近的精度,但是次数太高反而产生相反的效果。 2、选择其他的函数进行插值。 原函数4 ()1x h x x = +,区间[-5,5],插值结果如下图: 观察图像可知: 低次插值时,插值效果不好。 n=7,8,9,10时,在区间[-2,2],插值函数与原函数逼近程度好,但在区间外插值

数值分析 插值法

第二章插值法 2.在区间[-1,1]上分别取n=10,20用两组等距节点对龙哥函数f(x)=1/(1+25*x^2)做多项式插值及三次样条插值,对每个n值,分别画出插值函数及f(x)的图形。 (1)多项式插值 ①先建立一个多项式插值的M-file; 输入如下的命令(如牛顿插值公式): function [C,D]=newpoly(X,Y) n=length(X); D=zeros(n,n) D(:,1)=Y' for j=2:n for k=j:n D(k,j)=(D(k,j-1)- D(k-1,j-1))/(X(k)-X(k-j+1)); end end C=D(n,n); for k=(n-1):-1:1 C=conv(C,poly(X(k))) m=length(C); C(m)= C(m)+D(k,k); end ②当n=10时,我们在命令窗口中输入以下的命令: clear,clf,hold on; X=-1:0.2:1; Y=1./(1+25*X.^2); [C,D]=newpoly(X,Y); x=-1:0.01:1; y=polyval(C,x); plot(x,y,X,Y,'.'); grid on; xp=-1:0.2:1; z=1./(1+25*xp.^2); plot(xp,z,'r') 得到插值函数和f(x)图形:

③当n=20时,我们在命令窗口中输入以下的命令:clear,clf,hold on; X=-1:0.1:1; Y=1./(1+25*X.^2); [C,D]=newpoly(X,Y); x=-1:0.01:1; y=polyval(C,x); plot(x,y,X,Y,'.'); grid on; xp=-1:0.1:1; z=1./(1+25*xp.^2); plot(xp,z,'r') 得到插值函数和f(x)图形:

牛顿形式的埃尔米特插值多项式

期末论文 课程名称:数值分析 院系名称:巢湖学院数学系所在班级:11级数本(2)班学生学号:11020170 学生姓名:张秀丽

目录 【题目】:牛顿形式的埃尔米特插值多项式 【摘要】:......................................................... 【关键词】:.......................................................... 【正文】: 一、引言 二、重节点均差与泰勒插值 三、埃尔米特插值典例 四、牛顿形式的埃尔米特插值多项式的一些应用领域 【结束语】:......................................................... 【参考文献】:..........................................................

牛顿形式的埃尔米特插值多项式 【摘要】:在了解了插值法以后,陆续的又接触和学习到多项式插值、拉格朗日插值、牛顿插值多项式等,但在有些实际问题中,仍需要其它要求,下面又给出有关牛顿的埃尔米特插值的内容。 【关键词】:重节点均差、泰勒插值、泰勒插值多项式、埃尔米特插值。 【正文】: 一、引言 插值法是一种古老的数学方法,它来自生产实践。早在一千多年前的隋唐时期制定历法时就应用了二次插值,隋朝刘绰将等距节点二次插值应用于天文计算。但插值理论都是在17世纪微积分产生以后才逐步发展的,牛顿的等距节点插值公式及均差插值公式都是当时的重要成果。近半世纪由于计算机的广泛使用和造船、航空、精密机械加工等实际问题的需要,使插值法在理论上和实践上得到进一步发展,尤其是20世纪40年代后期发展起来的样条插值,更获得广泛应用,成为计算机图形学的基础。 在插值法的提出后我们了解了多项式插值;应用各种不同的方法对给定的插值点为求得形如01()...n n P x a a x a x =+++的插值多项式我们得到了线性插值与抛物线插值;把线性插值与抛物线插值推广到一般情形,通过讨论如何构造通过n+1个节点01...n x x x <<<的n 次插值多项式()n L x ,我们定义了n 次插值基函数从而得到了拉格朗日插值多项式:()()n n k k k o L x y l x ==?。利用插值基函数很 容易得到拉格朗日插值多项式,公式结构紧凑,在理论分析中甚为重要。但当插值点增减时,计算要全部重新进行,甚为不变,为了计算方便可重新设计一种逐次生成插值多项式的方法,通过一系列的考察与讨论我们利用均差得到了牛顿均差插值多项式001001201()()[,]()[,,]()()...n P x f x f x x x x f x x x x x x x =+-+--++ 101[,...,]()...()n n f x x x x x x ---,随后还涉及了差分形式的牛顿插值公式等。 插值多项式要求在插值节点上函数值相等,有的实际问题还要求在节点上倒数值相等,甚至高阶导数值也相等,满足这种要求的插值多项式称为埃尔米特插值多项式。 二、重节点均差与泰勒插值 先给出一个关于均差的结论。 设01[,],,,...,n n f C a b x x x ?为[,]a b 上的相异节点,则01[,,...,]n f x x x 是其变量的连续函数。 如果[,]a b 上的节点互异,根据均差定义,若1[,]f C a b ?,则有 00'0000 ()()[,]()lim lim x x x x f x f x f x x f x x x -==-. 由此定义重节点均差

第5章 实验四Lagrange插值多项式

第5章 实验四Lagrange 插值多项式 实验目的:理解Lagrange 插值多项式的基本概念,熟悉Lagrange 插值多项 式的公式及源代码,并能根据所给条件求出Lagrange 插值多项式,理解龙格现象。 5.1 Lagrange 插值多项式 Lagrange 插值多项式的表达式: 1,,2,1,) ()()(, )()(1 11 1+=--==∏ ∑+≠=+=n i x x x x x l x l y x L n i j j j i j i n i i i 。 其中)(x l i 被称为插值基函数,实际上是一个n 次多项式。)(x l i 的这种表示具有较好的对称性。公式具有两大优点:(1)求插值多项式,不需要求解线性方程组,当已知数据点较多时,此公式更能显示出优越性。(2)函数值可以用符号形式表示,数据点未确定的纵坐标可用多项式表示。 5.2 Lagrange 插值多项式源代码I % 功能: 对一组数据做Lagrange 插值 % 调用格式:yi=Lagran_(x,y,xi) % x,y 数组形式的数据表 % xi:待计算y 值的横坐标数组 % yi 用Lagrange 插值算出的y 值数组 function fi=Lagran_(x,f,xi) fi=zeros(size(xi)); np1=length(f); for i=1:np1 z=ones(size(xi)); for j=1:np1 if i~=j,z=z.*(xi-x(j))/(x(i)-x(j));end end fi=fi+z*f(i); end return

例5.1 已知4对数据(1.6,3.3),(2.7,1.22),(3.9,5.61),(5.6,2.94)。写出这4个数据点的Lagrange 插值公式,并计算出横坐标xi=[2.101,4.234]时对应的纵坐标。 解:4个数据点的Lagrange 插值公式为: ) 9.36.1(*)7.26.5(*)6.16.5() 9.3(*)7.2)(6.1(* 94.2) 6.59.3(*) 7.29.3(*)6.19.3() 6.5(*) 7.2(*)6.1(*9.3) 6.5 7.2(*)9.37.2(*)6.17.2() 6.5(*)9.3(*)6.1(*22.4) 6.56.1(*)9.36.1(*) 7.26.1() 6.5(*)9.3(*) 7.2(* 3.3)(3------+ ------+ ------+ ------=x x x x x x x x x x x x x L 清单5.1 clear x=[1.6, 2.7, 3.9, 5.6]; y=[3.3, 1.22, 5.61, 2.94]; xi=[2.101,4.234]; yi=Lagran_(x,y,xi); xx=1.5:0.05:6.5; yy=Lagran_(x,y,xx); plot(xx,yy,x,y,'o') 其结果为: yi = 1.0596 6.6457 x g (x ):-, d a t a p o i n t s :o 图5.1 插值多项式曲线图

数值分析课程设计-多项式插值的振荡现象matlab

数值分析课程设计多项式插值的振荡现象 (姓名) (学号) 指导教师

学院名称 专 业 名 称 提交日期 2012年6月 一、 问题的提出 考虑在一个固定区间上用插值逼近一个函数。显然,Lagrange 插值中使用的节点越多,插值多项式的次数就越高。我们自然关心插值多项式增加时,L n (x)是否也更加靠近被逼近的函数。龙格(Runge)给出的一个例子是极著名并富有启发性的。设区间[-1,1]上的函数 21()125f x x =+ 考虑区间[-1,1]的一个等距划分,节点为

21,0,1,2,,i i x i n n =-+=L 则拉格朗日插值多项式为 201()()125n n i i i L x a x x ==+∑ 其中的a i (x),i=0,1,2,…,n 是n 次Lagrange 插值基函数。 二、 实验内容 研究以下三个函数在各自区间上运用不同的划分 1、2 1(),[1,1]125f x x x =∈-+ 2、4(),[5,5]1x h x x x =∈-+ 3、()arctan ,[5,5]g x x x =∈- 运用在区间[-p,p]上等距划分(p>0),节点为 2,0,1,2,,i i x p i n n =-+=L 以x 0,x 1,…,x n 为插值节点构造上述各函数的Lagrange 插值多项式。 运用区间[a,b]上切比雪夫(Chebychev)点的定义为 (21)cos ,1,2,,1222(1)k b a b a k x k n n π??+--=+=+ ?+?? L 以x 1,x 2,…,x n+1为插值节点构造上述各函数的Lagrange 插值多项式,比较其结果。 并分别比较两种划分方法,增加节点数,最大误差的变化。 三、 实验结果及分析 (一) 等距划分 对于函数2 1(),[1,1]125f x x x =∈-+来说,使用等距划分

相关主题
文本预览
相关文档 最新文档