文档库 最新最全的文档下载
当前位置:文档库 › Lagrange插值法

Lagrange插值法

Lagrange插值法
Lagrange插值法

《Lagrange插值法》实验报告

1.实验名称

实验5 Lagrange插值法与最小二乘拟合法

2.实验题目

3.实验目的

验证Lagrange插值法对求插值多项式与近似值的数值结果,并用C++程序设计来实现该算法,加深对Lagrange插值法的优缺点的理解。

4.基础理论

5实验环境

Visual C++ 语言

6.实验过程

#include

int main()

{

int n;

cout<<"节点的个数n=";cin>>n;

int i,j;

double x[20],y[20];

for( i=0;i

{

cout<<"节点"<

cin>>x[i];

cout<<" 函数值y=";

cin>>y[i];

}

cout<

double yy=0,t=1;

double xx;

cout<<"xx="; cin>>xx;

for(i=0;i

{

t=y[i];

for(j=0;j

{

if(i!=j)

t=t*(xx-x[j])/(x[i]-x[j]);

}

yy=yy+t;

}

cout<<"节点"<

return 0;

}

三次样条插值代码

2 三次样条插值程序 三次样条插值利用方案二(求解固支样条或压紧样条) 按照要求要起点和终点的一阶导数值已知, 可得关于01,,.....,n M M M 的严格对角占优势的三对角方程组 然后利用三对角法(追赶法)解此线性方程组。 (1)编写M 文件,并保存文件名scfit.m % x,y 分别为n 个节点的横坐标和纵坐标值组成的向量 % dx0和dxn 分别为S 的导数在x0和xn 处的值,即m 0和m n n=length(x)-1; h=diff(x); d=diff(y)./h; a=h(2:n-1); b=2*(h(1:n-1)+h(2:n)); c=h(2:n); u=6*diff(d); b(1)=b(1)-h(1)/2; u(1)=u(1)-3*(d(1)-dx0); b(n-1)=b(n-1)-h(n)/2; u(n-1)=u(n-1)-3*(dxn-d(n)); %追赶法部分 for k=2:n-1 temp=a(k-1)/b(k-1); b(k)=b(k)-temp*c(k-1); u(k)=u(k)-temp*u(k-1); end m(n)=u(n-1)/b(n-1); for k=n-2:-1:1 m(k+1)=(u(k)-c(k)*m(k+2))/b(k); end %求S K1,S K2,S K3,S K4 m(1)=3*(d(1)-dx0)/h(1)-m(2)/2; m(n+1)=3*(dxn-d(n))/h(n)-m(n)/2; for k=0:n-1 00 ()S x m '=()n n S x m '=0011111111212212n n n n n n M d M d M d M d μλμλ----??????????????????????=??????????????????????????

常见的插值方法及其原理

常见的插值方法及其原理 这一节无可避免要接触一些数学知识,为了让本文通俗易懂,我们尽量绕开讨厌的公式等。为了进一步的简化难度,我们把讨论从二维图像降到一维上。 首先来看看最简单的‘最临近像素插值’。 A,B是原图上已经有的点,现在我们要知道其中间X位置处的像素值。我们找出X位置和A,B位置之间的距离d1,d2,如图,d2要小于d1,所以我们就认为X处像素值的大小就等于B处像素值的大小。 显然,这种方法是非常苯的,同时会带来明显的失真。在A,B中点处的像素值会突然出现一个跳跃,这就是为什么会出现马赛克和锯齿等明显走样的原因。最临近插值法唯一的优点就是速度快。 图10,最临近法插值原理 接下来是稍微复杂点的‘线性插值’(Linear) 线性插值也很好理解,AB两点的像素值之间,我们认为是直线变化的,要求X点处的值,只需要找到对应位置直线上的一点即可。换句话说,A,B间任意一点的值只跟A,B有关。由于插值的结果是连续的,所以视觉上会比最小临近法要好一些。线性插值速度稍微要慢一点,但是效果要好不少。如果讲究速度,这是个不错的折衷。 图11,线性插值原理

其他插值方法 立方插值,样条插值等等,他们的目的是试图让插值的曲线显得更平滑,为了达到这个目的,他们不得不利用到周围若干范围内的点,这里的数学原理就不再详述了。 图12,高级的插值原理 如图,要求B,C之间X的值,需要利用B,C周围A,B,C,D四个点的像素值,通过某种计算,得到光滑的曲线,从而算出X的值来。计算量显然要比前两种大许多。 好了,以上就是基本知识。所谓两次线性和两次立方实际上就是把刚才的分析拓展到二维空间上,在宽和高方向上作两次插值的意思。在以上的基础上,有的软件还发展了更复杂的改进的插值方式譬如S-SPline, Turbo Photo等。他们的目的是使边缘的表现更完美。

Lagrange插值

目录 《MATLAB程序设计实践》课程考核 (1) 1编程实现“LAGRANGE插值”科学计算算法,并举例应用之 (1) 1.1算法说明 (1) 1.1.1数学推导 (1) 1.1.2Lagrange插值函数 (1) 1.2流程图 (3) 1.3源代码 (3) 1.4运行结果 (4) 2编程解决科学计算和工程问题 (5) 2.1算法说明 (5) 2.2流程图 (6) 2.3源代码 (6) 2.4运行结果 (7) 3求多项式的根并分析误差大小 (8) 3.1二分法 (8) 3.1.1二分法原理 (8) 3.1.2流程图 (9) 3.1.3源代码 (9) 3.2牛顿迭代法 (10) 3.2.1算法说明 (10) 3.2.2流程图 (11) 3.2.3源代码 (11) 3.3以上两种计算方法的运算结果 (12) 3.3.1二分法计算结果 (12) 3.3.2牛顿迭代法计算结果 (13)

《MATLAB 程序设计实践》课程考核 1 编程实现“Lagrange 插值”科学计算算法,并举例应用之 1.1 算法说明 1.1.1 数学推导 由数学理论可知:对12,,,n x x x 个不同的节点,且节点处的取值分别为12,,,n y y y ,则存在插值多项式: ()1 011 n n n P x a a x a x --=+++ , 使得()()1,2,,n i i P x y i n == ,且满足插值条件的次插值多项式唯一。并基于此定理,推出Lagrange 插值基函数。 考虑一个简单的插值问题:对节点()1,2,i x i n = 中任意一点()1k x k n ≤≤做一n 次多项式 ()k l x 使它在该点上取值为1,而在其余点()1,2,1,1,,i x i k k n =-+ 上取值为零,即 1()0k i i k l x i k =?=? ≠? 表明n 个点()1,2,1,1,i x i k k n =-+ 都是n 次多项式()k l x 的零点,故可设 1211()()()()()()k k k k n l x A x x x x x x x x x x -+=----- . 其中k A 为待定系数,由条件()1k l x =可得: 1111 ()()()() k k k k k k k n A x x x x x x x x -+= ---- . 由以上几式联立有:111111()()()() ()()()()() k k n k k k k k k k n x x x x x x x x l x x x x x x x x x -+-+----= ---- . 对应于每一节点()0k x k n ≤≤都能求出一个满足插值条件的n 次插值多项式,这样,由式可以求出1n +个n 次插插多项式12(),(),,()n l x l x l x 。容易看出,这组多项式仅与节点的取法有关,称它们为在n 个节点上的1n +次基本插值多项式或n 次插值基函数。 1.1.2 Lagrange 插值函数 利用插值基函数立即可以写出满足插值条件的n 次插值多项式 1122()()()n n y l x y l x y l x ++

三次样条插值函数

沈阳航空航天大学 数学软件课程设计 (设计程序) 题目三次样条插值函数 班级 / 学号 学生姓名 指导教师

沈阳航空航天大学 课程设计任务书 课程名称数学软件课程设计 院(系)理学院专业信息与计算科学 班级学号姓名 课程设计题目三次样条插值函数 课程设计时间: 2010 年12月20日至2010 年12月31日 课程设计的内容及要求: 1.三次样条插值函数 给出函数在互异点处的值分别为。 (1)掌握求三次样条插值函数的基本原理; (2)编写程序求在第一边界条件下函数的三次样条插值函数; (3)在区间上取n=10,20,分别用等距节点对函数 作三次样条插值函数,利用(1)的结果画出插值函数的图形,并在该图形界面中同时画出的图形。 [要求] 1.学习态度要认真,要积极参与课程设计,锻炼独立思考能力; 2.严格遵守上机时间安排; 3.按照MATLAB编程训练的任务要求来编写程序; 4.根据任务书来完成课程设计论文; 5.报告书写格式要求按照沈阳航空航天大学“课程设计报告撰写规范”; 6.报告上交时间:课程设计结束时上交报告;

7.严谨抄袭行为。 指导教师年月日负责教师年月日学生签字年月日

沈阳航空航天大学 课程设计成绩评定单 课程名称数学软件课程设计 院(系)理学院专业信息与计算科学课程设计题目三次样条插值函数 学号姓名 指导教师评语: 课程设计成绩 指导教师签字 年月日

目录 一正文 (1) 1问题分析 (1) 1.1 题目 (1) 1.2 分析 (1) 2 研究方法原理 (1) 2.1 求三次样条插值多项式,算法组织 (1) 3 算例结果 (3) 二总结 (7) 参考文献 (8) 附录 (9) 源程序: (9) 程序1 (9) 程序2 (10) 程序3 (12) 程序 4 (12)

几种常用的插值方法

几种常用的插值方法 数学系 信息与计算科学1班 李平 指导老师:唐振先 摘要:插值在诸如机械加工等工程技术和数据处理等科学研究中有许多直接的应用,在很多领域都要用插值的办法找出表格和中间值,插值还是数值积分微分方程数值解等数值计算的基础。本文归纳了几种常用的插值方法,并简单分析了其各自的优缺点。 关键词:任意阶多项式插值,分段多项式插值。 引言:所谓插值,通俗地说就是在若干以知的函数值之间插入一些未知函数值,而插值函数的类型最简单的选取是代数多项式。用多项式建立插值函数的方法主要用两种:一种是任意阶的插值多项式,它主要有三种基本的插值公式:单项式,拉格朗日和牛顿插值;另一种是分段多项式插值,它有Hermite 和spine 插值和分段线性插值。 一.任意阶多项式插值: 1.用单项式基本插值公式进行多项式插值: 多项式插值是求通过几个已知数据点的那个n-1阶多项式,即P n-1(X)=A 1+A 2X+…A n X n-1,它是一个单项式基本函数X 0,X 1…X n-1的集合来定义多项式,由已知n 个点(X,Y )构成的集合,可以使多项式通过没数据点,并为n 个未知系数Ai 写出n 个方程,这n 个方程组成的方程组的系数矩阵为Vandermonde 矩阵。 虽然这个过程直观易懂,但它都不是建立插值多项式最好的办法,因为Vandermonde 方程组有可能是病态的,这样会导致单项式系数不确定。另外,单项式中的各项可能在大小上有很大的差异,这就导致了多项式计算中的舍入误差。 2.拉格朗日基本插值公式进行插值: 先构造一组插值函数L i (x ) =011011()()()() ()()()() i i n i i i i i i n x x x x x x x x x x x x x x x x -+-+--------L L L L ,其中i=0,… n.容易看出n 次多项式L i (x )满足L i (x )=1,(i=j );L i (x )=0,(i ≠j ),其中

插值法在管理决策中的应用及其Matlab实现

插值法在管理决策中的应用及其Matlab实现 张英俊,孙大宁*,张亚娟 (北方工业大学理学院,北京100144) 摘 要:利用插值曲线,即三次样条插值和立方插值法来比较分析随机网络评审法中两个随机变量之间的相关 性.经分析表明,立方插值不仅是分析相关性的实用曲线工具,而且利用Matlab所构造的函数有足够的光滑性、平顺性,且图像在考察变量的相关性时具有直观性的优点,因此对它的应用研究非常有价值. 关键词:插值 Matlab程序相关性 中图分类号:O29;TB115文献标识码:A文章编号:1674-0874(2008)03-0040-03 收稿日期:2008-01-15 作者简介:张英俊(1982-),女,山西平遥人,在读硕士,研究方向:风险决策;*孙大宁,男,教授,通讯作者. 随机网络评审法是基于随机网络和计算机仿真的一种随机型的定量评估方法,它是以风险评审技术(简称VERT)为基础的,VERT是一种计算机仿真技术,它把网络理论,仿真原理和概率论综合起来,其特点之一就是在各种信息不完全,不充分和不肯定的情况下,对各种工程系统和工程项目的发展计划有关的时间T(周期或工作量),费用C(耗费、成本或投入),功能P(性能、效益或输出等)三种指标来描述,从而描述决策分析对象应达到的目标.一般情况下,在进行风险决策分析时为了有利于模型的建立和使分析计算工作更快更有效,我们需要对网络中各个节点上相应随机参数的频数直方图以及3个参数中任意两者之间的相关性进行分析.在处理我国飞机预研计划这一课题发展起来的 SNSS系统是采用Fortran77语言编写的[1],以卡片形式进行输入输出的,在输出直方图以及进行时间、 费用、效益三者中任两者之间相互关系的计算上不是很直观、很简洁.其实两个随机参数之间的这种函数关系,在数值分析中有许多的方法可以求得,但是哪种方法能更直观、更合乎实际地给出反映这种相关性的平滑曲线呢?本文所选的插值方法能够较好地满足这一要求. 1插值方法的选择及其数学原理 插值是已知某函数在若干离散点上的函数值或者导数信息,通过求解该函数中待定形式的插值函数以及待定系数,使得该函数在给定离散点上满足约束.也即要求通过平面上已知n个点(xi,yi),i= 1,2,…,n作一条光滑的曲线,完成这项工作的方 法有多种,如拉格朗日插值、埃尔米特插值和分段 插值等.实际表明,拉格朗日插值和埃尔米特插值函数对于数据较多且具有随机性的变量相关性分析,做一个高次插值多项式是不理想的,因为它带有近似性,且计算也相当复杂.而分段插值是克服高次插值的Runge现象而提出的,只能保证曲线的连续性,却不能保证曲线的光滑性.但是在生产和科学实验中,对所做的插值曲线既要简单,又要在曲线的连接处比较光滑,即所作的分段插值函数在分段上要求多项式次数低,而在节点上不仅连续,还存在连续的低阶导数,我们把满足这样条件的插值函数,称为样条插值函数,它所对应的曲线称为样条曲线,其节点称为样点,这种插值方法称为样条插值[2]. 2 应用举例 2.1 资料说明 某企业的领导和管理者,得知与其竞争的另一 企业正在研制一种新产品,一旦这种新产品研制成功,将给另一企业带来销售市场上的绝对优势,如 第24卷第3期山西大同大学学报(自然科学版) Vol.24.No.32008年6月 JournalofShanxiDatongUniversity(NaturalScience) Jun.2008

数值分析作业-三次样条插值

数值计算方法作业 实验4.3 三次样条差值函数 实验目的: 掌握三次样条插值函数的三弯矩方法。 实验函数: dt e x f x t ? ∞ -- = 2 221)(π 实验内容: (1) 编程实现求三次样条插值函数的算法,分别考虑不同的边界条件; (2) 计算各插值节点的弯矩值; (3) 在同一坐标系中绘制函数f(x),插值多项式,三次样条插值多项式的曲线 比较插值结果。 实验4.5 三次样条差值函数的收敛性 实验目的: 多项式插值不一定是收敛的,即插值的节点多,效果不一定好。对三次样条插值函数如何呢?理论上证明三次样条插值函数的收敛性是比较困难的,通过本实验可以证明这一理论结果。 实验内容: 按照一定的规则分别选择等距或非等距的插值节点,并不断增加插值节点的个数。 实验要求: (1) 随着节点个数的增加,比较被逼近函数和三样条插值函数的误差变化情 况,分析所得结果并与拉格朗日插值多项式比较; (2) 三次样条插值函数的思想最早产生于工业部门。作为工业应用的例子,考

虑如下例子:某汽车制造商根据三次样条插值函数设计车门曲线,其中一 算法描述: 拉格朗日插值: 错误!未找到引用源。 其中错误!未找到引用源。是拉格朗日基函数,其表达式为:() ∏ ≠=--=n i j j j i j i x x x x x l 0) ()( 牛顿插值: ) )...()(](,...,,[.... ))(0](,,[)0](,[)()(1102101210100----++--+-+=n n n x x x x x x x x x x f x x x x x x x f x x x x f x f x N 其中????? ?? ?? ?????? --=--= --= -)/(]),...,[],...,[(]...,[..],[],[],,[)()(],[01102110x x x x x f x x x f x x x f x x x x f x x f x x x f x x x f x f x x f n n n n i k j i k j k j i j i j i j i 三样条插值: 所谓三次样条插值多项式Sn(x)是一种分段函数,它在节点Xi(a

五种插值法的对比研究开题报告

五种插值法的对比研究 1. 选题依据 1.1 选题背景 插值法是一种古老的数学方法,插值法历史悠久。据考证,在公元六世纪时, 我国焯(zhuo) 已经把等距二次插值法应用于天文计算。十七世纪时,Newton 和 Gregory(格雷格里) 建立了等距节点上的一般插值公式,十八世纪时,Lagrange(拉格朗日) 给出了更一般的非等距节点插值公式。 而它的基本理论是在微积分产生以后逐渐完善的,它的实际应用也日益增多,特别是在计算机工程中。许多库函数的计算实际上归结于对逼近函数的计算。 1.2 研究的目的和意义 插值法是数值分析中最基本的方法之一。 在实际问题中碰到的函数是各种各样的,有的甚至给不出表达式,只提供了一些离散数据,例如,在查对数表时, 要查的数据在表中找不到,就先找出它相邻的数,再从旁边找出它的修正值, 按一定关系把相邻的数加以修正,从而找出要找的数,这种修正关系实际上就是一种插值。 在实际应用中选用不同类型的插值函数,逼近的效果也不同。在数值计算方法中,我们学习过五种基本的插值方法,即Lagrange 插值、Newton 插值、分段线性插值、分段三次Hermite 插值、样条插值函数。所以通过从这五种插值法的基本思想、特征、性质和具体实例入手,探讨五种插值法的优缺点和适用围,让学习者能够迅速而准确的解决实际问题,掌握插值法的应用。 2. 研究的方法 从具体实例入手并结合Matlab 在科学计算中的优势,通过实验对它们的精度和效率进行比较分析。 3. 论文结构 3.1 论文的总体结构 第一部分 导言 主要介绍选题的背景、目的及意义、研究现状、文献综述等。 第二部分 五种插值法的基本思想、性质及特点 在数值计算方法中,插值法是计算方法的基础,数值微分、数值积分和微分方程数值解都建立在此基础上。 插值问题的提法是:已知f(x)(可能未知或非常复杂函数)在彼此不同的n+1 个实点0x ,1x ,…n x 处的函数值是f(0x ),f(1x ),…,f(n x ),这时我们简单的说f(x)有n+1 个 离散数据对0n i i )}y ,{(x i .要估算f(x)在其它点x 处的函数值,最常见的一种办法就是插 值,即寻找一个相对简单的函数y(x),使其满足下列插值条件:y(i x )=f(i x ),i=0,1,…,n.,并以y(x)作为f(x)的近似值.其中y(x)称为插值函数,f(x)称为被插函数。

数值计算方法—拉格朗日插值

数值计算方法作业 专业:测控1002 学号:10540226 姓名:崔海雪

拉格朗日插值的算法及应用 【摘要】 本文简介拉格朗日插值,它的算法及程序和拉格朗日在实际生活中的运用。运用了拉格朗日插值的公式,以及它在MATLAB 中的算法程序,并用具体例子说明。拉格朗日插值在很多方面都可以运用,具有很高的应用价值。 【关键词】 拉格朗日;插值;公式;Matlab 算法程序; 一、绪论 约瑟夫·拉格朗日(Joseph Louis Lagrange),法国数学家、物理学家。他在数学、力学和天文学三个学科领域中都有历史性的贡献,其中尤以数学方面的成就最为突出。拉格朗日对流体运动的理论也有重要贡献,提出了描述流体运动的拉格朗日方法。数据建模有两大方法:一类是插值方法,另一类是拟合函数一般的说,插值法比较适合数据准确或数据量小的情形。然而Lagrange 插值有很多种,1阶,2阶,…n 阶。我们可以利用拉格朗日插值求方程,根据它的程序求原方程的图像。下面我具体介绍分析一下拉格朗日插值的算法设计及应用。 二、正文 1、基本概念 已知函数y=f(x)在若干点i x 的函数值i y =()i x f (i=0,1,???,n )一个差值问题就是求一“简单”的函数p(x):p(i x )=i y ,i=0,1,???,n, (1) 则p(x)为f(x)的插值函数,而f(x)为被插值函数会插值原函数,0x ,1x ,2x ,...,n x 为插值节点,式(1)为插值条件,如果对固定点-x 求f(-x )数值解,我们称- x 为一个插值节点,f(-x )≈p(-x )称为-x 点的插值,当-x ∈[min(0x ,1x ,2x ,...,n x ),max(0x ,1x ,2x ,...,n x )]时,称为内插,否则称为外插式外推,特别地,当p(x)为不超过n 次多项式时称为n 阶Lagrange 插值。 2、Lagrange 插值公式 (1)线性插值)1(1L 设已知0x ,1x 及0y =f(0x ) ,1y =f(1x ),)(1x L 为不超过一次多项式且满足 )(01x L =0y ,)(11x L =1y ,几何上,)(1x L 为过(0x ,0y ) ,(1x ,1y )的直线,从而得到 )(1x L =0y +0101x x y y --(x-0x ). (2)

(精选)三次样条插值的MATLAB实现

MATLAB 程序设计期中考查 在许多问题中,通常根据实验、观测或经验得到的函数表或离散点上的信息,去研究分析函数的有关特性。其中插值法是一种最基本的方法,以下给出最基本的插值问题——三次样条插值的基本提法: 对插值区间[]b a ,进行划分:b x x x a n ≤

常见插值方法及其介绍

常见插值方法及其介绍 Inverse Distance to a Power(反距离加权 插值法)”、 “Kriging(克里金插值法)”、 “Minimum Curvature(最小曲率)”、 “Modified Shepard's Method(改进谢别德法)”、 “Natural Neighbor(自然邻点插值法)”、 “Nearest Neighbor(最近邻点插值法)”、 “Polynomial Regression(多元回归法)”、 “Radial Basis Function(径向基函数法)”、 “Triangulation with Linear Interpolation(线性插值三角网法)”、 “Moving Average(移动平均法)”、 “Local Polynomial(局部多项式法)” 1、距离倒数乘方法 距离倒数乘方格网化方法是一个加权平均插值法,可以进行确切的或者圆滑的方式插值。方次参数 控制着权系数如何随着离开一个格网结点距离的增加而下降。对于一个较大的方次,较近的数据点被 给定一个较高的权重份额,对于一个较小的方次,权重比较均匀地分配给各数据点。 计算一个格网结点时给予一个特定数据点的权值与指定方次的从结点到观测点的该结点被赋予距 离倒数成比例。当计算一个格网结点时,配给的权重是一个分数,所有权重的总和等于1.0。当一个 观测点与一个格网结点重合时,该观测点被给予一个实际为 1.0 的权重,所有其它观测点

被给予一 个几乎为0.0 的权重。换言之,该结点被赋给与观测点一致的值。这就是一个准确插值。 距离倒数法的特征之一是要在格网区域内产生围绕观测点位置的"牛眼"。用距离倒数格网化时可 以指定一个圆滑参数。大于零的圆滑参数保证,对于一个特定的结点,没有哪个观测点被赋予全部的 权值,即使观测点与该结点重合也是如此。圆滑参数通过修匀已被插值的格网来降低"牛眼"影响。 2、克里金法 克里金法是一种在许多领域都很有用的地质统计格网化方法。克里金法试图那样表示隐含在你的数 据中的趋势,例如,高点会是沿一个脊连接,而不是被牛眼形等值线所孤立。 克里金法中包含了几个因子:变化图模型,漂移类型和矿块效应。 3、最小曲率法 最小曲率法广泛用于地球科学。用最小曲率法生成的插值面类似于一个通过各个数据值的,具有最 小弯曲量的长条形薄弹性片。最小曲率法,试图在尽可能严格地尊重数据的同时,生成尽可能圆滑的 曲面。 使用最小曲率法时要涉及到两个参数:最大残差参数和最大循环次数参数来控制最小曲率的收敛 标准。 4、多元回归法 多元回归被用来确定你的数据的大规模的趋势和图案。你可以用几个选项来确定你需要的趋势面类 型。多元回归实际上不是插值器,因为它并不试图预测未知的Z 值。它实际上是一个趋势面分析作

Lagrange插值多项式

宁夏师范学院数学与计算机科学学院 《数值分析》实验报告 实验序号:1实验项目名称:Lagrange插值多项式

end L(k,:)=V; end C=y*L 五、实验结果与数据处理 1.(1)清单: >> clear >> clf >> x=[1,2,2.5]; >> y=x+2./x; >> [C,L]=lagran(x,y); C = 0.4000 -1.2000 3.8000 >> xx=[1.5,1.2]; >> yy=polyval(C,xx) yy = 2.9000 2.9360 (2)清单 >> clear,clf >> x=[0.5,1,3,5]; >> y=x+2./x; >> [C,L]=lagran(x,y); C = -0.2667 2.5333 -6.3333 7.0667 >> xx=[1.5,1.2]; >> yy=polyval(C,xx) yy = 2.3667 2.6539 2. 清单: >> x=0:pi/16:pi/2; >> y=x.*sin(x); >> [C,L]=lagran(x,y); C = Columns 1 through 8 -0.0001 -0.0003 0.0089 -0.0005 -0.1663 -0.0001 1.0000 -0.0000 Column 9 >> xx=0:pi/16:pi/2; >> yy=polyval(C,xx); >> plot(xx,yy,'b',x,y,'.') >> hold on >> a=polyfit(x,y,4)

>> grid on 六、分析与讨论 通过本次的实验,我初步掌握了 综合运用专业及基础知识,解决实际数学问题的能力,运行过程中有几处错误,但照提示改过就出结果了。 七、教师评语

三次样条插值方法的应用

CENTRAL SOUTH UNIVERSITY 数值分析实验报告

三次样条插值方法的应用 一、问题背景 分段低次插值函数往往具有很好的收敛性,计算过程简单,稳定性好,并且易于在在电子计算机上实现,但其光滑性较差,对于像高速飞机的机翼形线船体放样等型值线往往要求具有二阶光滑度,即有二阶连续导数,早期工程师制图时,把富有弹性的细长木条(即所谓的样条)用压铁固定在样点上,在其他地方让他自由弯曲,然后沿木条画下曲线,称为样条曲线。样条曲线实际上是由分段三次曲线并接而成,在连接点即样点上要求二阶导数连续,从数学上加以概括就得到数学样条这一概念。下面我们讨论最常用的三次样条函数及其应用。 二、数学模型 样条函数可以给出光滑的插值曲线(面),因此在数值逼近、常微分方程和偏微分方程的数值解及科学和工程的计算中起着重要的作用。 设区间[]b ,a 上给定有关划分b x x n =<<<=Λ10x a ,S 为[]b ,a 上满足下面条件的函数。 ● )(b a C S ,2∈; ● S 在每个子区间[]1,+i i x x 上是三次多项式。 则称S 为关于划分的三次样条函数。常用的三次样条函数的边界条件有三种类型: ● Ⅰ型 ()()n n n f x S f x S ''0'',==。 ● Ⅱ型 ()()n n n f x S f x S ''''0'''',==,其特殊情况为()()0''''==n n x S x S 。 ● Ⅲ型 ()()Λ3,2,1,0,0==j x S x S n j j ,此条件称为周期样条函数。

鉴于Ⅱ型三次样条插值函数在实际应用中的重要地位,在此主要对它进行详细介绍。 三、算法及流程 按照传统的编程方法,可将公式直接转换为MATLAB可是别的语言即可;另一种是运用矩阵运算,发挥MATLAB在矩阵运算上的优势。两种方法都可以方便地得到结果。方法二更直观,但计算系数时要特别注意。这里计算的是方法一的程序,采用的是Ⅱ型边界条件,取名为spline2.m。 Matlab代码如下: function s=spline2(x0,y0,y21,y2n,x) %s=spline2(x0,y0,y21,y2n,x) %x0,y0 are existed points,x are insert points,y21,y2n are the second %dirivitive numbers given. n=length(x0); km=length(x); a(1)=-0.5; b(1)=3*(y0(2)-y0(1))/(2*(x0(2)-x0(1))); for j=1:(n-1) h(j)=x0(j+1)-x0(j); end for j=2:(n-1) alpha(j)=h(j-1)/(h(j-1)+h(j)); beta(j)=3*((1-alpha(j))*(y0(j)-y0(j-1))/h(j-1)+alpha(j)*(y0(j+1)-y0(j))/h(j));

几种常用的插值方法

数学系 信息与计算科学1班 李平 指导老师:唐振先 摘要:插值在诸如机械加工等工程技术和数据处理等科学研究中有许多直接的应用,在很多领域都要用插值的办法找出表格和中间值,插值还是数值积分微分方程数值解等数值计算的基础。本文归纳了几种常用的插值方法,并简单分析了其各自的优缺点。 关键词:任意阶多项式插值,分段多项式插值。 引言:所谓插值,通俗地说就是在若干以知的函数值之间插入一些未知函数值,而插值函数的类型最简单的选取是代数多项式。用多项式建立插值函数的方法主要用两种:一种是任意阶的插值多项式,它主要有三种基本的插值公式:单项式,拉格朗日和牛顿插值;另一种是分段多项式插值,它有Hermite 和spine 插值和分段线性插值。 一.任意阶多项式插值: 1.用单项式基本插值公式进行多项式插值: 多项式插值是求通过几个已知数据点的那个n-1阶多项式,即P n-1(X)=A 1+A 2X+…A n X n-1,它是一个单项式基本函数X 0,X 1…X n-1的集合来定义多项式,由已知n 个点(X,Y )构成的集合,可以使多项式通过没数据点,并为n 个未知系数Ai 写出n 个方程,这n 个方程组成的方程组的系数矩阵为Vandermonde 矩阵。 虽然这个过程直观易懂,但它都不是建立插值多项式最好的办法,因为Vandermonde 方程组有可能是病态的,这样会导致单项式系数不确定。另外,单项式中的各项可能在大小上有很大的差异,这就导致了多项式计算中的舍入误差。 2.拉格朗日基本插值公式进行插值: 先构造一组插值函数L i (x ) =011011()()()() ()()()() i i n i i i i i i n x x x x x x x x x x x x x x x x -+-+--------,其中i=0,… n.容易看出n 次多项式L i (x )满足L i (x )=1,(i=j );L i (x )=0,(i ≠j ),其中i=0,1…n ,令L i (x )=0()n i i i y l x =∑这就是拉格朗日插值多项式。与单项式基本 函数插值多项式相比,拉格朗日插值有2个重要优点:首先,建立插值多项式不需要求解方程组;其次,它的估计值受舍入误差要小得多。拉格朗日插值公式结构

拉格朗日多项式插值

拉格朗日多项式插值法浅析 摘要 拉格朗日插值多项式是一种最常见的多项式插值法,也是一种最常用的逼近工具。“学以致用 ”是每一门学科都致力追求的境界,数学自然也不例外。下面,探讨拉格朗日插值法的基本原理、如何构造拉格朗日多项式、拉格朗日多项式的误差界,并用 MATLAB 程序来实现这一数学算法的自动化,为复杂的分析研究提供了一条数学算法的捷径。 【关键词】:拉格朗日多项式 算法实现 MATLAB 在科学研究和实际的工程设计中,几乎所有的问题都可以用)(x f y =来表示其某种内在规律的数量关系。但理想化的函数关系在实际工程应用中是很难寻找 的,对于那些没有明显解析式的函数关系表达式则只能通过实验观察的数据,利用多项式对某一函数的进行逼近,使得这个逼近函数能够反映)(x f 的特性,而且利用多项式就可以简便的计算相应的函数值。例如我们不知道气温随日期变化的具体函数关系,但是我们可以测量一些孤立的日期的气温值,并假定此气温随日期变化的函数满足某一多项式。这样,利用已经测的数据,应用待定系数法便可以求得一个多项式函数f (x )。应用此函数就可以计算或者说预测其他日期的气温值。一般情况下,多项式的次数越多,需要的数据就越多,而预测也就越 准确。当然,构造组合多项式方法比较多,如线性方程求解、拉格朗日系数多项式以及构造牛顿多项式的分段差分和系数表等等,这里只对拉格朗日多项式插值法进行深入探讨。 一、拉格朗日多项式插值算法基本原理 函数)(x f y =在区间[a,b]上有定义,在是[ a,b]上取定的 N + 1个互异节点, 且在这些点处的函数值)(0x f , )(1x f ,…,)(n x f 为已知, 即 yi =f (xi ) , (N i ...1,0=),若存在一个和)(x f 近似的函数)(x P N ,满足 )()(i i N x f x P = (N i ...1,0=) (1) 则称 φ(x) 为 f (x) 的一个插值函数, 点i x 为插值节点,(1)称为插值条件, 区间[a,b]称为插值区间, 而误差函数)()(x P x f E N N -=称为插值余项。即是求一个不超过N 次多项式0111...)(a x a x a x a x P N N N N N ++++=-- (N i ...1,0=) 满足 )()(i i N x f x P = (N i ...1,0=)

插值法的分类与应用

插值法的方法与应用 武汉科技大学城市建设学院 琚婷婷 结构工程 201108710014 【摘要】文章讨论插值法在数值分析中的中心地位和重要作用,比较插值法间的优缺点,应用以及各种方法之间的相互联系。 【关键词】插值法;应用。 1.插值问题的提出 在许多实际问题及科学研究中,因素之间往往存在着函数关系,但是这些关系的显示表达式不一定都知道,通常只是由观察或测试得到一些离散数值,所以只能从这些数据构造函数的近似表达式,有时虽然给出了解析表达式,但由于解析表达式过于复杂,使用或计算起来十分麻烦。这就需要建立函数的某种近似表达,而插值法就是构造函数的近似表达式的方法。 2.插值法的数学表达 由于代数多项式是最简单而又便于计算的函数,所以经常采用多项式作为插值函数,称为多项式插值。多项式插值法有拉格朗日插值法,牛顿插值法、埃尔米特插值法,分段插值法和样条插值法等。其基本思想都是用高次代数多项式或分段的低次多项式作为被插值函数f (x)的近似解析表达式。 3.常用多项式插值公式构造 (I)拉格朗日插值 n 次拉格朗日插值多项式p n (x)对可表示为 p n (x)= y i l i (x)n i=0= y i ( x ?x j x i ?x j n j ≠0i ≠j n i=0) 其中l i x ,i =0,1,2???,n 称为插值基函数,插值余项为: R n (x)= f (x)- p n (x)=f n +1 (ξ) n+1 ! (x ?x i )n i=0 拉格朗日插值多项式在理论分析中非常方便,因为它的结构紧凑,利用基函

数很容易推导和形象的描述算法,但是也有一些缺点,当插值节点增加、减少或其位置变化时,整个插值多项式的结构都会改变,这就不利于实际计算,增加了算法复杂度,此时我们通常采用牛顿插值多项式算法。 (2)牛顿插值多项式 牛顿插值多项式为 N(x)=f(x0)+f x0,x1(x?x0)++???+f[x0,x1,???,x n](x?x0)(x?x1)???(x?x n?1)用它插值时,首先要计算各阶差商,而各高阶差商可归结为一阶差商的逐次计算。一般情况讨论的插值多项式的节点都是任意分布的,但是在实际应用中,出现了很多等距节点的情形,这时的插值公式可以进一步简化,在牛顿均差插值多项式中各阶均差用相应的差分代替,就得到了各种形式的等距节点插值公式,常用的是牛顿前插与后插公式。 (3)分段插值 在整个插值区间上,随着插值节点的增多,插值多项式的次数必然增高,而高次插值会产生Runge现象,不能有效的逼近被插函数,人们提出用分段的低次多项式分段近似被插函数,这就是分段插值法。构造分段插值多项式的方法仍然是基函数法,即先在每个插值节点上构造分段线性插值基函数,再对基函数作线性组合。它的优点在于只要节点间距充分小,总能获得所要求的精度,即收敛性总能得到保证,另一优点是它的局部性质,即如果修改某个数据,那么插值曲线仅仅在某个局部范围内受到影响。 (4)Hermite插值 分段线性插值的算法简单,计算量小,然而从整体上看,逼近函数不够光滑,在节点处,逼近函数的左右导数不相等,若要求逼近函数与被逼近函数不仅在插值节点上取相同的函数值,而且还要求逼近函数与被逼近函数在插值节点上取相同的若干阶导数值,这类问题称为Hermite插值。 (5)样条插值 通常我们用到的分段三次埃尔米特插值构造的是一个整体上具有一阶光滑性的插值多项式,但在实际中,对光滑性的要求更高。如飞机外形的理论模型,舶体放样等型值线等常要求有二阶的光滑度。工程上常用的是3次样条函数s(x)。其基本思想是将插值区间n等分后,在每一个小区间上,采用分段3次Hermite

编程实现拉格朗日(lagrange)插值法(C语言)

编程实现拉格朗日(lagrange)插值法(C语言) 程序如下: #include #include #include float lagrange(float *x,float *y,float xx,int n) /*拉格朗日插值算法*/ { int i,j; float *a,yy=0.0; /*a作为临时变量,记录拉格朗日插值多项式*/ a=(float *)malloc(n*sizeof(float)); for(i=0;i<=n-1;i++) { a[i]=y[i]; for(j=0;j<=n-1;j++) if(j!=i) a[i]*=(xx-x[j])/(x[i]-x[j]); yy+=a[i]; } free(a); return yy; } int main() { int i; int n; float x[20],y[20],xx,yy; printf("Input n:"); scanf("%d",&n); if(n>=20) { printf("Error!The value of n must in (0,20)."); getch();return 1; } if(n<=0) { printf("Error! The value of n must in (0,20)."); getch(); return 1; } for(i=0;i<=n-1;i++) { printf("x[%d]:",i); scanf("%f",&x[i]); } printf("\n"); for(i=0;i<=n-1;i++) { printf("y[%d]:",i);scanf("%f",&y[i]);

MATLAB三次样条插值之三弯矩法

MATLAB三次样条插值之三弯矩法 首先说这个程序并不完善,为了实现通用(1,2,…,n)格式解题,以及为调用追赶法程序,没有针对节点数在三个以下的情况进行分类讨论。希望能有朋友给出更好的方法。 首先,通过函数sanwanj得到方程的系数矩阵,即追赶法方程的四个向量参数,接下来调 用追赶法(在intersanwj函数中),得到三次样条分段函数系数因子,然后进行多项式合并 得到分段函数的解析式,程序最后部分通过判断输入值的区间自动选择对应的分段函数并计算 改点的值。附:追赶法程序chase %%%%%%%%%%%%%% function [newv,w,newu,newd]=sanwj(x,y,x0,y0,y1a,y1b)?%三弯矩样 条插值?%将插值点分两次输入,x0y0单独输入?% 边值条件a的二阶导数 y1a 和b 的二阶导数y1b,这里建议将y1a和y1b换成y2a和y2b,以便于和三转角代码相区别 ?n=length(x);m=length(y); if m~=n?error('x or y 输入有误,再来'); end?v=ones(n-1,1);u=ones(n-1,1);d=zeros(n-1,1);?w=2*o nes(n+1);?h0=x(1)-x0;?h=zeros(n-1,1); for k=1:n-1?h(k)=x(k+1)-x(k);?end v(1)=h0/(h0+h(1)); u(1)=1-v(1); d(1)=6*((y(2)-y(1))/h(1)-(y(1)-y0)/h0)/(h0+h(1));?% for k=2:n-1?v(k)=h(k-1)/(h(k-1)+h(k));?u(k)=1-v(k);?d(k)= 6*((y(k+1)-y(k))/h(k)-(y(k)-y(k-1))/h(k-1))/(h(k-1)+h(k)); end newv=[v;1];?newu=[1;u]; d0=6*((y(1)-y0)/h0-y1a)/h0; d(n)=6*(y1b-(y(n)-y(n-1))/h(n-1))/h(n-1); newd=[d0;d]; %%%%%%%%%%%% function intersanwj(x,y,x0,y0,y1a,y1b) %三弯矩样条插值?%第一部分?n=length(x);m=length(y); if m~=n?error('xory 输入有误,再来'); end?%重新定义h?h=zeros(n,1); h(1)=x(1)-x0; for k=2:n h(k)=x(k)-x(k-1);?end %sptep1调用三弯矩函数?[a,b,c,d]=sanwj(x,y,x0,y0,y1a,y1b);

相关文档