实验报告-插值法

  • 格式:doc
  • 大小:236.00 KB
  • 文档页数:8

计算机上机实验报告

专业和班级 姓名 成绩 学号

课程名称 数值计算方法 实验名称 插值法

求 实验目的

1、掌握用MATLAB计算拉格朗日、分段线性、三次样条三种插值的方法,改变节点的数目,对三种插值结果进行初步分析。

2、 掌握用MATLAB作线性最小二乘的方法。

3、通过实例学习如何用插值方法与拟合方法解决实际问题,注意二者的联系和区别。

骤 实验的主要内容

1、编制拉格朗日、牛顿插值程序,并运行一个简单的实例。

(1) 拉格朗日插值程序:

function v=polyinterp(x,y,u)

n=length(x);

v=zeros(size(u));

for k=1:n

w=ones(size(u));

for j=[1:k-1 k+1:n]

w=(u-x(j))./(x(k)-x(j)).*w;

end

v=v+w*y(k);

end

实例:当x=144,169,225时,y=12,13,15,用拉格朗日差值法求根号175。如下:

(2) 牛顿插值程序:

function y=newinterp(X,Y,x)% 牛顿插值函数

m=length(X);

for k=2:m

for j=1:k-1

Y(k)= (Y(k)- Y(j))/(X(k)-X(j));

end

end

y=Y(m);

for j=m-1:-1:1

y=y.*(x-X(j))+Y(j);

end

实例:当x=144,169,225时,y=12,13,15,用牛顿差值法求根号175。如下:

2、给定函数 xxf)(,已知:

414214.1.)0.2(f 449138.1.)1.2(f

483240.1.)2.2(f 516575.1.)3.2(f 549193.1.)4.2(f

用牛顿插值法求4次Newton插值多项式在2.15处的值,以此作为函

3.选择函数y=exp(-x2) (-2≤x≤2),在n个节点上(n不要太大,如5~11)用拉格朗日、分段线性、三次样条三种插值方法,计算m个插值点的函数值(m要适中,如50~100)。通过数值和图形输出,将三种插值结果与精确值进行比较。适当增加n,在作比较,由此作初步分析。

程序:

%不同插值方法是否会出现震荡runge现象

%M文件

function runge10

[X,Y]=fenduan(10,1);%将[-1,]区间分成10等份,返回对应的(x,y)五组数据

x=linspace(-2,2,100);%将[-1,1]划分成100等份,以便作出样条插值多项式的图形。

for i=1:length(x)%绘制原函数曲线图

y(i)=exp(-x(i)^2);

end

hold on

plot(x,y);

text(0,1,'\leftarrow原函数')%对曲线添加标注

y=newinterp(X,Y,x);%多项式插值中的牛顿插值法

hold on

plot(x,y);

title('插值函数中的runge现象,区间等分为10段'); %添加标题

xlabel('X轴');

ylabel('Y轴');

text(-0.9,1.5,'\leftarrow牛顿插值')%对曲线添加标注

y=interp1(X,Y,x);

plot(x,y);

text(-0.4,0.8521,'\leftarrow分段线性插值')

cs=spline(X,[0 Y 0]);%调用spline函数插值,y比x多两个元素。

plot(X,Y,'o',x,ppval(cs,x),'-');%做样条多项式的图形

text(-1.2,0.2369,'\leftarrow样条插值')

function [X,Y]=fenduan(n,b)%将区间等分成n份,并求对应点上的函数值

for i=1:n+1

X(i)=-2+(4*(i-1))/n;

Y(i)=exp(-X(i)^2);

end

function y=newinterp(X,Y,x)% 牛顿插值函数

m=length(X);

for k=2:m

for j=1:k-1

Y(k)= (Y(k)- Y(j))/(X(k)-X(j));

end

end

y=Y(m);

for j=m-1:-1:1

y=y.*(x-X(j))+Y(j);

end

讨 将三种插值结果相比较,显然分段线性插值法在节点处不光滑,拉格朗日值出现较大的振荡,样条差值的结果是最好的,改变n的值,运行程序,得到的图形如右图所示,比较这两个图可发现,节点增加后,三种插值方法结果的准确度均有所提高,因此可近似地认为:增加节点的个数可以提高插值结果的准确程度。

(注:可编辑下载,若有不当之处,请指正,谢谢!)