- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数值分析
报告
班 级:
专 业:
流水号:
学 号:
姓 名:
常用的插值方法
序言
在离散数据的基础上补插连续函数,使得这条连续曲线通过全部给定的离散数据点。插值是离散函数逼近的重要方法,利用它可通过函数在有限个点处的取值状况,算出函数在其他点处的近似值。 早在6世纪,中国的刘焯已将等距二次插值用于天文计算。17世纪之后,牛顿拉格朗日分别讨论了等距和非等距的一般插值公式。在近代,插值法仍然是数据处理和编制函数表的常用工具,又是数值积分、数值微分、非线性方程求根和微分方程数值解法的重要基础,许多求解计算公式都是以插值为基础导出的。插值问题的提法是:假定区间[a,b〕上的实值函数f(x)在该区间上 n+1个互不相同点x0,x1……xn 处的值是f(x0),……f(xn),要求估算f(x)在[a,b〕中某点的值。其做法是:在事先选定的一个由简单函数构成的有n+1个参数C0,C1,……Cn的函数类Φ(C0,C1,……Cn)中求出满足条件P(xi)=f(xi)(i=0,1,…… n)的函数P(x),并以P(x)作为f()的估值。此处f(x)称为被插值函数,0,x1,……xn称为插值结(节)点,Φ(C0,C1,……Cn)称为插值函数类,上面等式称为插值条件,Φ(C0,……Cn)中满足上式的函数称为插值函数,R(x)= f(x)-P(x)称为插值余项。
求解这类问题,它有很多种插值法,其中以拉格朗日(Lagrange)插值和牛顿(Newton)插值为代表的多项式插值最有特点,常用的插值还有Hermit插值,分段插值和样条插值。
一.拉格朗日插值
1.问题提出:
已知函数在n+1个点上的函数值,求任意一点的函数值。
说明:函数可能是未知的;也可能是已知的,但它比较复杂,很难计算其函数值。
2.解决方法:
构造一个n次代数多项式函数来替代未知(或复杂)函数,则用作为函数值的近似值。
设,构造即是确定n+1个多项式的系数。
3.构造的依据:
当多项式函数也同时过已知的n+1个点时,我们可以认为多项式函数逼近于原来的函数。根据这个条件,可以写出非齐次线性方程组:
其系数矩阵的行列式D为范德萌行列式:
故当n+1个点的横坐标各不相同时,方程组系数矩阵的行列式D不等于零,故方程组有唯一解。即有以下结论。
结论:当已知的n+1个点的横坐标各不相同时,则总能够构造唯一的n次多项式函数,使也过这n+1个点。
4.几何意义
5.举例:
已知函数,求。
分析:本题理解为,已知“复杂”函数,当x=81,100,121,144时,其对应的函数值为:y=9,10,11,12,当x=115时,求函数值。
解:
(1)线性插值:过已知的(100,10)和(121,11)两个点,构造1次多项式函数,于是有
则
。
(2)抛物插值:构造2次多项式函数,使得它过已知的(100,10)、(121,11)和(144,12)三个点。于是有2次拉格朗日插值多项式:
则有
10.72275550536420
6.拉格朗日n次插值多项式公式:
其中称为基函数(k=0,1,….,n),每一个基函数都是关于x的n次多项式,其表达式为:
拉格朗日公式特点:
1.把每一点的纵坐标单独组成一项;
2.每一项中的分子是关于x的n次多项式,分母是一个常数;
3.每一项的分子和分母的形式非常相似,不同的是:
分子是,而分母是
7.误差分析(拉格朗日余项定理)
,
其中在所界定的范围内。
针对以上例题的线性插值,有
函数在[100,115]区间绝对值的极大值为,
则有:
于是近似值有三位有效数字。
针对以上例题的抛物线插值,有
函数在[100,115]区间绝对值的极大值为,则有
于是近似值10.72275550536420有四位有效数字。
8.拉格朗日插值公式的优点
公式有较强的规律性,容易编写程序利用计算机进行数值计算。
9. 拉格朗日插值通用程序
程序流程图如下:
文件lagrange.m如下:
%拉格朗日插值
close all
n=input(已知的坐标点数n=?);
x=input(x1,x2,...,xn=?);
y=input(y1,y2,...,yn=?);
xx=input(插值点=?);
syms t %定义t为符号量
p=0;
for k=1:n
l=1;
for j=1:k-1
l=l*(t-x(j))/(x(k)-x(j));
end
for j=k+1:n
l=l*(t-x(j))/(x(k)-x
文档评论(0)