我们在运用Excel或VBA进行计算的时间常常要用到插值函数,而我们通常用的都是线性内插,即直线内插。据我从《数值计算方法》里面了解到,还有以下几种插值函数:1、拉格朗日插值公式 (Lagrange)2、牛顿插值公式 (Newton)3、埃特金插值公式(Aitken)请提供有关这些函数的公式和示例,谢谢!!
我们在运用Excel或VBA进行计算的时间常常要用到插值函数,而我们通常用的都是线性内插,即直线内插。
据我从《数值计算方法》里面了解到,还有以下几种插值函数:
1、拉格朗日插值公式 (Lagrange)
2、牛顿插值公式 (Newton)
3、埃特金插值公式(Aitken)
请提供有关这些函数的公式和示例,谢谢!!
2楼
利用电子表格实现函数插值:
该函数用到了拉格朗日插值和线性插值,但只有示例,没有表达式,我一时也搞不明白,请大家看看。
回复
3楼
excel表格的线性插值函数(牛顿插值):
VBA入门试编,水力计算与试验分析多用。
你的表格没有表头,让人看不明白??
http://co.163.com/forum/content/212_255701_1.htm
回复
4楼
EXCEL自定义插值计算函数
使用说明:
人们对EXCEL普遍熟悉的功能是表图的处理,不太知道其在工程计算(如锅炉设计计算)中的应用。复杂的工程计算常常用专业编程语言(Fortran、C、Pascal 等)来编制计算程序解决,用专业编程语言编制工程计算程序往往有下面二个缺点:
1) 编程语言专业性强,一般工程技术人员难以掌握,由这些专业编程语言编制的计算应用程序的维护、修改、升级都比较困难。
2) 由专业编程语言编制的工程计算应用程序人机界面不友好,常常需要复杂的输入前、输出后处理。
EXCEL每一个单元格就是一个电子表格,很容易进行一般的加、减、乘、除、乘方、开方,而三角函数、指数函数在EXCEL中可以直接引用内部函数。用EXCEL编制一般的工程计算程序还需解决的有以下两个问题:(1)循环计算,(2)表、单曲线、曲线组的查找(如:锅炉设计计算中的焓值)。对于问题(1)循环计算,EXCEL在工具菜单中提供了两个命令:单变量求解和规划求解,利用这两条命令很容易解决问题(1)。对于问题(2)表、曲线的查找,EXCEL没有提供现成的函数,但也可用VLOOKUP、MATCH、IF、OFFSET等函数的组合勉强近视解决,本文重点介绍表、曲线的查找自定义函数的定义及使用。
为了更好地解决曲线查找的问题,应用C++程序设计语言,用拉格朗日插值计算法在EXCEL中建立了两个自定义函数,单曲线插值函数TWLQ(变量,"带路径的保存数据的文件名"),曲线组插值函数THLQ(变量1,变量2,"带路径的保存数据的文件名")。单曲线插值函数、曲线组插值函数的"带路径的保存数据的文件"包含着特定对映表、曲线的信息和计算精度的要求 (文件为Notepad编辑的txt文件) 。
单曲线lagrange插值函数:
double twlq(double x,char* filename);
double twlx(double q,char* filename);
曲线组lagrange插值函数:
double thlq(double x,double y,char* filename);
double thlx(double y,double q,char* filename);
double thly(double x,double q,char* filename)。
附含壁温计算,强度计算,热电偶/阻,水阻力,烟气阻力,蒸汽性质等现成数据。
例:单曲线插值函数 "带路径的保存数据的文件"结构如下:
@ Descri ption @
n, nsel;x[0],x[1], x[2],··, x[n-2],x[n-1];
q[0],q[1], q[2],··, q[n-2],q[n-1];
MinX=0.7,MaxX=0.9,OverRangeAlm=1,X=电压,XUnit=mv,Q=电流,QUnit=mA
注解:
Descri ption:用户自定义描述字符串(Descri ption中不可有@符号);
n: 总插值点个数;
nsel:实际参与插值计算的插值点个数;
MinX=0.7,MaxX=0.9 取值范围;
OverRangeAlm=1 越限报警 1:报, 0:不报;
X=电压,XUnit=mv,变量名称,单位。
****结论:
l)图形化界面的插值函数数据文件生成器 LCZMaker 方便快捷生成单曲线或曲线组插值函数数据文件。
2)应用EXCEL自定义插值函数,在EXCEL中进行工程计算编程极为便利,比专业编程语言程序设计更易学易用、直观明了,用EXCEL编制的工程计算应用程序更易维护、修改、升级。
3) EXCEL本身长于表格制作,在EXCEL中进行工程计算编程人机界面友好,输入前、输出后处理方便简单。
4)在某大型锅炉厂电站锅炉性能设计计算中已显神力。
回复
5楼
数值计算程序大放送-插值算法
http://www.shumo.com/bbs/dispbbs.asp?boardid=109&id=9830
回复
6楼
多项式与插值
http://www.ddvip.com/machine/matlab/index1/10.htm
回复
7楼
Lagrange插值
例 取节点x0=0,x1=1,x2=1/2,对函数 y=Exp[-x]建立拉格郎日插值多项式,并求函数在0.25处的近似值
Clear[x]
x1={0,1,1/2};y1=Exp[-x1]//N;
l0[x_]:=(x-x1[[2]])*(x-x1[[3]])/(x1[[1]]-x1[[2]])/(x1[[1]]-x1[[3]])
l1[x_]:=(x-x1[[1]])*(x-x1[[3]])/(x1[[2]]-x1[[1]])/(x1[[2]]-x1[[3]])
l2[x_]:=(x-x1[[1]])*(x-x1[[2]])/(x1[[3]]-x1[[1]])/(x1[[3]]-x1[[2]])
l[x_]:=y1[[1]]*l0[x]+y1[[2]]*l1[x]+y1[[3]]*l2[x]
l0[x]
l1[x]
l2[x]
Expand[l[x]]
l[0.25]
Print["精确值=",Exp[-0.25]]
-4 (-1+x) x
0.783913
精确值= 0.778801
利用Mathematica中的插值命令
Clear[x,L1,L2]
L1=Table[{x1[
],y1[]},{i,1,3}]
L2[x_]:=InterpolatingPolynomial[L1,x]
Expand[L2[x]]
http://202.193.64.35/person/xan/szfx/2-1-1.htm
回复
8楼
拉格朗日插值
http://math.dhu.edu.cn/weblearning/math/jisuanfangfa/matlabpg/pg1.htm
回复
9楼
九种插值方法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 值。它实际上是一个趋势面分析作图程序。 使用多元回归法时要涉及到曲面定义和指定XY的最高方次设置,曲面定义是选择采用的数据的多项式类型,这些类型分别是简单平面、双线性鞍、二次曲面、三次曲面和用户定义的多项式。参数设置是指定多项式方程中 X 和 Y组元的最高方次 。
5、径向基本函数法 径向基本函数法是多个数据插值方法的组合。根据适应你的数据和生成一个圆滑曲面的能力,其中的复二次函数被许多人认为是最好的方法。所有径向基本函数法都是准确的插值器,它们都要为尊重你的数据而努力。为了试图生成一个更圆滑的曲面,对所有这些方法你都可以引入一个圆滑系数。你可以指定的函数类似于克里金中的变化图。当对一个格网结点插值时,这些个函数给数据点规定了一套最佳权重。
6、谢别德法 谢别德法使用距离倒数加权的最小二乘方的方法。因此,它与距离倒数乘方插值器相似,但它利用了局部最小二乘方来消除或减少所生成等值线的"牛眼"外观。谢别德法可以是一个准确或圆滑插值器。 在用谢别德法作为格网化方法时要涉及到圆滑参数的设置。圆滑参数是使谢别德法能够象一个圆滑插值器那样工作。当你增加圆滑参数的值时,圆滑的效果越好。
7、三角网/线形插值法 三角网插值器是一种严密的插值器,它的工作路线与手工绘制等值线相近。这种方法是通过在数据点之间连线以建立起若干个三角形来工作的。原始数据点的连结方法是这样:所有三角形的边都不能与另外的三角形相交。其结果构成了一张覆盖格网范围的,由三角形拼接起来的网。 每一个三角形定义了一个覆盖该三角形内格网结点的面。三角形的倾斜和标高由定义这个三角形的三个原始数据点确定。给定三角形内的全部结点都要受到该三角形的表面的限制。因为原始数据点被用来定义各个三角形,所以你的数据是很受到尊重的。
8.自然邻点插值法 自然邻点插值法(NaturalNeighbor)是Surfer7.0才有的网格化新方法。自然邻点插值法广泛应用于一些研究领域中。其基本原理是对于一组泰森(Thiessen)多边形,当在数据集中加入一个新的数据点(目标)时,就会修改这些泰森多边形,而使用邻点的权重平均值将决定待插点的权重,待插点的权重和目标泰森多边形成比例[9]。实际上,在这些多边形中,有一些多边形的尺寸将缩小,并且没有一个多边形的大小会增加。同时,自然邻点插值法在数据点凸起的位置并不外推等值线(如泰森多边形的轮廓线)。
9.最近邻点插值法最近邻点插值法(NearestNeighbor)又称泰森多边形方法,泰森多边形(Thiesen,又叫Dirichlet或Voronoi多边形)分析法是荷兰气象学家A.H.Thiessen提出的一种分析方法。最初用于从离散分布气象站的降雨量数据中计算平均降雨量,现在GIS和地理分析中经常采用泰森多边形进行快速的赋值[2]。实际上,最近邻点插值的一个隐含的假设条件是任一网格点p(x,y)的属性值都使用距它最近的位置点的属性值,用每一个网格节点的最邻点值作为待的节点值[3]。当数据已经是均匀间隔分布,要先将数据转换为SURFER的网格文件,可以应用最近邻点插值法;或者在一个文件中,数据紧密完整,只有少数点没有取值,可用最近邻点插值法来填充无值的数据点。有时需要排除网格文件中的无值数据的区域,在搜索椭圆(SearchEllipse)设置一个值,对无数据区域赋予该网格文件里的空白值。设置的搜索半径的大小要小于该网格文件数据值之间的距离,所有的无数据网格节点都被赋予空白值。在使用最近邻点插值网格化法,将一个规则间隔的XYZ数据转换为一个网格文件时,可设置网格间隔和XYZ数据的数据点之间的间距相等。最近邻点插值网格化法没有选项,它是均质且无变化的,对均匀间隔的数据进行插值很有用,同时,它对填充无值数据的区域很有效。
回复