数值分析实验(2)

实验二 插值法 P50

专业班级:信计131班 姓名:段雨博 学号:2013014907 一、实验目的

1、熟悉MATLAB 编程;

2、学习插值方法及程序设计算法。 二、实验题目

试用4次牛顿插值多项式P 4(x )及三次样条函数S (x )(自然边界条件)对数据进行插值用图给出

{(x , y ), x =0.2+0.08i , i =0,1,11,10},P (x )及S (x )。

i

i

i

4

2、在区间[-1,1]上分别取n =10,20用两组等距节点对龙格函数f (x )=

1

作多项式2

1+25x

插值及三次样条插值,对每个n 值,分别画出插值函数及f (x )的图形。 3、下列数据点的插值

可以得到平方根函数的近似,在区间[0,64]上作图 (1)用这9个点作8次多项式插值L 8(x ) (2)用三次样条(第一边界条件)程序求S (x )

从得到结果看在[0,64]上,哪个插值更精确;在区间[0,1]上,两种插值哪个更精确? 三、实验原理与理论基础 1、拉格朗日差值公式

L 1(x ) =y k +

y k +1-y k

(x -x k ) 点斜式

x k +1-x k

两点式

L 1(x ) =y k

x k +1-x x -x k

+y k +1

x k +1-x k x k +1-x k

n

2、n 次插值基函数 L n (x j ) =

∑y l (x ) =y , j =0, 1, 2..., n .

k k

j

i

k =0

l k (x ) =

(x -x 0)

x k -x 0)

...

(x -x k -1)

x k -x k -1)

...

(x -x n )

x k -x n )

, k =0, 1,..., n

3、牛顿插值多项式

P n (x ) =f (x 0) +f [x 0, x 1](x +x 0) +f [x 0, x 1, x 2](x -x 0)(x -x 1) +... +f [x 0,..., x n ](x -x 0)...(x -x n -1)

R n (x ) =f (x ) -P n (x ) =f [x , x 0,..., x n ]ωn +1(x )

4、三次样条函数

若函数S (x ) ∈C 2[a , b ],且在每个小区间[x j , x j +1]上是三次多项式,其中,

a =x 0

5、三次样条函数的边界条件

(1)S ' ' (x 0) =f 0' ' =S ' ' (x n ) =f n ' ' =0 (2)S ' (x 0) =f 0' , S ' (x n ) =f n ' 四、实验内容 1、M 文件:

function [p]=Newton_Polyfit(X,Y)

format long g r=size(X); n=r(2); M=ones(n,n); M(:,1)=Y'; for i=2:n for j=i:n

M(j,i)=(M(j,i-1)-M(j-1,i-1))/(X(j)-X(j-i+1)); end end

p0=[zeros(1,n-1) M(1,1)];p=p0; for i=1:n-1

p1=M(i+1,i+1).*poly(X(1:i)); p0=[zeros(1,n-i-1) p1]; p=p+p0; end

3、M 文件:

function f=Language(~,~,~)

%%求已知数据点的拉格朗日插值多项式 %%已知数据点的x 坐标向量:x %%已知数据点的y 坐标向量:y %%插值点的x 坐标:x0 %%解得的拉格朗日插值多项式f

x=[0.0 0.4 0.8 1.2 1.6];

y=[0 0.428392 0.722101 0.910314 0.970348]; x0=[0.3 0.5]; syms t l ;

if (length(x)==length(y)) n=length(x); else

disp('x ,y 维数不一样' ); return ; end p=sym(0); for i=1:n l=sym(y(i)); for k=1:i-1

l=l*(t-x(k))/(x(i)-x(k)); end

for k=i+1:n

l=l*(t-x(k))/(x(i)-x(k)); end p=p+1; end

simplify(p); f=subs(p,'t' ,x0); f=vpa(f,6); end

五、实验结果

1、

>> X=[0.2 0.4 0.6 0.8 1.0];

>> Y=[0.98 0.92 0.81 0.64 0.38]; >> [p]=Newton_Polyfit(X,Y); >> Y2=polyval(p,X); >> X1=0:0.01;1;

>> Y3=interp1(X,Y,X1,'spline');

>> plot(X,Y,'o',X,Y2,'r',X1,Y3,'g') 图像:

2、

>> X=-1:0.01:1;

>> Y=1./(1+25*X.^2); >> X1=-1:0.2:1;

>> Y1=1./(1+25*X1.^2);

>> Y2=interp1(X1,Y1,X,'linear'); >> Y3=interp1(X1,Y1,X,'spline'); >> subplot(211)

>> plot(X,Y,X,Y2,'r-',X,Y3,'g-') 图像:

3、

>> x=[0;1;4;9;16;25;36;49;64]; >> y=0:1:8;

>> x0=0:0.1:64;

>> f=Language(x,y,x0);

>> Y=interp1(x,y,x0,'spline'); >> Y1=sqrt(x0);

>> plot(x0,Y1,x0,f,'g',x0,Y,'r') 图像:

六、实验结果分析与小结

1、通过这次实习,我学会了用matlab 设计程序并运行绘制出图形。根据已知的点的信息用牛顿插值法、三次样条插值法、拉格朗日插值法等插值方法来求得近似函数,在运行出图形时可以很直观地看出近似函数的精确度哪个更好。使用matlab 来处理数学问题确实很方便,使我对matlab 的很多功能也有了不少的了解,知道了最基本最常用的术语怎么来表达,同时让我对这几个插值方法的算法更熟悉。

2、不过,使用matlab 进行程序设计对我来说确实有点难度,不太会编写函数,特别是涉及到专门的函数,matlab 中已有的函数,不太会调用,查一下资料看到别人如何表示我也不是太懂,现在用matlab 写作业需要很长时间,而且还参考别人是如何写函数的,自己只是稍作修改来运行,出现问题也不太会修改。以后实习多练习,学会编写程序,学会调用matlab 内部函数,了解更多。

实验二 插值法 P50

专业班级:信计131班 姓名:段雨博 学号:2013014907 一、实验目的

1、熟悉MATLAB 编程;

2、学习插值方法及程序设计算法。 二、实验题目

试用4次牛顿插值多项式P 4(x )及三次样条函数S (x )(自然边界条件)对数据进行插值用图给出

{(x , y ), x =0.2+0.08i , i =0,1,11,10},P (x )及S (x )。

i

i

i

4

2、在区间[-1,1]上分别取n =10,20用两组等距节点对龙格函数f (x )=

1

作多项式2

1+25x

插值及三次样条插值,对每个n 值,分别画出插值函数及f (x )的图形。 3、下列数据点的插值

可以得到平方根函数的近似,在区间[0,64]上作图 (1)用这9个点作8次多项式插值L 8(x ) (2)用三次样条(第一边界条件)程序求S (x )

从得到结果看在[0,64]上,哪个插值更精确;在区间[0,1]上,两种插值哪个更精确? 三、实验原理与理论基础 1、拉格朗日差值公式

L 1(x ) =y k +

y k +1-y k

(x -x k ) 点斜式

x k +1-x k

两点式

L 1(x ) =y k

x k +1-x x -x k

+y k +1

x k +1-x k x k +1-x k

n

2、n 次插值基函数 L n (x j ) =

∑y l (x ) =y , j =0, 1, 2..., n .

k k

j

i

k =0

l k (x ) =

(x -x 0)

x k -x 0)

...

(x -x k -1)

x k -x k -1)

...

(x -x n )

x k -x n )

, k =0, 1,..., n

3、牛顿插值多项式

P n (x ) =f (x 0) +f [x 0, x 1](x +x 0) +f [x 0, x 1, x 2](x -x 0)(x -x 1) +... +f [x 0,..., x n ](x -x 0)...(x -x n -1)

R n (x ) =f (x ) -P n (x ) =f [x , x 0,..., x n ]ωn +1(x )

4、三次样条函数

若函数S (x ) ∈C 2[a , b ],且在每个小区间[x j , x j +1]上是三次多项式,其中,

a =x 0

5、三次样条函数的边界条件

(1)S ' ' (x 0) =f 0' ' =S ' ' (x n ) =f n ' ' =0 (2)S ' (x 0) =f 0' , S ' (x n ) =f n ' 四、实验内容 1、M 文件:

function [p]=Newton_Polyfit(X,Y)

format long g r=size(X); n=r(2); M=ones(n,n); M(:,1)=Y'; for i=2:n for j=i:n

M(j,i)=(M(j,i-1)-M(j-1,i-1))/(X(j)-X(j-i+1)); end end

p0=[zeros(1,n-1) M(1,1)];p=p0; for i=1:n-1

p1=M(i+1,i+1).*poly(X(1:i)); p0=[zeros(1,n-i-1) p1]; p=p+p0; end

3、M 文件:

function f=Language(~,~,~)

%%求已知数据点的拉格朗日插值多项式 %%已知数据点的x 坐标向量:x %%已知数据点的y 坐标向量:y %%插值点的x 坐标:x0 %%解得的拉格朗日插值多项式f

x=[0.0 0.4 0.8 1.2 1.6];

y=[0 0.428392 0.722101 0.910314 0.970348]; x0=[0.3 0.5]; syms t l ;

if (length(x)==length(y)) n=length(x); else

disp('x ,y 维数不一样' ); return ; end p=sym(0); for i=1:n l=sym(y(i)); for k=1:i-1

l=l*(t-x(k))/(x(i)-x(k)); end

for k=i+1:n

l=l*(t-x(k))/(x(i)-x(k)); end p=p+1; end

simplify(p); f=subs(p,'t' ,x0); f=vpa(f,6); end

五、实验结果

1、

>> X=[0.2 0.4 0.6 0.8 1.0];

>> Y=[0.98 0.92 0.81 0.64 0.38]; >> [p]=Newton_Polyfit(X,Y); >> Y2=polyval(p,X); >> X1=0:0.01;1;

>> Y3=interp1(X,Y,X1,'spline');

>> plot(X,Y,'o',X,Y2,'r',X1,Y3,'g') 图像:

2、

>> X=-1:0.01:1;

>> Y=1./(1+25*X.^2); >> X1=-1:0.2:1;

>> Y1=1./(1+25*X1.^2);

>> Y2=interp1(X1,Y1,X,'linear'); >> Y3=interp1(X1,Y1,X,'spline'); >> subplot(211)

>> plot(X,Y,X,Y2,'r-',X,Y3,'g-') 图像:

3、

>> x=[0;1;4;9;16;25;36;49;64]; >> y=0:1:8;

>> x0=0:0.1:64;

>> f=Language(x,y,x0);

>> Y=interp1(x,y,x0,'spline'); >> Y1=sqrt(x0);

>> plot(x0,Y1,x0,f,'g',x0,Y,'r') 图像:

六、实验结果分析与小结

1、通过这次实习,我学会了用matlab 设计程序并运行绘制出图形。根据已知的点的信息用牛顿插值法、三次样条插值法、拉格朗日插值法等插值方法来求得近似函数,在运行出图形时可以很直观地看出近似函数的精确度哪个更好。使用matlab 来处理数学问题确实很方便,使我对matlab 的很多功能也有了不少的了解,知道了最基本最常用的术语怎么来表达,同时让我对这几个插值方法的算法更熟悉。

2、不过,使用matlab 进行程序设计对我来说确实有点难度,不太会编写函数,特别是涉及到专门的函数,matlab 中已有的函数,不太会调用,查一下资料看到别人如何表示我也不是太懂,现在用matlab 写作业需要很长时间,而且还参考别人是如何写函数的,自己只是稍作修改来运行,出现问题也不太会修改。以后实习多练习,学会编写程序,学会调用matlab 内部函数,了解更多。


相关文章

  • 参数对透明光学制品残余应力的影响
  • 工艺参数对透明光学制品残余应力的影响* {::薹蒙詈季套萋矣≤{?1桂蓉06美:..4,张于贤1'2 " (2.桂林电子科技大学,桂林 541004) '" - 王 红2 摘要:通过光弹实验测量残余应力的分布形态,并通过 ...查看


  • 数值分析作业思考题
  • 数值分析思考题1 1.讨论绝对误差(限).相对误差(限)与有效数字之间的关系. 2.相对误差在什么情况下可以用下式代替? e *x *-x e =*= x x * *r 3.查阅何谓问题的"病态性",并区分与" ...查看


  • 数值分析课程设计(最终版)
  • 本文主要通过Matlab 软件,对数值分析中的LU 分解法.最小二乘法.复化Simpon 积分.Runge-Kutta 方法进行编程,并利用这些方法在MATLAB 中对一些问题进行求解,并得出结论. 实验一线性方程组数值解法中,本文选取LU ...查看


  • 数值分析实验一
  • 数值分析实验一 一.实验名称 不同方案收敛速度的比较 二.实验目的 通过实验体会数值计算中算法选择的重要地位 三.实验内容 三种求Ln2的算法比较 n ∞(-1) k -1111(-1) k -1方案一:利用级数Ln 2=1-+-+ =∑k ...查看


  • 电子测量技术与仪器电子版实验报告
  • <电子测量技术与仪器> 实验报告 实验一 仪器使用总论 一.实验目的: 1, 通过老师的讲解以及自己的学习了解实验的常规仪器,常用设备,以及耗材; 2, 掌握以后做实验所用仪器的功能和使用方法: 3, 知道模拟示波器,数字示波器 ...查看


  • 正交试验设计
  • 正交试验设计 5.1 试验设计方法概述 试验设计是数理统计学的一个重要的分支.多数数理统计方法主要用于分析已经得到的数据,而试验设计却是用于决定数据收集的方法.试验设计方法主要讨论如何合理地安排试验以及试验所得的数据如何分析等. 例5-1 ...查看


  • 正交实验设计方法
  • 第5章正交试验设计方法 5.1试验设计方法概述 试验设计是数理统计学的一个重要的分支.多数数理统计方法主要用于分析已经得到的数据,而试验设计却是用于决定数据收集的方法.试验设计方法主要讨论如何合理地安排试验以及试验所得的数据如何分析等. 例 ...查看


  • 对休止角测定方法的讨论_董玉秀
  • 学报 4):317-320JournalofChinaPharmaceuticalUniversity 2008,39( 317 对休止角测定方法的讨论 董玉秀,宋珍鹏,崔素娟 (河南中医学院药剂学教研室,郑州450008) 摘 要 目的: ...查看


  • 实验二 怎样计算Pi
  • 数 学 实 验 实 验 报 告 学院:数学与统计学院 班级:数学与应用数学3班 学号:[1**********]4 姓名:康萍 时间:2016.04.05 实验二 怎样计算π 一.实验目的 分别用下列三种方法计算π的近似值,并比较三种方法的 ...查看


  • 数值分析报告
  • 重庆交通大学计算机与信息学院 设计性实 验报告 班 级: 05计科(3)班 实验项目性质: 综合设计性实验 实验所属课程: 数 值 分 析 实验室(中心) : 计算机软件中心 指 导 教 师 : 程 攀 学 生 学 号 : 05060315 ...查看


热门内容