1、第五章 实验数据及模型参数拟合方法,第五章 实验数据及模型参数拟合方法,第一节 问题的提出,第一节 问题的提出,在化工设计及化工模拟计算中,需要大量的物性参数及各种设备参数。这些参数有些可以通过计算得到,但大量的参数还是要通过实验测量得到。实验测量得到的常常是一组离散数据序列(xi ,yi)。 如果数据序列(xi ,yi)(为一般起见), i=1,2, ,m ,含有不可避免的误差(或称“噪声” ,如图5-1所示),或者无法同时满足某特定的函数(如图5-2所示),那么,只能要求所作逼近函数(x)最优地靠近样点,即向量Q=((x1), (x2), , (xm))T与Y=(y1,y2, ,ym)T的
2、误差或距离最小。按Q与Y之间误差最小原则作为“最优”标准构造的逼近函数,称为拟合函数。,第一节 问题的提出,图5-1 含有噪声的数据,图5-2 无法同时满足某特定函数的数据序列,第一节 问题的提出,除了物性数据及设备参数需要利用数据拟合外,在化学化工中,许多模型也要利用数据拟合技术,求出最佳的模型和模型参数。如在某一反应工程实验中,我们测得了如表5-1所示的实验数据。,现在要确定在其他条件不变的情况下,转化率y和温度T的具体关系,现拟用两种模型去拟合实验数据,两种模型分别是,第一节 问题的提出,如何求取上述模型中的参数,并判断两种模型的优劣,是化学化工工作者经常要碰到的问题,这个问题的求解将在
3、本章下面的有关章节中进行详细的讲解。,第二节 拟合的标准,第二节 拟合的标准,前面已经提到按Q与Y之间误差最小原则作为“最优”标准构造的逼近函数,称为拟合函数,而向量Q与Y之间的误差或距离有各种不同的定义方法,一般有以下几种。 (1)用各点误差绝对值的和表示(2)用各点误差按绝对值的最大值表示(3)用各点误差的平方和表示,式中R称为均方误差。由于计算均方误差的最小值的原则容易实现而被广泛采用。按均方误差达到极小构造拟合曲线的方法称为最小二乘法。同时还有许多种其他的方法构造拟合曲线,感兴趣的读者可参阅有关教材。本章主要讲述用最小二乘法构造拟合曲线。,第二节 拟合的标准,第二节 拟合的标准_实例1
4、,实验测得二甲醇(DME)的饱和蒸气压和温度的关系,见表5-2。,表5-2 DME饱和蒸气压和温度的关系,由表5-2的数据观测可得,DME的饱和蒸气压和温度有正相关关系,如果以函数p=a+bt来拟合,则拟合函数是一条直线。通过计算均方误差Q ( a , b ),最小值而确定直线方程。,(见图5-3 ),图5-3 DME饱和蒸汽压和温度之间的线性拟合,第二节 拟合的标准_实例1,拟合得到直线方程为: 相关系数R为0.97296,平均绝对偏差SD为0.0707。,拟合的标准 实例2,如果采用二次拟合,通过计算下述均方误差拟合得二次方程为相关系数R为0.99972,平均绝对偏差SD为0.00815,
5、具体拟合曲线见图5-4。,图5-4 DME饱和蒸气压和温度之间的 二次拟合,拟合的标准 实例2,比较图5-3和图5-4以及各自的相关系数和平均绝对偏差可知: 对于DME饱和蒸汽压和温度之间的关系,在实验温度范围内用二次拟合曲线优于线性拟合。 二次拟合曲线具有局限性,由图5-4观察可知,当温度低于-30时,饱和压力有升高的趋势,但在拟合的温度范围内,二次拟合的平均绝对偏差又小于一次拟合,故对物性数据进行拟合时,不仅要看在拟合条件下的拟合效果,还必须根据物性的具体性质,判断在拟合条件之外的物性变化趋势,以便使拟合公式在已做实验点数据之外应用。,第三节 单变量拟合和多变量拟合,给定一组数据(xi,y
6、i),i=1, 2 , , m , 作拟合直线p (x)=a + bx , 均方误差为,由数学知识可知,Q (a , b)的极小值需满足:,整理得到拟合曲线满足的方程:,5.3.1 单变量拟合,1. 单变量拟合 线性拟合,1.单变量拟合线性拟合,该方程可用消元法或克莱姆方法解出方程(如下式所示),单变量拟合 线性拟合实例,例: 下表为实验测得的某一物性和温度之间的关系数据,表中x为温度数据,y为物性数据。请用线性函数拟合温度和物性之间的关系。解:设拟合直线p(x)=a+bx ,并计算得下表:,将数据代入法方程组(1-12)中,得到:解方程得:a = -1.5 , b = 1.5拟合直线为:,相
7、关系数R为1。,单变量拟合 线性拟合实例,线性拟合VB清单,Private Sub Command1_Click() Dim x(5),y(5),c,d,m,p,a,b,eer Const n=5 For i =1 To 5x(i)=InputBox(“x(i)=”)y(i)=InputBox(“y(i)=”) Print “x(i)=”;x(i) Print “y(i)=”;y(i) Next Ic=0d=0m=0p=0,For i=1 To 5c=c+x(i)d=d+x(i)2m=m+y(i)p=p+x(i)*y(i) Next ia=(m*d-c*p)/(n*d-c2)b=(n*p-c*
8、m)/(n*d-c2) 参数计算a=Int(a*1000+0.5)/1000b=Int(b*1000+0.5)/1000 Text1.Text=Str(a) Text2.Text=Str(b) 参数输出 For i=1 To 5eer=eer+(a+b*x(i)-y(i)2 误差计算eer=Int(eer*100000+0.5)/100000 Next ieer=eer/5 Text3.Text=Str(eer) End Sub,有关线性拟合变型问题,例如要拟合y=a+b/x2,只需在数据输入后增加一语句x(i)=1/x(i)2,而在程序后面的误差eer 的计算中则不需要修改。,2.单变量拟合
9、 二次拟合函数,给定数据(xi ,yi), i=1, 2 , , m ,用二次多项式函数拟合这组数据。 设 ,作出拟合函数与数据序列的均方误差表达式,由数学知识可知,Q( a0 ,a1 ,a2 )的极小值满足 :,整理左式得二次多项式函数拟合的满足条件方程(5-14):,(5-14 ),解此方程得到在均方误差最小意义下的拟合函数p ( x )。式(5-14)称为多项式拟合的法方程,法方程的系数矩阵是对称的。当拟合多项式,n 5时,法方程的系数矩阵是病态的,在用通常的迭代方法求解线性方程时会发散,在计算中要采用一些特殊算法以保护解的准确性。关于线性方程的求解方法,已在第三章中介绍。,2.单变量拟
10、合 二次拟合函数,3.二次拟合函数的拓展,和一次拟合一样,二次拟合也可以有多种变型,例如套用上面的公式,可以得到关于求解此拟合函数的法方程(5-15)。值得注意的是在此法方程的构建过程中,进行了变量的代换。首先是拟合函数中变量的代换: 。,P(x)=a0+a1x3+a2x5,(5-15),其次是法方程的代换:将相应拟合函数中的代换引入法方程中。同时应注意法方程中x的4次幂是由两个2次幂相乘得到,x的3次幂是由一个2次幂和一个1次幂相乘得到,而2次幂就是变量本身,而非两个1次幂相乘得到。这个概念至关重要,在以后的二次拟合的各类变型中,均需利用这个概念,千万不要用常规的思路去进行代入计算。,3.二
11、次拟合函数的拓展,如果我们需要求解是下面的拟合函数:,参照上面的方法,我们很容易得到求解该拟合函数的法方程,3.二次拟合函数的拓展,4.二次拟合实例,请用二次多项式函数拟合下面这组数据。解:设 并计算得下表,4.二次拟合实例,将上面数据代入式 (5-14) ,相应的法方程为,解方程得: a0 =0.66667 , a1 = -1.39286 , a2 = -0.13095 所以:,-3,-2,-1,0,1,2,3,-6,-4,-2,0,2,4,y=0.66667-1.39286 x-0.13095 x,2,y,Y,X,图 5-6 拟合曲线与数据序列,二次拟合-VB程序清单,Private Su
12、b Command1_Click() Dim n, m As Integer n = InputBox(“n=方程次数“) m = InputBox(“m=实验次数“) ReDim x(m), y(m), a0(n + 1), a1(n + 1), aa(m, n + 1) ReDim qq(n + 1, m), pp(n + 1, n + 1), b(n + 1), g(n + 1), tt(n + 1, n + 1) For I = 1 To m: 读入数据 READ x(I), y(I) Next I Data -3, 4, -2, 2, -1, 3, 0, 0, 1, -1, 2, -
13、2, 3, -5 For i = 1 To m x(i) = InputBox(“x(i)“) y(i) = InputBox(“y(i)“) Next i,二次拟合-VB程序清单,omiga = InputBox(“omiga=松弛因子“) For j = 1 To n + 1 为计算法方程中的系数做准备For i = 1 To maa(i, j) = x(i) (j - 1)Next i Next j For j = 1 To mFor i = 1 To n + 1qq(i, j) = aa(j, i)Next i Next j,计算法方程中的右边项 For i = 1 To n + 1
14、b(i) = 0 For j = 1 To mb(i) = b(i) + aa(j, i) * y(j) Next j Next i 开始计算法方程中的右边项的系数 For i = 1 To n + 1 For j = 1 To n + 1pp(i, j) = 0For k = 1 To mpp(i, j) = qq(i, k) * aa(k, j) + pp(i, j)Next k Next j Next i,二次拟合-VB程序清单,开始用松弛迭代法求解法方程中的变量 For i = 1 To n + 1a0(i) = 0a1(i) = 0.11 Next i For i = 1 To n
15、+ 1g(i) = b(i) / pp(i, i)For j = 1 To n + 1 If j = i Thentt(i, j) = 0 Elsett(i, j) = -pp(i, j) / pp(i, i) End If Next j Next i,50 eer = 0For i = 1 To n + 1 eer = eer + Abs(a0(i) - a1(i)Next i If eer 0.00001 Then GoTo 100 Else For i = 1 To n + 1a0(i) = a1(i) Next i,二次拟合-VB程序清单,关键的迭代计算公式 For i = 1 To
16、n + 1 s = g(i)For j = 1 To n + 1 s = s + tt(i, j) * a0(j) Next j a1(i) = omiga * s + (1 - omiga) * a0(i) Print “a1(“ & i & “)=“ & a1(i) Next i GoTo 50 End If 打打印结果 100 For i = 1 To n + 1 Print “a(“ & i - 1 & “)=“ & a1(i) Next i End Sub,3.2 多变量的曲线拟合,前面介绍的曲线拟合方法只涉及单变量函数的曲线拟合,但实际在化工实验数据处理及模型参数拟合时,通常会碰到
17、多变量的参数拟合问题。一个典型的例子是传热实验中努塞尔数、雷诺数及普朗特数之间的拟合问题:( 1-16) 根据若干组实验测得的数据,如何求出式(1-16)中的参数c1、c2、c3,这是一个有2个变量的参数拟合问题,为不失一般性,我们把它表达成以下形式。给定数据序列 用一次多项式函数拟合这组数据。 设 ,作出拟合函数与数据序列的均方误差(1-17),( x1i ,x2i ,yi ),i=1,2,3,m,多变量的曲线拟合,由多元函数的极值原理,Q( a0 ,a1 ,a2 )的极小值满足整理得多变量一次多项式函数拟合的法方程(1-18),通过求解方程(1-18)就可以得到多变量函数线性拟合时的参数,
18、由于方程(1-16)不是线性方程,我们可以通过对方程(1-16)两边同取对数,就可以得到以下线性方程只要作如下变量代换:并将实验数据代入法方程(1-18)就可以求出方程(1-16)中的系数。对于变量数多于2个,并且拟合曲线模型是非线性型时,可参照本节的方法,推导得到法方程,通过对法方程的求解就可以求得各种拟合曲线参数。灵活运用上面介绍的方法,可以解决大部分实验数据及模型参数的拟合问题。,多变量的曲线拟合,多变量的曲线拟合VB程序清单,多变量的曲线拟合实例,根据某传热实验测得如下数据,请用方程(1-16 )的形式拟合实验曲线。解:利用上面的VB程序,将数据依次输入,就可以得到方程 (1-16)中
19、的三个参数C1=0.023 C2=0.8 C3=0.3则式(1-16 )就变成了常见的光滑管传热方程,多变量的曲线拟合实例,值得注意的是程序中对c2(1)的处理,不是直接将计算结果显示出来,而是进行指数运算后才显示出来。这是由于我们在进行拟合计算的时候,对方程(1-16 )进行了对数运算。如果拟合方程的形式和方程(1-16 )不同,则需对上面提供的程序作适当修改。例如以下两个自变量的拟合函数,第四节 解矛盾方程组,第四节 解矛盾方程组,本节中将用最小二乘法求解线性矛盾方程的方法来构造拟合函数,并将其推广至任意次和任意多个变量的拟合函数,为在化学化工中实验数据处理及模型参数拟合提供更为一般性的方
20、法。给定数据序列(xi,yi),i=1, 2 , , m ,做拟合直线p (x) = a0 + a1x ,如果要直线p (x)过这些点,那么就有 p (xi ) = a0 + a1xi =yi, i=1, 2 , , m , 即,写成矩阵形式为,上述方程组中有2个未知量m个方程( m2 )。一般地,将含有n个未知量m个方程的线性方程组其一般形式为,第四节 解矛盾方程组,写成矩阵形为,一般情况下,当方程数m多于变量数n ,且m个方程之间线性无关, 则方程组无解,这时方程组称为矛盾方程组。方程组在一般意义下无解,也即无法找到n个变量同时满足m个方程。这种情况和拟合曲线无法同时满足所有的实验数据点相
21、仿,故可以通过求解均方误差 极小意义下矛盾方程的解来获取拟合曲线。由数学知识还可证明:方程组ATAX = ATY的解就是矛盾方程组AX = Y 在最小二乘法意义下的解。这样我们只要通过求解ATAX = ATY就可以得到矛盾方程组的解,进而得到各种拟合曲线,为拟合曲线的求解提供了另一种方法。,第四节 解矛盾方程组,minAX-B22,例如,拟合直线p (x ) = a0 +a1x的矛盾方程组 ATAX = ATY的形式如下:化简得到与式(1-12)相同的法方程,第四节 解矛盾方程组,这里需要注意的是变量X和系数(a0 , a1)之间的相互转换关系。即对于n次多项式曲线拟合,要计算Q ( a0 ,
22、a1 , , an )的极小值问题,这与解矛盾方程组,第四节 解矛盾方程组,与求 的极小问题是一回事。,或,在这里,故对离散数据(xi,yi),i=1, 2 , , m ;所作的n次拟合曲线y=,,可通过解下列方程组求得:,(1-21),第四节 解矛盾方程组,如果拟合函数有n个自变量并进行一次拟合,则其拟合函数为:,(1-22),通过m(mn)次实验,测量得到了m组,的实数据,则可得到上面n个自变量拟合函数的法方程,第四节 解矛盾方程组,只要对法方程(1-22)稍加修改,就可以得到有n个自变量的任意次方的拟合函数的法方程,通过法方程的求,就可以得到拟合函数中的各项系数。,(1-23),第四节
23、解矛盾方程组,利用解矛盾方程的方法,用二次多项式函数拟合下面数据。解:记二次拟合曲线为 形成法方程,第四节 解矛盾方程组实例1,第四节 解矛盾方程组实例1,而,第四节 解矛盾方程组实例1,得到:,解方程得到:a0 = 0.66667 , a1 = -1.39286 , a2 = -0.13095,f(x)=0.66667-1.39286x-0.13095x2,例 1.5:给出一组数据,见下表。用解矛盾方程的思路将下面数据拟合成 的经验公式。,第四节 解矛盾方程组实例2,解:列出法方程:,而:,第四节 解矛盾方程组实例2,故法方程为:解方程得: a = 10.675 , b = 0.137 拟合曲线为:,第四节 解矛盾方程组实例2,