温度插值算法
A. 内插值法求发热温度时,计算步骤是怎样的
内插值近似法求温度(比热随温度增大而增大)假定一个发热温度t0,查比热,得V0cprod值,计算若t0>t,则假定温度大了,减小假定值,重复若t0<t,则假定温度小了,增加假定值,重复最后得tn<t1,tm>t2,n、m是附表中相邻的两个温度值t热=t1,t热=t2,t热=(t1+t2)/2都可以或插值B. 插值法计算公式是什么
公式就是:Y=Y1+(Y2-Y1)×(X-X1)/(X2-X1)。
通俗地讲,线性内插法就是利用相似三角形的原理,来计算内插点的数据。
内插法又称插值法。根据未知函数f(x)在某区间内若干点的函数值,作出在该若干点的函数值与f(x)值相等的特定函数来近似原函数f(x),进而可用此特定函数算出该区间内其他各点的原函数f(x)的近似值,这种方法,称为内插法。
按特定函数的性质分,有线性内插、非线性内插等;按引数(自变量)个数分,有单内插、双内插和三内插等。
介绍:
线性插值是指插值函数为一次多项式的插值方式,其在插值节点上的插值误差为零。线性插值相比其他插值方式,如抛物线插值,具有简单、方便的特点。
线性插值的几何意义即为概述图中利用过A点和B点的直线来近似表示原函数。线性插值可以用来近似代替原函数,也可以用来计算得到查表过程中表中没有的数值。
C. 插值的计算方法是什么
计算方法:假设与A1对应的数据是B1,与A2对应的数据是B2,现在已知与A对应的数据是B,A介于A1和A2之间,则可以按照(A1-A)/(A1-A2)=(B1-B)/(B1-B2)计算得出A的数值,其中A1、A2、B1、B2、B都是已知数据。
根据(A1-A)/(A1-A2)=(B1-B)/(B1-B2)可知:(A1-A)=(B1-B)/(B1-B2)×(A1-A2)
A=A1-(B1-B)/(B1-B2)×(A1-A2)=A1+(B1-B)/(B1-B2)×(A2-A1)
插值法又称“内插法”,是利用函数f (x)在某区间中已知的若干点的函数值,作出适当的特定函数,在区间的其他点上用这特定函数的值作为函数f (x)的近似值,这种方法称为插值法。如果这特定函数是多项式,就称它为插值多项式。
如果只需要求出某一个x所对应的函数值,可以用“图解内插”。它利用实验数据提供要画的简单曲线的形状,然后调整它,使得尽量靠近这些点。
如果还要求出因变数p(x)的表达式,这就要用“表格内插”。通常把近似函数p(x)取为多项式(p(x)称为插值多项式),最简单的是取p(x)为一次式,即线性插值法。在表格内插时,使用差分法或待定系数法(此时可以利用拉格朗日公式)。在数学、天文学中,插值法都有广泛的应用。
D. 插值法公式
以下是我的个人观点:
首先你得分清楚插值和拟合这两个的区别,
拟合是指你做一条曲线或直线,使得你的数据点跟这条线的“误差”最小。注意,这个要求并不要求所有的数据点在我们的拟合曲线上。
插值是指你做一条曲线或直线完全经过这些点,就是说数据点一定都要在插值曲线上。
插值也有好多种:比如拉格朗日插值,分段插值,样条插值(样条插值要求你还要知道这些数据点的一阶导数)
我们知道两点确定一条直线(一次多项式),三点确定一条抛物线(二次多项式),试想一下有10个点是不是可以确定一个9次多项式(9次多项式里面还有一个常数项,就是10个未知数,我们有10个数据点,刚好可以求解)
(**)拉格朗日插值就是上面的这种插值。但是它就是把这些多项式系数重新表示了一下(就是不用去求上面所说的10个系数)。你求出这些系数后,只要将你想要的x的值往里一代,马上就得到你想要的函数值。但这种插值在头尾附近会出现一些不好的振荡现象(龙格现象)
(**)分段插值,还是按照上面的原则,比如说,我两个点两个点地确定一条直线(比如1,2点连起来,2,3点连起来),最后所有直线的集合(这时应当是一系列的折线)这个分段函数也是经过所有的数据点。当然你也可以三个点三个点地确定一条抛物线。用这一方面时,你要先确定你想要的x值在哪一个区间里,然后用这一区间的表达式来计算出函数值就可以了。本方法不会出现龙格现象
(***)样条插值,上面提到分段插值是一系列折线,折线使得不光滑,样条就是用其导数值,使得它们变光滑。
下面说计算方法吧!至于表达式,你如果理解了上面,你去找本“计算方法”或“数值计算”的书,上面都有表达式。应当不难。
另外你还可以借助于MATLAB这样的软件来计算。
比如你的原始数据是X,Y,你想要求y(x=5)的值
X=[2,6,10,14,18,22,26,30,34,38,41,42,45,49,53,57,61,65,69,73,77,81]; %自变量的值
Y=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22]; %自变量相应的函数值
X0=5; %你想要的点的值
N=22; %这个是点的个数
Doc=2; %分段插值中你想用几个点插值
你可以用下面的语句得到y(x=5);
Y1=lagrange(X,Y,X0) %拉格朗日插值
Y2=interp1(X,Y,X0,'linear') %分段两点线性插值
Y2=interp1(X,Y,X0,'spline') %分段两点线性插值
可能说的不好,你如果想系统地学点,可能得看一下相关的书。
E. MATLAB插值计算问题
如果你只是对温度进行插值。时间还是那些数据,就想你表中所列的那样,可以使用interp1
其调用格式是yi = interp1(x,Y,xi,method)
演示一下当时间为0.02时,温度17和31的值。
x=10:10:40;
Y=[3 12 24 29];
xi=[17 31];
method='spline';%采用样条插值
yi = interp1(x,Y,xi,method)
答案是yi = 8.5300 24.9800
method也可以被定义为其他插值方法,比如'linear' 'cubic' 'pchip'
是不是觉得这样效率很低,只能求出一行的两个数据。
将数据区定义为一个矩阵,使用for循环就可以全部求出了。
当然这样还是有点不人性化。我通常都是在Excel中写好格式。然后用MATLAB写个函数之间完成在Excel中的读写操作的。
这里有必要提一下,interp1,是MATLAB自带的插值函数,你也可以自己编写其他插值方法。比如牛顿插值和拉格朗日插值。
如果你想知道,在时间为0.0236时,温度为27.6时的数据,那应该使用二元插值函数 interp2
ZI = interp2(X,Y,Z,XI,YI,method)
方法类似
F. 我在做温度插值图时,由于气象站点的分布为分散的点状, 需要对气温数据在水平方向上进行内插
你的问题比较专业,只能给些意见,希望能起到作用。
对于温度取那种平均,我觉得需要结合你的目的,你想做长期变化,年际变化或者季节变化,就对应用不同的平均,长期就用40年平均,年际就用年平均,年内季节变化就用月平均,有这么好的数据,怎么用完全取决于你想表达的内容和研究目的。
高程怎样拟合我不会,我觉得地理信息系统的软件里应该都有这些功能。
插值我通常都用克里金插值,好像是有限元差分法比较利于网格的使用,个人认为可以先做等高线和等温线,高程根据实际情况以百米为单位再给温度阶梯。插值一次只能显示一种属性,先插高程,再插温度,然后跟你没插之前的实测线做个对比,变化范围小应该就可以使用。
纯属个人意见,可能偏差较大,见谅。