试验二 插值法与数据拟合

  • 格式:doc
  • 大小:100.00 KB
  • 文档页数:6

下载文档原格式

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

试验二 插值法

一、

实验目的

(1) 学会Lagrange 插值和牛顿插值等基本插值方法; (2) 讨论插值的Runge 现象,掌握分段线性插值方法

(3) 学会Matlab 提供的插值函数的使用方法,会用这些函数解决实际问题。 二、

实验要求

(1) 按照题目要求完成实验内容; (2) 写出相应的Matlab 程序;

(3) 给出实验结果(可以用表格展示实验结果); (4) 分析和讨论实验结果并提出可能的优化实验。 (5) 写出实验报告。 三、

实验步骤

1、用编好的Lagrange 插值法程序计算书本P66 的例1、用牛顿插值法计算P77的例1。

2、已知函数在下列各点的值为:

试用4

次牛顿插值多项式4()P x 对数据进行插值,根据

{(,),0.20.08,0,1,2,,10i i i x y x i i =+=L },画出图形。

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

2

1

(),(11)125f x x x =

-≤≤+作多项式插值,对不同n 值,分别画出插值函数及()f x 的图

形。

4、下列数据点的插值

可以得到平方根函数的近似,在区间[0,64]上作图。

(1) 用这9个点作8次多项式插值8()L x 。

5、在区间[0,10]画出sin()y x =的曲线,取插值节点,0,1,,10k x k k ==L 和节点处的函数值sin()k k y x =,作分段线性插值,并画出相应的折线图,将两图形绘在一张图上。

6、搜索Matlab 提供的三个数据拟合函数polyfit()、lsqcurvefit()、nlinfit()的使用方法。列出它们的典型应用例子。

一、实验目的

1、学会Lagrange 插值、牛顿插值和 分段线性插值等基本插值方法;

2、讨论插值的Runge 现象,掌握分段线性插值方法

3、学会Matlab 提供的插值函数、数据拟合函数的使用方法,并用这些函数解决实际问题。

二、实验原理

1、拉格朗日插值多项式

2、牛顿插值多项式

3、分段线性插值

三、实验步骤

1、用MA TLAB 编写独立的拉格朗日插值多项式函数

2、用MA TLAB 编写独立的牛顿插值多项式函数

3、利用编写好的函数计算本章P66例1、P77例1的结果并比较。

4、已知函数在下列各点的值为:

试用4

次牛顿插值多项式4()P x 对数据进行插值,根据

{(,),0.20.08,0,1,2,,10i i i x y x i i =+=L },画出图形。

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

2

1

(),(11)125f x x x

=

-≤≤+作多项式插值,对不同n 值,分别画出插值函数及()f x 的图形。

6、下列数据点的插值

(1)可以得到平方根函数的近似,在区间[0,64]上作图。 (2) 用这9个点作8次多项式插值8()L x 。

7、在区间[0,10]画出sin()y x =的曲线,取插值节点,0,1,,10k x k k ==L 和节点处的函数值sin()k k y x =,作分段线性插值,并画出相应的折线图,将两图形绘在一张图上。

源程序与解答:

1、Lagrange 插值多项式源代码

function yi=Lagrange(x, y, xi) % Lagrange 插值多项式,其中 % x --- 向量,全部的插值节点 % y --- 向量,插值节点处的函数值 % xi --- 标量,自变量x % yi --- xi 处的函数估计值 n=length(x); m=length(y); if n~=m

error('The lengths of X and Y must be equal'); return; end

p=zeros(1,n);

% 对向量p 赋初值0 for k=1:n

t=ones(1,n); for j=1:n if j~=k

if abs(x(k)-x(j))

error('the DATA is error!'); return; end

t(j)=(xi-x(j))/(x(k)-x(j)); end end

p(k)=prod(t); end

yi=sum(y.*p);

(2)function yi=New_Int(x, y, xi)

% Newton 基本插值公式,其中

% x --- 向量,全部的插值节点,按行输入

% y --- 向量,插值节点处的函数值,按行输入

% xi --- 标量,自变量x

% yi --- xi 处的函数估计值

n=length(x); m=length(y);

if n~=m

error('The lengths of X and Y must be equal'); return;

end

% 计算均差表Y

Y=zeros(n); Y(:,1)=y';

% Y(:,1)表示矩阵中第一列的元素

for k=1:n-1

for i=1:n-k

if abs(x(i+k)-x(i))

error('the DATA is error!');

return;

end

Y(i,k+1)=(Y(i+1,k)-Y(i,k))/(x(i+k)-x(i)); end

end

% 计算Newton插值公式 N(xi)

yi=0;

for i=1:n

z=1;

for k=1:i-1

z=z*(xi-x(k));

end

yi=yi+Y(1,i)*z;

end

(其它内容待同学们补充完整)

四、实验结果

五、讨论分析

(对上述算例的计算结果进行比较分析,自己补充)