数值分析课程设计报告--插值算法及MATLAB实现.docx
- 文档编号:153156
- 上传时间:2022-10-04
- 格式:DOCX
- 页数:12
- 大小:191.21KB
数值分析课程设计报告--插值算法及MATLAB实现.docx
《数值分析课程设计报告--插值算法及MATLAB实现.docx》由会员分享,可在线阅读,更多相关《数值分析课程设计报告--插值算法及MATLAB实现.docx(12页珍藏版)》请在冰豆网上搜索。
东北大学秦皇岛分校
数值分析课程设计报告
插值算法及MATLAB实现
学院
数学与统计学院
专业
信息与计算科学
学号
5143126
姓名
郑晨璐
指导教师
李明维张建波
成绩
教师评语:
指导教师签字:
2017年01月06日
数学与统计学院课程设计(实习)报告第11页
1绪论
数值分析也称数值计算方法,它是数学科学的一个分支,它研究用计算机求解各种数学问题的数值计算方法及其理论与软件实现.
1.1课题的背景
本次数值分析实验研究的插值算法是数值分析中最基本的计算方法,同时作为数值分析其他算法的基础.插值法是通过有限个点上的取值来构造出多项式的计算方法,并通过构造的多项式对其他点的函数值、数值微分、数值积分以及微分方程数值解等方面的值进行相应估计;在图像重建中为避免图像失真增加绘图点,其在建筑工程的外观设计、化工、天文、地理测试数据的处理及社会经济现象的统计分析等方面有着广泛的应用;而MATLAB与之相结合能将结果可视化展示于使用者面前,更容易被理解和接受.
数值分析是计算数学的一个主要部分,计算数学是数学科学的一个分支,它研究用计算机求解各种数学问题的数值检索方其理论与软件的实现.在科学技术中,积分是经常遇到的一个重要计算环节.数值积分是数学上重要的课题之一,是数值分析中重要的内容之一,也是应用数学研究的重点.它是非常重要的数学工具,但在实际应用中,被积函数经常会遇到如下情况:
找的原函数相当困难;原函数存在,但是其表达式相当复杂,而且有时候难以给出最后的数值结果;除一些特俗的无穷外,通常很难求出无穷积分的值;被积函数没有有限的解析式,而以表格的形式给出.因此能够借助牛顿-莱布尼兹公式计算定积分的情形是不多的.另外,许多实际问题中的被积函数往往是列表函数或其他形式的非连续函数,对这类函数的定积分,也不能用不定积分方法求解,只能设法求其近似值.因此,探讨近似计算的数值积分方法是有明显的实际意义的,即有必要研究定积分的数值计算方法,以解决定积分的近似计算。
而数值积分就是解决此类问题的一种有效的方法,它的特点是利用被积函数在一些节点上的信息求出定积分的近似值.
在求一些函数的定积分时,由于原函数十分复杂难以求出或用初等函数表达,导致积分很难精确求出,只能设法求其近似值,因此能够直接借助牛顿-莱布尼兹公式计算定积分的情形是不多的.数值积分就是解决此类问题的一种行之有效的方法.因此,探讨近似计算的数值积分方法是有着明显的实际意义的.本文较详细地介绍了牛顿-科特斯求积公式,以及为了提高积分计算精度的高精度数值积分公式,即龙贝格求积公式和高斯-勒让德求积公式.除了研究这些数值积分算法的理论外,本文还将这些数值积分算法在计算机上通过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);%计算拉格朗日插值函数
end
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)%定义牛顿插值函数
m=length(x);n=length(y);%x是节点向量,y是节点上的函数值
ifm~=n
error('向量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
end
cs(i)=f(i+1);
y(k)=f(k);
k=k+1;
end
cfwh=0
fori=1:
n-2
w=1;
forj=1:
i
w=w*(xi-x(j));
end
cfwh=cfwh+cs(i)*w;
end
yi=y
(1)+cfwh
2.2.2牛顿插值法的MATLAB程序例题
的函数值如下表所示,用MATLAB构造4次牛顿插值多项式并计算的值.
k
0
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
k
0
0.4000
0.4108
1
0.5500
0.5782
1.1160
2
0.6500
0.6967
1.1440
0.2800
3
0.8000
0.8881
1.1934
0.3096
0.1973
4
0.9000
1.0265
1.2315
0.3301
0.2005
0.0312
5
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插值法构造
由于要求满足,故可满足,还要
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数值 分析 课程设计 报告 算法 MATLAB 实现