试验二 插值法与数据拟合
- 格式:doc
- 大小:100.00 KB
- 文档页数:6
试验二 插值法
一、
实验目的
(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 (其它内容待同学们补充完整) 四、实验结果 五、讨论分析 (对上述算例的计算结果进行比较分析,自己补充)