试验一插值法与数据拟合.docx
- 文档编号:6213738
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:14
- 大小:57.53KB
试验一插值法与数据拟合.docx
《试验一插值法与数据拟合.docx》由会员分享,可在线阅读,更多相关《试验一插值法与数据拟合.docx(14页珍藏版)》请在冰豆网上搜索。
试验一插值法与数据拟合
试验一插值法与数据拟合
一、实验目的
(1)学会Lagrange插值、牛顿插值和Hermite插值等基本插值方法;
(2)讨论插值的Runge现象,掌握分段线性插值方法
(3)学会Matlab提供的插值函数的使用方法,会用这些函数解决实际问题。
二、实验要求
(1)按照题目要求完成实验内容;
(2)写出相应的Matlab程序;
(3)给出实验结果;
(4)分析和讨论实验结果
(5)写出实验报告。
三、实验题目
(1)书本P50的习题1、习题2和习题3(涉及三次样条函数部分不用做)。
(2)书本P95的习题1和习题2。
附:
试验报告格式样本
实验一插值法与数据拟合
班级:
学号:
姓名:
1.1实验目的
掌握牛顿插值法的基本思路和步骤;掌握最小二乘法的基本思路和拟合步骤。
培养编程与上机调试能力。
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);
plot(x,y,'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);
plot(x,y,'b')
得到的图形如图一所示。
图一第一题其牛顿插值所的的图形
问题与作业:
本程序缺点:
本程序只适合本题目,修改自变量及函数的取值,又得修改程序,能否请大家编写一个通用的牛顿插值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)) error('theDATAiserror! '); 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; fori=1: n z=1; fork=1: i-1 z=z*(xi-x(k)); end yi=yi+Y(1,i)*z; end 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); fori=1: m z(i)=Lagrange(x,y,x(i)); end holdon plot(x,y,'o');plot(x,y,'o');xlabel('x');ylabel('y'); plot(x,z,'r-'); holdoff functionyi=Lagrange(x,y,xi) %Lagrange插值多项式,其中 %x---向量,全部的插值节点 %y---向量,插值节点处的函数值 %xi---标量,自变量x %yi---xi处的函数估计值 n=length(x);m=length(y); ifn~=m error('ThelengthsofXandYmustbeequal'); return; end p=zeros(1,n); fork=1: n t=ones(1,n); forj=1: n ifj~=k ifabs(x(k)-x(j)) error('theDATAiserror! '); return; end t(j)=(xi-x(j))/(x(k)-x(j)); end end p(k)=prod(t); end yi=sum(y.*p); 习题一参考程序 1.%调用Lagrange()函数,具体参见上面给出的函数。 x=[0.20.40.60.81.0]; y=[0.980.920.810.640.38]; xx=0.2: 0.08: 1.0; m=length(xx);z=zeros(1,m); fori=1: m z(i)=Lagrange(x,y,xx(i)); end plot(x,y,'o',xx,z,'r-'); 所得计算图形如下图所示。 习题一的图形对比 2.参考程序,其中调用了Lagrange()函数 functionRunge(n) %Runge现象 %n---等距离节点 a=-1;b=1;h=(b-a)/n; x=[a: h: b];y=1./(1+25.*x.^2); xx=[a: 0.01: b];yy=1./(1+25.*xx.^2); m=length(xx);z=zeros(1,m); fori=1: m z(i)=Lagrange(x,y,xx(i)); end holdon plot(x,y,'o');plot(xx,z,'r-'); holdoff 调用Runge(10)得到的图像如下 图: Runge(10)的图像对比 Runge(12)的图像如下: 图Runge(12)的图像对比: Runge(20)的图像如: 图Runge(20)的图像对比 3. (1)参考程序 x=[01491625364964]; y=[012345678]; xx=[0: 0.5: 64];yy=sqrt(xx); m=length(xx);z=zeros(1,m); fori=1: m z(i)=Lagrange(x,y,xx(i)); end plot(x,y,'o',xx,yy,'.',xx,z,'r-'); 所得图像对比如下 习题3 (1)所得到的图像对比 第三章数据拟合实验参考程序 1.先写后面可能用到的函数 functiony=phi_k(x,k) %基函数的乘积 ifk==0 y=ones(size(x)); else y=x.^k; end 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;end ifnargin<3n=1;end Phi2=zeros(n+1); fori=0: n forj=0: n Phi2(i+1,j+1)=sum((w.*phi_k(x,i)).*phi_k(x,j)); end end PhiF=zeros(n+1,1); fori=0: n PhiF(i+1)=sum((w.*phi_k(x,i)).*y); end S=Phi2\PhiF; 主程序 x=-1: 0.2: 1;y=1./(1+25.*x.^2); S=squar_least(x,y,3) 得到 S= 0.4841 0.0000 -0.5752 -0.0000 所以,最小二乘多项式为(要求的为三次多项式,但求到的实际上为二次多项式) 其最小二乘拟合曲线和对应的散点图如下: (与插值所得的结果不同,为什么呢? 大家思考! ) 画图对应的Matlab代码。 >>x=-1: 0.2: 1;y=1./(1+25.*x.^2); >>xx=-1: 0.05: 1; >>m=length(xx); >>yy=zeros(1,m); >>fori=1: m yy(i)=0.4841-0.5752.*xx(i).^2; end >>holdon >>plot(x,y,'+'); >>plot(xx,yy,'r-'); >>holdoff
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 试验一 插值法与数据拟合 试验 插值法 数据 拟合