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

多项式插值的振荡现象

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

姓名:

学院:数理与信息工程学院

班级:

学号:

数值分析实验报告

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

出现误差增大的现象;

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

从图中可以看出,插值函数不经过两端,但也是奇函数;节点数越多,拟合度也越好当n=40时,得到:

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

x

arctan

从图中可以看出,插值函数过两端和原点,并且也是奇函数;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,'*');

插值与拟合实验报告

学生实验报告

了解插值与拟合的基本原理和方法;掌握用MATLAB计算插值与作最小二乘多项式拟合和曲线拟合的方法;通过范例展现求解实际问题的初步建模过程; 通过动手作实验学习如何用插值与拟合方法解决实际问题,提高探索和解决问题的能力。这对于学生深入理解数学概念,掌握数学的思维方法,熟悉处理大量的工程计算问题的方法具有十分重要的意义。 二、实验仪器、设备或软件:电脑,MATLAB软件 三、实验内容 1.编写插值方法的函数M文件; 2.用MATLAB中的函数作函数的拟合图形; 3.针对实际问题,试建立数学模型,并求解。 四、实验步骤 1.开启软件平台——MATLAB,开启MATLAB编辑窗口; 2.根据各种数值解法步骤编写M文件; 3.保存文件并运行; 4.观察运行结果(数值或图形); 5.写出实验报告,并浅谈学习心得体会。 五、实验要求与任务 根据实验内容和步骤,完成以下具体实验,要求写出实验报告(实验目的→问题→数学模型→算法与编程→计算结果→分析、检验和结论→心得体会)。 1.天文学家在1914年8月的7次观测中,测得地球与金星之间距离(单位:米),并取得常用对数值,与日期的一组历史数据如下表: 由此推断何时金星与地球的距离(米)的对数值为9.93518? 解:输入命令

days=[18 20 22 24 26 28 30]; distancelogs=[9.96177 9.95436 9.94681 9.93910 9.93122 9.92319 9.91499]; t1=interp1(distancelogs,days,9.93518) %线性插值 t2=interp1(distancelogs,days,9.93518,'nearest') %最近邻点插值 t3=interp1(distancelogs,days,9.93518,'spline') %三次样条插值 t4=interp1(distancelogs,days,9.93518,'cubic') %三次插值 计算结果: t1 = 24.9949 t2 = 24 t3 = 25.0000 t4 =

插值法和拟合实验报告(数值计算)

插值法和拟合实验报告 一、 实验目的 1.通过进行不同类型的插值,比较各种插值的效果,明确各种插值的优越性; 2.通过比较不同次数的多项式拟合效果,了解多项式拟合的原理; 3.利用matlab 编程,学会matlab 命令; 4.掌握拉格朗日插值法; 5.掌握多项式拟合的特点和方法。 二、 实验题目 1.、插值法实验 将区间[-5,5]10等分,对下列函数分别计算插值节点 k x 的值,进行不同类型 的插值,作出插值函数的图形并与)(x f y =的图形进行比较: ;11)(2x x f += ;a r c t a n )(x x f = .1)(42 x x x f += (1) 做拉格朗日插值; (2) 做分段线性插值; (3) 做三次样条插值. 2、拟合实验 给定数据点如下表所示: 分别对上述数据作三次多项式和五次多项式拟合,并求平方误差,作出离散函数 ),(i i y x 和拟合函数的图形。 三、 实验原理 1.、插值法实验

∏∑∏∏∏∑∑≠==≠=≠=≠=+-==--= =-= ==-=-=----==++==j i j j i i i i i n i i n n j i j j n j i j j i i n j i j j n i i i n i i n n n o i n i i n x x x x x y x l x L x x c n i x x c x x x c x x x x x x x x c y x l x L y x l y x l y x l x L ,00 ,0,0,01100 00 )(l )()() (1 ,1,0, 1)()(l ) ()())(()()()()()()()(, 故, 得 再由,设 2、拟合实验

计算方法练习题与答案

练习题与答案 练习题一 练习题二 练习题三 练习题四 练习题五 练习题六 练习题七 练习题八 练习题答案 练习题一 一、是非题 1.–作为x的近似值一定具有6位有效数字,且其误差限。() 2.对两个不同数的近似数,误差越小,有效数位越多。() 3.一个近似数的有效数位愈多,其相对误差限愈小。()

4.用近似表示cos x产生舍入误差。 ( ) 5.和作为的近似值有效数字位数相同。 ( ) 二、填空题 1.为了使计算的乘除法次数尽量少,应将该表达式改写 为; 2.–是x舍入得到的近似值,它有位有效数字,误差限 为,相对误差限为; 3.误差的来源是; 4.截断误差 为; 5.设计算法应遵循的原则 是。 三、选择题 1.–作为x的近似值,它的有效数字位数为( ) 。 (A) 7; (B) 3; (C) 不能确定 (D) 5. 2.舍入误差是( )产生的误差。 (A) 只取有限位数 (B) 模型准确值与用数值方法求得的准确值 (C) 观察与测量 (D) 数学模型准确值与实际值 3.用 1+x近似表示e x所产生的误差是( )误差。 (A). 模型 (B). 观测 (C). 截断 (D). 舍入 4.用s*=g t2表示自由落体运动距离与时间的关系式 (g为重力加速度),s t是在时间t内的实际距离,则s t s*是()误差。 (A). 舍入 (B). 观测 (C). 模型 (D). 截断 5.作为的近似值,有( )位有效数字。 (A) 3; (B) 4; (C) 5; (D) 6。

四、计算题 1.,,分别作为的近似值,各有几位有效数字? 2.设计算球体积允许的相对误差限为1%,问测量球直径的相对误差限最大为多少? 3.利用等价变换使下列表达式的计算结果比较精确: (1), (2) (3) , (4) 4.真空中自由落体运动距离s与时间t的关系式是s=g t2,g为重力加速度。现设g是精确的,而对t有秒的测量误差,证明:当t增加时,距离的绝对误差增加,而相对误差却减少。 5*. 采用迭代法计算,取 k=0,1,…, 若是的具有n位有效数字的近似值,求证是的具有2n位有效数字的近似值。 练习题二 一、是非题 1.单点割线法的收敛阶比双点割线法低。 ( ) 2.牛顿法是二阶收敛的。 ( ) 3.求方程在区间[1, 2]内根的迭代法总是收敛的。( ) 4.迭代法的敛散性与迭代初值的选取无关。 ( ) 5.求非线性方程f (x)=0根的方法均是单步法。 ( ) 二、填空题

数值分析拉格朗日插值法上机实验报告

课题一:拉格朗日插值法 1.实验目的 1.学习和掌握拉格朗日插值多项式。 2.运用拉格朗日插值多项式进行计算。 2.实验过程 作出插值点(1.00,0.00),(-1.00,-3.00),(2.00,4.00)二、算法步骤 已知:某些点的坐标以及点数。 输入:条件点数以及这些点的坐标。 输出:根据给定的点求出其对应的拉格朗日插值多项式的值。 3.程序流程: (1)输入已知点的个数; (2)分别输入已知点的X坐标; (3)分别输入已知点的Y坐标; 程序如下: #include #include #include float lagrange(float *x,float *y,float xx,int n) /*拉格朗日

插值算法*/ { int i,j; float *a,yy=0.0; /*a作为临时变量,记录拉格朗日插值多项*/ a=(float*)malloc(n*sizeof(float)); for(i=0;i<=n-1;i++) { a[i]=y[i]; for(j=0;j<=n-1;j++) if(j!=i) a[i]*=(xx-x[j])/(x[i]-x[j]); yy+=a[i]; } free(a); return yy; } int main() { int i; int n; float x[20],y[20],xx,yy; printf("Input n:");

scanf("%d",&n); if(n<=0) { printf("Error! The value of n must in (0,20)."); getch();return 1; } for(i=0;i<=n-1;i++) { printf("x[%d]:",i); scanf("%f",&x[i]); } printf("\n"); for(i=0;i<=n-1;i++) { printf("y[%d]:",i);scanf("%f",&y[i]); } printf("\n"); printf("Input xx:"); scanf("%f",&xx); yy=lagrange(x,y,xx,n); printf("x=%f,y=%f\n",xx,yy); getch(); } 举例如下:已知当x=1,-1,2时f(x)=0,-3,4,求f(1.5)的值。

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["<

数值分析实验插值与拟合

《数值分析》课程实验一:插值与拟合 一、实验目的 1. 理解插值的基本原理,掌握多项式插值的概念、存在唯一性; 2. 编写MA TLAB 程序实现Lagrange 插值和Newton 插值,验证Runge 现象; 3. 通过比较不同次数的多项式拟合效果,理解多项式拟合的基本原理; 4. 编写MA TLAB 程序实现最小二乘多项式曲线拟合。 二、实验内容 1. 用Lagrange 插值和Newton 插值找经过点(-3, -1), (0, 2), (3, -2), (6, 10)的三次插值公式,并编写MATLAB 程序绘制出三次插值公式的图形。 2. 设 ]5,5[,11 )(2 -∈+= x x x f 如果用等距节点x i = -5 + 10i /n (i = 0, 1, 2, …, n )上的Lagrange 插值多项式L n (x )去逼近它。不妨取n = 5和n = 10,编写MATLAB 程序绘制出L 5(x )和L 10(x )的图像。 (2) 编写MA TLAB 程序绘制出曲线拟合图。 三、实验步骤 1. (1) Lagrange 插值法:在线性空间P n 中找到满足条件: ?? ?≠===j i j i x l ij j i , 0,, 1)(δ 的一组基函数{}n i i x l 0)(=,l i (x )的表达式为 ∏ ≠==--= n i j j j i j i n i x x x x x l ,0),,1,0()( 有了基函数{}n i i x l 0)(=,n 次插值多项式就可表示为 ∑==n i i i n x l y x L 0 )()( (2) Newton 插值法:设x 0, x 1, …, x n 是一组互异的节点,y i = f (x i ) (i = 0, 1, 2, …, n ),f (x )在处的n 阶差商定义为

插值法实验报告

实验二插值法 1、实验目的: 1、掌握直接利用拉格郎日插值多项式计算函数在已知点的函数值;观察拉格郎日插值的龙格现象。 2、了解Hermite插值法、三次样条插值法原理,结合计算公式,确定函数值。 2、实验要求: 1)认真分析题目的条件和要求,复习相关的理论知识,选择适当的解决方案和算法; 2)编写上机实验程序,作好上机前的准备工作; 3)上机调试程序,并试算各种方案,记录计算的结果(包括必要的中间结果); 4)分析和解释计算结果; 5)按照要求书写实验报告; 3、实验内容: 1) 用拉格郎日插值公式确定函数值;对函数f(x)进行拉格郎日插值,并对f(x)与插值多项式的曲线作比较。 已知函数表:(0.56160,0.82741)、(0.56280,0.82659)、(0.56401,0.82577)、(0.56521,0.82495)用三次拉格朗日插值多项式求x=0.5635时函数近似值。 2) 求满足插值条件的插值多项式及余项 1) 4、题目:插值法 5、原理: 拉格郎日插值原理: n次拉格朗日插值多项式为:L n (x)=y l (x)+y 1 l 1 (x)+y 2 l 2 (x)+…+y n l n (x)

n=1时,称为线性插值, L 1(x)=y (x-x 1 )/(x -x 1 )+y 1 (x-x )/(x 1 -x )=y +(y 1 -x )(x-x )/(x 1 -x ) n=2时,称为二次插值或抛物线插值, L 2(x)=y (x-x 1 )(x-x 2 )/(x -x 1 )/(x -x 2 )+y 1 (x-x )(x-x 2 )/(x 1 -x )/(x 1 -x 2 )+y 2 (x -x 0)(x-x 1 )/(x 2 -x )/(x 2 -x 1 ) n=i时, Li= (X-X0)……(X-X i-1)(x-x i+1) ……(x-x n) (X-X0)……(X-X i-1)(x-x i+1) ……(x-x n) 6、设计思想: 拉格朗日插值法是根据n + 1个点x0, x1, ... x n(x0 < x1 < ... x n)的函数值f (x0), f (x1) , ... , f (x n)推出n次多項式p(x),然后n次多項式p (x)求出任意的点x对应的函数值f (x)的算法。 7、对应程序: 1 ) 三次拉格朗日插值多项式求x=0.5635时函数近似值 #include"stdio.h" #define n 5 void main() { int i,j; float x[n],y[n]; float x1; float a=1; float b=1; float lx=0; printf("\n请输入想要求解的X:\n x="); scanf("%f",&x1); printf("请输入所有点的横纵坐标:\n"); for(i=1;i

多项式差值方法上机习题报告

计算方法多项式插值方法上机习题报告 (一)问题: 对Runge函数R(x)=1 1+x ,x∈[-5,5],利用下列条件做插值逼近,并与R(x)的图像进行比较. (1)用等距节点x i= -5 + i, i=0, 1, 2,…,10,绘出它的10次Newton插值多项式的图像; (2)用节点x i= 5cos(2i+1 42 π), i=0, 1, 2,…,20,绘出它的20次Lagrange插值多项式的图像; (3)用等距节点x i= -5 + i, i=0, 1, 2,…,10,绘出它的分段线性插值函数图像; (4)用等距节点x i= -5 + i, i=0, 1, 2,…,10,绘出它的分段三次Hermite插值函数的图像; (5)用等距节点x i= -5 + i, i=0, 1, 2,…,10,绘出它的三次自然样条插值函数的图像。(二)解决问题的算法 由于问题中已经明确了被插函数(Runge函数)及所用的插值方法,所以下面简单介绍一下各插值方法。 (1)Newton插值方法 对于被插函数,选取插值点(x1,f x1),…,(x n,f(x n)). 定义k阶插商(k≥1)为: f x i,x i+1,…,x i+k=f x i+1,x i+2,…,x i+k?f x i,x i+1,…,x i+k?1 i+k i . 此外,规定f(x)在节点x j上的0阶插商为f[x j]=f(x j). 定义函数: ωn (x)=(x-x0)(x-x1)…(x-x n). 则牛顿插值多项式为: N n(x)=f[x0]+f[x0,x1]ω0 (x)+…+f[x0,x1,…,x n]ωn-1 (x). 在具体的计算机实现过程中,可以使用一个二维数组,使得角标为(i, j)(i≤j+1)的位置存储f[x i-1,…,x j],从而得到牛顿插值多项式. (2)Lagrange插值方法 对于被插函数,选取n+1个插值节点并求出其函数值:(x0,f x0),…,(x n,f(x n)). 定义: l i x= x?x0…x?x i?1x?x i+1……(x?x n) x i?x0…x i?x i?1x i?x i+1……(x i?x n) . 则拉格朗日插值多项式为: p(x)=f x i?l i(x) n i=1 (3)分段线性插值方法 过被插函数上若干点(即插值点)做一条折线以近似一条曲线,就可以得到使用分段线性插值方法得到的插值曲线。其实现方式最为简单,不做过多介绍(即具体的函数形式不在此列出). (4)分段三次Hermite插值方法 设选取n+1个插值节点:x0,x1,…,x n,记被插函数f(x)在这些点的函数值与导数值

插值法数值上机实验报告

插值法数值上机实验报告 实验题目: 利用下列条件做插值逼近,并与R (x) 的图像比较 考虑函数:R x y=1 1+x2 (1)用等距节点X i=?5+i,i=0,1,...,10.给出它的10次Newton插值多项式的图像; π),i=0,1,...,20.给出它的20次Lagrange插值多项式(2)用节点X i=5cos(2i+1 42 的图像; (3)用等距节点X i=?5+i,i=0,1,...,10.给出它的分段线性插值函数的图像;(4)用等距节点X i=?5+i,i=0,1,...,10.给出它的三次自然样条插值函数的图像; (5)用等距节点X i=?5+i,i=0,1,...,10.给出它的分段三次Hermite插值函数的图像; 实验图像结果:

实验结果分析: 1.为了验证Range现象,我还特意做了10次牛顿插值多项式和20次牛顿插值多项式的对比图像,结果如下图(图对称,只截取一半) 可以看出,Range现象在高次时变得更加明显。这也是由于高次多项式在端点处的最值随次数的变大很明显。可以料定高次多项式在两侧端点处剧烈震荡,在更小的间距内急剧上升然后下降,Range现象非常明显。

2.分析实验(2)的结果,我们会惊讶地发现,由于取21个点逼近,原本预料的Range现象会很明显,但这里却和f(x)拟合的很好。(即下图中Lagrange p(x)的图像)。可是上图中取均匀节点的20次牛顿多项式逼近的效果在端点处却很差。料想是由于节点X i=5cos2i+1 42 π ,i=0,1,...,20 取得很好。由书上第五章的 知识,对于函数y=1 1+x ,y 1 2对应的cherbyshev多项式的根恰好为X i= 5cos2i+1 42 π ,i=0,1,...,20 。由于所学限制,未能深入分析。 (3)比较三次样条插值图像和Hermit插值图像对原函数图像的逼近情形。见下图:

数值计算方法复习题2

习题二 1. 已知,求的二次值多项式。 2. 令求的一次插值多项式,并估计插值误差。 解:;,介于x和0,1决定的区间;,当时。 3. 给出函数的数表,分别用线性插值与二次插值求的近似值,并估计截断误差。0.54667,0.000470;0.54714,0.000029 4. 设,试利用拉格朗日余项定理写出以为节点的三次插值多项式。 5. 已知,求及的值。1,0 6. 根据如下函数值表求四次牛顿插值多项式,并用其计算和的近似值。, 7. 已知函数的如下函数值表,解答下列问题(1)试列出相应的差分表;(2)分别写出牛顿向前插值公式和牛顿向后插值公式。 向后插值公式 8. 下表为概率积分的数据表,试问:1)时,积分2)为何值时,积分?。

9. 利用在各点的数据(取五位有效数字),求方程在0.3和0.4之间的根的近似值。0.3376489 10. 依据表10中数据,求三次埃尔米特插值多项式。 11. 依据数表11 项式。 12. 在上给出的等距节点函数表,用分段线性插值求的近似值,要使截断误差不超过,问函数表的步长h应怎样选取? 13. 将区间分成n等分,求在上的分段三次埃尔米特插值多项式,并估计截断误差。 14、给定的数值表

用线性插值与二次插值计算ln0.54的近似值并估计误差限 解:仍可使用n=1及n=2的Lagrange插值或Newton插值,并应用误差估计。线性插值时,用0.5及0.6两点,用Newton插值 误差限,因,故 二次插值时,用0.5,0.6,0.7三点,作二次Newton插值

误差限,故 15、在-4≤x≤4上给出的等距节点函数表,若用二次插值法求的近 似值,要使误差不超过,函数表的步长h应取多少? 解:用误差估计式,

插值与拟合实验报告

一、给定函数y=sinx的函数表如下表,用拉格朗日插值求sin0.57891的近似 值 M文件: function yh=lagrange2(x0,y0,xh) n = length(x0); m = length(xh); yh=zeros(1,m); for k = 1:m for i = 1:n xp = x0([1:i-1 i+1:n]); yp = prod((xh(k)-xp)./(x0(i)-xp)); yh(k) = yh(k) + yp*y0(i); end end 执行:>> x0=[0.4,0.5,0.6,0.7] x0 = 0.4000 0.5000 0.6000 0.7000 >> y0=[0.38942,0.47943,0.56464,0.64422] y0 = 0.3894 0.4794 0.5646 0.6442 >> lagrange2(x0,y0,0.57891) 执行结果: ans = 0.5471

二、 1. 给定sin110.190809,sin120.207912,sin130.224951,o o o ===构造牛顿 插值函数计算'sin1130o 。 M 文件: function fp = newpoly(x,y,p) n = length(x); a(1) = y(1); for k = 1 : n - 1 d(k, 1) = (y(k+1) - y(k))/(x(k+1) - x(k)); end for j = 2 : n - 1 for k = 1 : n - j d(k, j) = (d(k+1, j - 1) - d(k, j - 1))/(x(k+j) - x(k)); end end d for j = 2 : n a(j) = d(1, j-1); end Df(1) = 1; c(1) = a(1); for j = 2 : n Df(j)=(p - x(j-1)) .* Df(j-1); c(j) = a(j) .* Df(j);

插值法习题及解答

一、填空题: 1. 满足()a a f x x =,()b b f x x =,()c c f x x =的拉格朗日插值余项为 。 答:()() ()()()3! a b c f R x x x x x x x ξ'''=--- 2.已知函数()f x 的函数值()()()()()0,2,3,5,6f f f f f ,以及均差如下 ()()()()()00,0,24,0,2,35,0,2,3,51,0,2,3,5,60f f f f f ===== 那么由这些数据构造的牛顿插值多项式的最高次幂的系数是 答: 1 二、选择题 1. 通过点()()0011,,,x y x y 的拉格朗日插值基函数()()01,l x l x 满足( ) A .()00l x =0,()110l x = B . ()00l x =0,()111l x = C .()00l x =1,()110l x = D . ()00l x =1,()111l x = 答:D 2.. 已知等距节点的插值型求积公式 ()()35 2 k k k f x dx A f x =≈∑?,那么3 k k A ==∑( ) A .1 B. 2 C. 3 D. 4 答:C 3.过点(x 0,y 0), (x 1,y 1),…,(x 5,y 5)的插值多项式P(x)是( )次的多项式。 (A). 6 (B).5 (C).4 (D).3. 答:B 三、证明题 1. 设 f (x) = (x-1) (x-2) .证明对任意的x 有: f [1, 2, x)]= 1 证明:f [1, 2] = [f (1) – f (2)]/ (1 – 2) = [0 – 0]/ (-1) = 0, 对任意的x 有 F[2, x] = [f (2) – f (x)]/ (2 – x) = [0 – (x-1) (x-2)]/ (2 – x) = (x-1), 所以 f [1, 2, x] = [f (1, 2) - f (2, x)]/ (1 – x) = [0 - (x-1)]/ (1 – x) = 1 2.设 在 上具有二阶连续导数,且 ,求证:

实验四 插值法与曲线拟合

计算方法实验报告 专业班级:医学信息工程一班姓名:陈小芳学号:201612203501002 实验成绩: 1.【实验题目】 插值法与曲线拟合 2.【实验目的】 3.【实验内容】 4. 【实验要求】

5. 【源程序(带注释)】 (1)拉格朗日插值 #include #include #include #include #include #define n 4 //插值节点的最大下标 main() { double x1[n+1]={0.4,0.55,0.65,0.8,0.9}; double y1[n+1]={0.4175,0.57815,0.69657,0.88811,1.02652}; double Lagrange(double x1[n+1],double y1[n+1],float t); int m,k;float x,y;float X;double z; printf("\n The number of the interpolation points is m ="); //输入插值点的个数 while(!scanf("%d",&m)) { fflush(stdin); printf("\n输入错误,请重新输入:\n"); printf("\n The number of the interpolation points is m ="); } for(k=1;k<=m;k++) { printf("\ninput X%d=",k); while(!scanf("%f",&X)) { fflush(stdin); printf("\n输入错误,请重新输入:\n"); printf("\ninput X%d=",k); } z=Lagrange(x1,y1,X); printf("P(%f)=%f\n",X,z); } getch(); return (0); } double Lagrange(double x[n+1],double y[n+1],float X) { int i,j;

用多项式模型进行数据拟合实验报告(附代码)

实验题目: 用多项式模型进行数据拟合实验 1 实验目的 本实验使用多项式模型对数据进行拟合,目的在于: (1)掌握数据拟合的基本原理,学会使用数学的方法来判定数据拟合的情况; (2)掌握最小二乘法的基本原理及计算方法; (3)熟悉使用matlab 进行算法的实现。 2 实验步骤 2.1 算法原理 所谓拟合是指寻找一条平滑的曲线,最不失真地去表现测量数据。反过来说,对测量 的实验数据,要对其进行公式化处理,用计算方法构造函数来近似表达数据的函数关系。由于函数构造方法的不同,有许多的逼近方法,工程中常用最小平方逼近(最小二乘法理论)来实现曲线的拟合。 最小二乘拟合利用已知的数据得出一条直线或曲线,使之在坐标系上与已知数据之间的距离的平方和最小。模型主要有:1.直线型2.多项式型3.分数函数型4.指数函数型5.对数线性型6.高斯函数型等,根据应用情况,选用不同的拟合模型。其中多项式型拟合模型应用比较广泛。 给定一组测量数据()i i y x ,,其中m i ,,3,2,1,0Λ=,共m+1个数据点,取多项式P (x ),使得 min )]([020 2=-=∑∑==m i i i m i i y x p r ,则称函数P (x )为拟合函数或最小二乘解,此时,令 ∑==n k k k n x a x p 0 )(,使得min ])([02 002=??? ? ??-=-=∑∑∑===m i n k i k i k m i i i n y x a y x p I ,其中 n a a a a ,,,,210Λ为待求的未知数,n 为多项式的最高次幂,由此该问题化为求),,,(210n a a a a I I Λ=的极值问题。 由多元函数求极值的必要条件:0)(200 =-=??∑∑==m i j i n k i k i k i x y x a a I ,其中n j ,,2,1,0Λ= 得到: ∑∑∑===+=n k m i i j i k m i k j i y x a x )(,其中n j ,,2,1,0Λ=,这是一个关于n a a a a ,,,,210Λ的线 性方程组,用矩阵表示如下所示:

数学实验-实验2 插值与拟合

广州大学学生实验报告 开课学院及实验室: 2014年 月 日 学院 数学与信息科学学院 年级、专业、班 姓名 学号 实验课程名称 数学实验 成绩 实验项目名称 实验2 插值与拟合 指导老师 一、实验目的 1、掌握用MATLAB 计算拉格朗日、分段线性、三次样条三种插值的方法,改变节点的数目,对三种插值结果进行初步分析。 2、掌握用MATLAB 作线性最小二乘拟合的方法。 3、通过实例学习如何用插值方法与拟合方法解决实际问题,注意二者的联系和区别。 二、实验设备 电脑、MATLAB 三、实验要求 1..选择一些函数,在n 个节点上(n )不要太大,如5~11)用拉格朗日,分段线性,三次样条三种插值方法,,计算m 各插值点的函数值(m 要适中,如50~100).通过数值和图形的输出,将三种插值结果与精确值进行比较.适当增加n ,再作比较,由此作初步分析.下列函数供选择参考: a. y=sin x ,0≦x ≦2π; 2.用 1 2 y x =在x=0,1,4,9,16产生5个节点15,...,P P .用不同的节点构造插值公式来计算x=5处的插值(如用 15,...,P P ;14,...,P P ;24,...,P P 等)与精确值比较进行分析。 5.对于实验1中的录像机计数器,自己实测一组数据(或利用给出的数据),确定模型2 t an bn =+中的系数a,b. 6.用电压V=10伏的电池给电容器充电,电容器上t 时刻的电压为 0()()t v t V V V e -τ =--,其中 0V 是电容器的初始 电压,τ是充电常数。试由下面一组t ,V 数据确定0V 和τ. t/s 0.5 1 2 3 4 5 7 9 V/V 6.36 6.48 7.26 8.22 8.66 8.99 9.43 9.63 8. 弹簧在力F 的作用下伸长x ,一定范围内服从胡克定律:F 与x 成正比,即F=kx,k 为弹性系数.现在得到下面一组x ,F 数据,并在(x,F )坐标下作图(图13).可以看出,当F大到一定数值(如x=9以后)后,就不服从这个定律了。试由数据拟合直线F=kx,并给出不服从胡克定律时的近似公式(曲线)。 1)要求直线与曲线在x=9处相连接。 2)要求直线与曲线在x=9处光滑连接. 四、实验程序 预备: function y=lagr1(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=s+p*y0(k); end y(i)=s; end 五、实验操作过程 当n=5时 clear; n=5; %在n 个节点上进行插值 m=75; %产生m 个插值点,计算函数在插值点处的精确值,将来进行对比 x=0:4/(m-1):2*pi; y=sin(x); z=0*x; x0=0:4/(n-1):2*pi; y0=sin(x0); y1=lagr1(x0,y0,x); % y1为拉格朗日插值 y2=interp1(x0,y0,x); % y2为分段线性插值 y3=spline(x0,y0,x); % y3为三次样条插值 [x' y' y1' y2' y3'] plot(x,z,'k',x,y,'r:',x,y1,'g-.',x,y2,'b',x,y3,'y--') gtext('Lagr.'), gtext('Pieces. linear'), gtext('Spline'), gtext('y=sin(x)') hold off; %比较插值所得结果与函数在插值点处的精确值 s = ' x y y1 y2 y3' [x' y' y1' y2' y3'] 结果 ans = 0 0 0 0 0 0.0541 0.0540 0.0495 0.0455 0.0611 0.1081 0.1079 0.0999 0.0910 0.1207 0.1622 0.1615 0.1510 0.1365 0.1787 0.2162 0.2145 0.2025 0.1819 0.2350 0.2703 0.2670 0.2541 0.2274 0.2896 0.3243 0.3187 0.3054 0.2729 0.3425 0.3784 0.3694 0.3563 0.3184 0.3936 0.4324 0.4191 0.4066 0.3639 0.4429 0.4865 0.4675 0.4559 0.4094 0.4904 0.5405 0.5146 0.5040 0.4548 0.5359 0.5946 0.5602 0.5508 0.5003 0.5796 0.6486 0.6041 0.5961 0.5458 0.6212 0.7027 0.6463 0.6396 0.5913 0.6609 0.7568 0.6866 0.6812 0.6368 0.6985 0.8108 0.7248 0.7208 0.6823 0.7341 0.8649 0.7610 0.7583 0.7278 0.7675

计算方法习题

《计算方法》练习题一 练习题第1套参考答案 一、填空题 1. 14159.3=π的近似值3.1428,准确数位是( 2 10- )。 2.满足d b f c a f ==)(,)(的插值余项=)(x R ( ))((!2) (b x a x f --''ξ )。 3.设)}({x P k 为勒让德多项式,则=))(),((22x P x P (5 2 )。 4.乘幂法是求实方阵(按模最大 )特征值与特征向量的迭代法。 5.欧拉法的绝对稳定实区间是( ]0,2[-)。 二、单选题 1.已知近似数,,b a 的误差限)(),(b a εε,则=)(ab ε(C )。 A .)()(b a εε B.)()(b a εε+ C.)()(b b a a εε+ D.)()(a b b a εε+ 2.设x x x f +=2)(,则=]3,2,1[f ( A )。 A.1 B.2 C.3 D.4 3.设A=?? ? ? ??3113,则化A为对角阵的平面旋转=θ( C ) . A. 2π B.3π C.4π D.6 π 4.若双点弦法收敛,则双点弦法具有(B )敛速. A.线性 B.超线性 C.平方 D.三次 5.改进欧拉法的局部截断误差阶是( C ). A .)(h o B.)(2 h o C.)(3 h o D.)(4 h o 三、计算题 1.求矛盾方程组:??? ??=-=+=+2 42321 2121x x x x x x 的最小二乘解。 22122122121)2()42()3(),(--+-++-+=x x x x x x x x ?, 由 0,021=??=??x x ? ?得:?? ?=+=+96292321 21x x x x , 解得14 9 ,71821== x x 。

实验报告五 插值

浙江大学城市学院实验报告 课程名称 科学计算 实验项目名称 函数的数值逼近-插值 实验成绩 指导老师(签名 ) 日期 一. 实验目的和要求 1. 掌握用Matlab 计算Lagrange 、分段线性、三次样条三种插值的方法,改变节点的数目, 对三种插值结果进行初步分析。 2. 通过实例学习如何用插值方法解决实际问题。 二. 实验内容和原理 1) 编程题2-1要求写出Matlab 源程序(m 文件),并对每一行语句加上适当的注释语句; 2) 分析应用题2-2,2-3,2-4,2-5要求将问题的分析过程、Matlab 源程序、运行结果和结 果的解释、算法的分析等写在实验报告上。 2-1 编程 编写Lagrange 插值函数的Matlab 程序,其中n 个插值节点以数组0x ,0y 输入,m 个待求点的自变量以数组x 输入。输出数组y 为m 个待求点的函数值。 Lagrange 插值:=lagr(0,0,)y x y x Step 1 输入插值节点数组0x ,0y 和待求节点x ; Step 2 数组0x 的长度为n ,x 的长度为m ; Step 3 对1,2, ,i n =,构造第i 个插值基函数 111111(0)(0)(0)(0) ()(00)(00)(00)(00) i i n i i i i i i i n x x x x x x x x l x x x x x x x x x -+-+----= ---- 并计算在m 个待求点上的基函数值。 Step 4 根据公式1 0()n i i i y y l x == ∑分别计算m 个待求点上的函数值。 并对程序的每一行语句加上适当的注释语句。

matlab 软件拟合与插值运算实验报告

实验6 数据拟合&插值 一.实验目的 学会MATLAB软件中软件拟合与插值运算的方法。 二.实验内容与要求 在生产和科学实验中,自变量x与因变量y=f(x)的关系式有时不能直接写出表达式,而只能得到函数在若干个点的函数值或导数值。当要求知道观测点之外的函数值时,需要估计函数值在该点的值。 要根据观测点的值,构造一个比较简单的函数y=t (x),使函数在观测点的值等于已知的数值或导数值,寻找这样的函数t(x),办法是很多的。 根据测量数据的类型有如下两种处理观测数据的方法。 (1)测量值是准确的,没有误差,一般用插值。 (2)测量值与真实值有误差,一般用曲线拟合。 MATLAB中提供了众多的数据处理命令,有插值命令,拟合命令。 1.曲线拟合 >> x=[0.5,1.0,1.5,2.0,2.5,3.0]; >> y=[1.75,2.45,3.81,4.80,7.00,8.60]; >> p=polyfit (x,y,2); >> x1=0.5:0.05:3.0; >> y1=polyval(p,x1 ); >> plot(x,y,'*r',x1,y1,'-b')

2.一维插值 >> year=[1900,1910,1920,1930,1940,1990,2000,2010]; >> product = [75.995,91.972,105.711,123.203,131.669,249.633,256.344,267.893 ]; >> p2005=interp1(year,product,2005) p2005 = 262.1185 >> y= interp1(year,product,x, 'cubic'); >> plot(year,product,'o',x,y)

数值分析实验报告-插值、三次样条(教育教学)

实验报告:牛顿差值多项式&三次样条 问题:在区间[-1,1]上分别取n=10、20用两组等距节点对龙格函数2 1()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.0202e-1 4*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)。

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