数值分析课程设计报告--插值算法及MATLAB实现Word文档格式.docx
- 文档编号:3684950
- 上传时间:2023-05-02
- 格式:DOCX
- 页数:12
- 大小:191.21KB
数值分析课程设计报告--插值算法及MATLAB实现Word文档格式.docx
《数值分析课程设计报告--插值算法及MATLAB实现Word文档格式.docx》由会员分享,可在线阅读,更多相关《数值分析课程设计报告--插值算法及MATLAB实现Word文档格式.docx(12页珍藏版)》请在冰点文库上搜索。
原函数存在,但是其表达式相当复杂,而且有时候难以给出最后的数值结果;
除一些特俗的无穷外,通常很难求出无穷积分的值;
被积函数没有有限的解析式,而以表格的形式给出.因此能够借助牛顿-莱布尼兹公式计算定积分的情形是不多的.另外,许多实际问题中的被积函数往往是列表函数或其他形式的非连续函数,对这类函数的定积分,也不能用不定积分方法求解,只能设法求其近似值.因此,探讨近似计算的数值积分方法是有明显的实际意义的,即有必要研究定积分的数值计算方法,以解决定积分的近似计算。
而数值积分就是解决此类问题的一种有效的方法,它的特点是利用被积函数在一些节点上的信息求出定积分的近似值.
在求一些函数的定积分时,由于原函数十分复杂难以求出或用初等函数表达,导致积分很难精确求出,只能设法求其近似值,因此能够直接借助牛顿-莱布尼兹公式计算定积分的情形是不多的.数值积分就是解决此类问题的一种行之有效的方法.因此,探讨近似计算的数值积分方法是有着明显的实际意义的.本文较详细地介绍了牛顿-科特斯求积公式,以及为了提高积分计算精度的高精度数值积分公式,即龙贝格求积公式和高斯-勒让德求积公式.除了研究这些数值积分算法的理论外,本文还将这些数值积分算法在计算机上通过MATLAB软件编程实现,并通过实例用各种求积公式进行运算,分析比较了各种求积公式的计算误差.
1.2常见的插值法
插值法常需要从一组有限的实验观测数据里获取自变量和函数之间的关系,或者推算出该函数在某些点上的函数值,或者求解与该函数相关的一些问题.本次报告所用到的常用插值法有:
1.拉格朗日插值法
2.牛顿插值法
3.赫尔米特插值法
1.3MATLAB的简介
MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分.
MATLAB是matrix&
laboratory两个词的组合,意为矩阵工厂(矩阵实验室),是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境.它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平.
MATLAB和Mathematica、Maple并称为三大数学软件.它在数学类科技应用软件中在数值计算方面首屈一指.MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域.
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件.在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持.MATLAB软件在数值分析实验教学上具有与其他软件无法比拟的优势.
2插值法简介
设函数在区间[a,b]上有定义,且一直在点的值,若存在以简单函数,使
成立,使称为的插值函数,点称为插值节点,包含插值节点的区间[a,b]称为插值区间,求插值函数的方法称为插值法,若是次数不超过n的代数多项式,即
其中为实数,就称为插值多项式,相应的插值法称为多项式插值.若是分段多项式,就是分段插值。
若是三角多项式,就称为三角插值.
从几何上看插值法就是求曲线,使其通过给定的n+1个点,,并用它近似已知曲线.
2.1拉格朗日插值法
定义若次多项式在个节点上满足条件
就称这个n次多项式为节点上的n次插值基函数.
用及的情况得到的1次插值基函数和2次插值基函数加以推导可得到n次插值基函数为
于是满足上式的插值多项式可表示为
由的定义,知
.
我们将形如上式的插值多项式称为拉格朗日多项式.
2.1.1拉格朗日插值法的MATLAB程序
Functionyi=Lagrange(x,y,xi)%用Lagrange插值法求解
m=length(x);
n=length(y);
p=length(xi);
%x是节点向量,y是x的函数值,xi是插值点
ifm~=n
error('
向量x与y的长度必须一致'
);
end
s=0;
fork=1:
n
t=ones(1,p);
%生成1行p列所有元素均为1的矩阵
forj=1:
n
ifj~=k;
t=t.*(xi-x(j))/(x(k)-x(j));
%计算拉格朗日插值基函数
end
end
s=s+t*y(k);
%计算拉格朗日插值函数
yi=s;
2.1.2拉格朗日插值法的MATLAB程序例题
例2.1.1已知,sin0.34=0.3335,sin0.36=0.3623,使用拉格朗日插值法求sin0.3367.
解:
在MATLAB命令窗口调用命令Lagrange(x0,y0,x)的程序如下:
>
x=[0.32,0.02,0.36];
y=[0.3146,0.3335,0.3523];
y1=Lagrange(x,y,115)
运行结果:
y1=0.3304
例2.1.2用拉格朗日插值法计算.
x=[100121];
y=[10,11];
y1=Lagrange(x,y,115);
y1=10.7143
2.2牛顿插值法
定义1称为函数关于点,的一阶均差.称为的二阶均差.一般地,称
为的k阶均差.
借助均差的定义,一次插值多项式可表示为
,
而二次插值多项式可表示为
根据均差的定义,由一次插值多项式和二次插值多项式可得到
我们将满足的多项式称为牛顿均差插值多项式.
定义2在的情形下,设函数值为,称为处以为步长的一阶(向前)差分.
类推为的二阶差分.一般地,称
为的n阶差分.则
为牛顿前插公式.
2.2.1牛顿插值法的MATLAB程序
functionyi=newtonint(x,y,xi)%定义牛顿插值函数
%x是节点向量,y是节点上的函数值
)
k=2;
f
(1)=y
(1)
whilek~=n+1
f
(1)=y(k);
k,x(k)
fori=1:
k-1
ifi~=k-1
f(i+1)=(f(i)-y(i))/(x(k)-x(i));
end
cs(i)=f(i+1);
y(k)=f(k);
k=k+1;
cfwh=0
fori=1:
n-2
w=1;
forj=1:
i
w=w*(xi-x(j));
cfwh=cfwh+cs(i)*w;
yi=y
(1)+cfwh
2.2.2牛顿插值法的MATLAB程序例题
的函数值如下表所示,用MATLAB构造4次牛顿插值多项式并计算的值.
k
1
2
3
4
5
0.40
0.55
0.65
0.80
0.90
1.05
0.41075
0.57815
0.69675
0.88811
1.02652
1.25386
表2.2.1函数表
x=[0.40,0.55,0.65,0.80,0.90,1.05];
y=[0.41075,0.57815,0.69675,0.88811,1.02652,1.25386];
xi=0.596;
ni=newtonint(x,y,xi);
N4(x)=0.4108+1.116(x-0.4)+0.2800(x-0.4)(x-0.55)+0.1973(x-0.4)(x-0.55)(x-0.65)+0.0312(x-0.4)(x-0.55)(x-0.65)(x-0.8)
ch0.596=N4(0.596)0.6391
0.4000
0.4108
0.5500
0.5782
1.1160
0.6500
0.6967
1.1440
0.2800
0.8000
0.8881
1.1934
0.3096
0.1973
0.9000
1.0265
1.2315
0.3301
0.2005
0.0312
1.0500
1.2539
1.2971
0.3622
0.2055
0.0325
0.0085
表2.2.2差商表
2.3赫尔米特插值法
赫尔米特插值问题形式较多,这里可以结合拉格朗日插值法和牛顿插值法来构造赫尔米特插值多项式.设在(a,b)上具有三阶连续导数,且已知插值条件为,及,,,且,试求一个次数不超过二次多项式,使满足
并给出误差估计式.
方法一:
应用Lagrange多项式构造可得
误差为:
我们常将上式称为Lagrange-Hermite插值多项式.
方法二:
应用Newton插值法构造
由于要求满足,故可满足,还要满足条件.故设,其中A为待定常数,则.由可得,从而得到:
被称为Newton-Hermite插值多项式.
2.3.1赫尔米特插值法的MATLAB程序
functionyi=hermite(x,y,ydot,xi)%定义赫尔米特插值函数
ifisempty(ydot)==1ydot=gradient(y,x);
end
n=length(x);
m1=length(y);
m2=length(ydot);
ifn~=m1|n~m2|m1~=m2
error('
p=zeros(1,n);
%生成元素全为0的矩阵
q=zeros(1,n);
yi=0;
fork=1:
t=ones(1,n);
%生成1行n列的全为1的矩阵
z=zeros(1,n);
ifj~=k
t(j)=(xi-x(j))/(x(k)-x(j));
z(j)=1/(x(k)-x(j));
p(k)=prod(t);
q(k)=sum(z);
yi=yi+y(k)*(1-2*(xi-x(k))*q(k)*p(k)^2+ydot(k)*(xi-x(k))*p(k)^2;
2.3.2赫尔米特插值法的MATLAB程序例题
例2.3.1对于给定数据如下表,试构造赫尔米特多项式,并给出sin0.34的近似值:
x
0.31
0.33
0.35
sinx
0.3051
0.3240
0.3429
cosx
0.9523
0.9460
0.9394
在MATLAB命令窗口调用命令的程序如下:
[0.310.330.35];
[0.30510.32400.3429];
[0.95230.94600.9394];
;
结论
插值法是通过有限个点上取值来构造出多项式的计算方法,并通过构造多项式来对问题进行解决.本次报告列举出了插值法中最经典的三种插值法:
拉格朗日插值法、牛顿插值法和赫尔米特插值法,并写出它们的MATLAB程序和程序例题.通过三种插值法本身的性质和程序对它们进行比较.
拉格朗日插值法是最基本的插值法,它使用基函数法进行构造其插值函数在插值区间的解析表达式关于节点对称、光滑性好.它的优点有结构紧凑、思想清晰、公式对称,与插值节点的编号无关,适合理论分析,容易编程上机实现计算结果.而它的缺点也不可忽视,它不具有承袭性,当增加插值节点时,需要重新计算所有的插值基函数,原来的计算结果不能被利用,增加了很大部分的计算量.
牛顿插值法使用基函数构造,其系数可以使用差商表计算得到,克服了拉格朗日插值法的部分缺点,它具有承袭性与灵活增加节点的优越性且计算量远小于主次线性插值算法,适用于手工计算.由于插值多项式的唯一性,拉格朗日插值多项式与牛顿插值多项式是完全相同的,只是同一插值多项式的表达形式各不相同而已.但牛顿插值的误差更具有一般性,对导数不存在或由f离散点给出情形均可使用如果节点等距的情况下,可以用差分构造牛顿插值,进一步简化系数计算.如果插值多项式节点处函数值相等,而且要求其导数值也相等,则可用基函数构造带导数的赫尔米特插值.
本次报告用拉格朗日插值法和牛顿插值法来构造赫尔米特插值函数,得到结论是拉格朗日插值法构造的函数形式要比牛顿插值法构造的函数形式简单,并且容易递推成更高阶数的形式.所以,在没有特殊强调采用哪种方法的情况下,可以优先考虑用拉格朗日插值法来构造和赫尔米特函数.赫尔米特插值法具有较高的精度,如果插值条件不仅含有对节点处的函数的约束,而且还增加在节点处对导数的限制,解决这个问题的方法就要用到赫尔米特插值多项式,如果没有要求导数值可以用拉格朗日插值法.
本次通过插值法的简介和MATLAB软件,列举出了三种插值法的MATLAB程序和应用这些程序的计算例题,更客观的了解各插值法之间的相互联系和它们各自的优点和缺点.
参考文献
[1]李庆扬.数值分析[M].北京:
清华大学出版社,2008.22-39.
[2]陈锟,田晓梅.用Matlab进行插值法比较教学研究[N].电气电子教学学报,2012-4
(2).
[3]黄光东,管建和.基于Matlab平台的插值法技术实现与应用[J].电脑编程技巧与编程,2006,2(7):
30-31,36.
[4]魏春艳,朱清芳.基于Matlab的Newton插值实验课的教学探讨[N].洛阳师范学院学报,2012-5(5).
[5]王凤玲,陈庆林,孙丽男.Lagrange、Newton、Hermite插值法MATLAB算法比较研究及应用[N].黑河学院学报,2015-12(6).
[6]哈尔滨工业大学计算数学教研室.数值分析习题与实验[M].哈尔滨:
哈尔滨工业大学出版社,2015.94,96.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数值 分析 课程设计 报告 算法 MATLAB 实现