试验一插值法与数据拟合Word下载.docx
《试验一插值法与数据拟合Word下载.docx》由会员分享,可在线阅读,更多相关《试验一插值法与数据拟合Word下载.docx(14页珍藏版)》请在冰豆网上搜索。
1.2算法描述
1.2.1牛顿插值法基本思路
给定插值点序列(
构造牛顿插值多项式
。
输入要计算的函数点
并计算
的值,利用牛顿插值公式,当增加一个节点时,只需在后面多计算一项,而前面的计算仍有用;
另一方面
的各项系数恰好又是各阶差商,而各阶差商可用差商公式来计算。
1.2.2牛顿插值法计算步骤
1.输入
值及(
;
要计算的函数点
2.对给定的
由
计算
的值。
3.输出
1.3牛顿插值法题目{}
1.4本题目的Matlab源程序{}
1.5程序运行结果{}
1.6总结和评价{}
例题4所求4次牛顿插值多项式曲线模拟。
x=0.4:
0.05:
1.05;
y=0.41075+1.116.*(x-0.4)+0.28.*(x-0.4).*(x-0.55)+0.19733.*(x-0.4).*(x-0.55).*(x-0.65)+0.03134.*(x-0.4).*(x-0.55).*(x-0.65).*(x-0.8);
plot(x,y,'
bo'
)
例题5
的4次牛顿插值模拟。
x=0.00:
0.1:
1.5;
y=1.0000+x.*(-0.00500)+x.*(x-1)./2.*(-0.00993)+0.00013./6.*(x).*(x-1).*(x-2)+0.00012./24.*x.*(x-1).*(x-2).*(x-3);
y1=cos(x);
r'
x,y1,'
b'
第二章计算实习题解答
1.Matlab程序
x=0.2:
0.08:
1.0;
y=0.98-0.3.*(x-.02)-(1.5./4).*(x-0.2).*(x-0.4)-(25./24).*(x-0.2).*(x-0.4).*(x-0.6)+(25./24).*(x-0.2).*(x-0.4).*(x-0.6).*(x-0.8);
得到的图形如图一所示。
图一第一题其牛顿插值所的的图形
问题与作业:
本程序缺点:
本程序只适合本题目,修改自变量及函数的取值,又得修改程序,能否请大家编写一个通用的牛顿插值Matlab程序,使得只需输入自变量及函数值,调用该程序即可得到结果?
例如:
编写一个基本牛顿插值函数(其变种有等距离牛顿插值函数)
functionyi=New_Int(x,y,xi)
%Newton基本插值公式,其中
%x---向量,全部的插值节点,按行输入
%y---向量,插值节点处的函数值,按行输入
%xi---标量,自变量x
%yi---xi处的函数估计值
n=length(x);
m=length(y);
ifn~=m
error('
ThelengthsofXandYmustbeequal'
);
return;
end
%计算均差表Y
Y=zeros(n);
Y(:
1)=y'
;
%Y(:
1)表示矩阵中第一列的元素
fork=1:
n-1
fori=1:
n-k
ifabs(x(i+k)-x(i))<
eps
theDATAiserror!
'
end
Y(i,k+1)=(Y(i+1,k)-Y(i,k))/(x(i+k)-x(i));
%计算Newton插值公式N(xi)
yi=0;
fori=1:
n
z=1;
fork=1:
i-1
z=z*(xi-x(k));
yi=yi+Y(1,i)*z;
2.画龙格函数
的图形的matlab代码及图形
a=-1;
b=1;
n=100;
h=(b-a)/n;
>
x=a:
h:
b;
y=1./(1+25.*x.^2);
plot(x,y,'
k'
图二龙格函数的图形
问题:
请用Lagrange多项式对龙格函数进行插值并比较函数图形。
3.平方根函数
及其8次多项式插值
对应的图形对比。
Matlab源程序:
functionL8
%平方根函数
的8次多项式插值
x=[01491625364964];
y=sqrt(x);
m=length(x);
z=zeros(1,m);
m
z(i)=Lagrange(x,y,x(i));
holdon
o'
xlabel('
x'
ylabel('
y'
plot(x,z,'
r-'
holdoff
functionyi=Lagrange(x,y,xi)
%Lagrange插值多项式,其中
%x---向量,全部的插值节点
%y---向量,插值节点处的函数值
p=zeros(1,n);
t=ones(1,n);
forj=1:
ifj~=k
ifabs(x(k)-x(j))<
t(j)=(xi-x(j))/(x(k)-x(j));
p(k)=prod(t);
yi=sum(y.*p);
习题一参考程序
1.%调用Lagrange()函数,具体参见上面给出的函数。
x=[0.20.40.60.81.0];
y=[0.980.920.810.640.38];
xx=0.2:
m=length(xx);
z=zeros(1,m);
z(i)=Lagrange(x,y,xx(i));
xx,z,'
所得计算图形如下图所示。
习题一的图形对比
2.参考程序,其中调用了Lagrange()函数
functionRunge(n)
%Runge现象
%n---等距离节点
a=-1;
b=1;
h=(b-a)/n;
x=[a:
b];
y=1./(1+25.*x.^2);
xx=[a:
0.01:
yy=1./(1+25.*xx.^2);
z(i)=Lagrange(x,y,xx(i));
plot(xx,z,'
调用Runge(10)得到的图像如下
图:
Runge(10)的图像对比
Runge(12)的图像如下:
图Runge(12)的图像对比:
Runge(20)的图像如:
图Runge(20)的图像对比
3.
(1)参考程序
y=[012345678];
xx=[0:
0.5:
64];
yy=sqrt(xx);
xx,yy,'
.'
所得图像对比如下
习题3
(1)所得到的图像对比
第三章数据拟合实验参考程序
1.先写后面可能用到的函数
functiony=phi_k(x,k)
%基函数的乘积
ifk==0
y=ones(size(x));
else
y=x.^k;
functionS=squar_least(x,y,n,w)
%数据的最小二乘拟合,其中
%x,y---数据的(x,y)坐标
%n---数据拟合的次数,缺省时n=1
%w---权值,缺省时w=1
%S---数据拟合的系数
%需要另写的函数
%phi(x)---基函数,通常为多项式1,x,x^2,...
globali;
globalj;
ifnargin<
4w=1;
3n=1;
Phi2=zeros(n+1);
fori=0:
forj=0:
n
Phi2(i+1,j+1)=sum((w.*phi_k(x,i)).*phi_k(x,j));
PhiF=zeros(n+1,1);
PhiF(i+1)=sum((w.*phi_k(x,i)).*y);
S=Phi2\PhiF;
主程序
x=-1:
0.2:
1;
S=squar_least(x,y,3)
得到
S=
0.4841
0.0000
-0.5752
-0.0000
所以,最小二乘多项式为(要求的为三次多项式,但求到的实际上为二次多项式)
其最小二乘拟合曲线和对应的散点图如下:
(与插值所得的结果不同,为什么呢?
大家思考!
画图对应的Matlab代码。
xx=-1:
0.05:
m=length(xx);
yy=zeros(1,m);
yy(i)=0.4841-0.5752.*xx(i).^2;
holdon
+'
plot(xx,yy,'
holdoff