首页 > 范文大全 > 正文

牛顿法在求解BOD-DO模型中河流起始点BOD的VB实现

开篇:润墨网以专业的文秘视角,为您筛选了一篇牛顿法在求解BOD-DO模型中河流起始点BOD的VB实现范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

[摘要] 在BOD-DO模型中,牛顿法通过VB编程实现,在求解河流起始点BOD值将起到核心作用;文章指出了牛顿法在运用过程中可能存在的局限性,并提出进一步利用数控技术实现计算机与环境监测仪器之间通信的设想。

[关键词] bod-do模型 牛顿法 VB语言

1 BOD-DO模型相关背景

溶解氧(DO)、生化需氧量(BOD)是表示水中溶解氧情况的两个重要指标。前者是反映水体中氧数量多少的指标,若低于4mg/L,则鱼类和水中大多数生物都不能存活;后者是指在20℃下生物氧化5天,微生物消耗溶解氧的数量。关于BOD和DO的耦合模型[1],可以写作:

(1)

(2)

式中: ――河水中的BOD值,mg/L;

――河水中的氧亏值,mg/L;

K ――河水中BOD衰减(耗氧)系数,1/d;

K ――河流复氧系数,1/d;

t ――河水的流行时间。

其解析式为:(3)

(4)

式中: ――河流起始点bod值;

――河流起始点的氧亏值。

式(4)表示河流的氧亏变化规律。如果以河流的溶解氧来表示,则

(5)

式中: ――河流中的溶解氧浓度;

――饱和溶解氧浓度。

式(5)称为S―P氧垂公式。

在溶解氧浓度最低的点――临界点,河水的氧亏值最大,且变化速率为零,则

(6)

(7)

式中: ――临界点的氧亏值;

tc――由起始点到达临界点的流行时间。

临界氧亏发生的时间t 可以由下式计算:

tc (8)

2 实例

拟建一个工厂,将废水经过处理后排入附近的一条河流中,在现状条件下,河流中BOD5的浓度是2mg/L,溶解氧的浓度是8 mg/L,河水水温是20℃,河流流量是14 m /s ;排放的工业废水,BOD5的浓度在处理之前为800 mg/L,水温为20℃,流量为3.5 m /s ,废水排放前经过处理溶解氧浓度为4 mg/L,假定废水和河水在排放口附近迅速混合,混合后河道中平均水深达0.8m, 河宽15m,参数k1(20℃)为0.23/d,k2为3.0/d, 若河流的溶解氧标准为5.0 mg/L,计算该工厂排出废水中允许进入河流的最大BOD5浓度。

本例的难点在于将上述的(7)和(8)联立求解河流起始点BOD值时,将得到一个非手工操作计算的超越方程,使对工厂排出废水中允许进入河流的最大BOD5浓度的求解陷入僵局。笔者将利用Visual Basic 6.0编程工具实现对牛顿法的编译,进一步实现对超越方程的破译,计算出工厂排出废水中允许进入河流的最大BOD5浓度。

3 牛顿迭代法的流程图

牛顿迭代法又称为牛顿切线法,它是基于下列的思想求根:先求出方程的表达式f(x)的导数f′(x),如果在判定方程的区间[x1,x2]中无解,即f(x1)与f(x2)同号(标记为t=0),输出无解提示后结束;若在判定方程的区间[x1,x2]中有解,即f(x1)与f(x2)异号(标记为t=1)的基础上,将(x1+x2)/2的初值赋予x1,计算曲线点(x1,f(x1))的切线与x轴的交点x2: x2=x1-f(x1)/ f′(x1)。依法继续,直到x1与x2的差满足精确要求,即足够接近真正的x*为止,或作切线达1000次为止。

从上图中可以看出: f′(x1)=f(x1)/(x1-x2)

因此, x2=x1-f(x1)/f′(x1)

这就是牛顿迭代法.可以利用它由x1求出x2,然后由x2求出x3,直到求出x*为止.

4 牛顿迭代法的vb实现

先利用VB计算出饱和DO值和混合后DO值,进一步用牛顿迭代法求解河流BOD初始点值(见图1)。以下是程序的主体部分:

Private Sub C2_Click() ‘计算河流起始点BOD

……

For i = a To b Step 0.1[2]

If f(i) * f(b)

Next i

If t = 0 Then T1(9).Text = "方程在区间无解!": End

x2 = (x1 + x2) / 2

Do

t = t + 1

x1 = x2

x2 = x1 - f(x1) / f1(x1)

Loop While (Abs(x1 - x2) > 1 / 10 ^ (n + 1) And t < 1000)

T1(9).Text = Int(x2 * 10 ^ n + 0.5) / 10 ^ n

……

End Sub

Private Function f(x As Single) As Single ‘函数f (x)

Dim c As Single, m As Single, k As Single, q As Single

q = (Val(T1(0).Text) * Val(T1(2).Text) + Val(T1(1).Text) * Val(T1(3).Text)) / (Val(T1(2).Text) + Val(T1(3).Text))

c = Val(T1(6).Text) / (Val(T1(7).Text) - Val(T1(6).Text)) * Log(Val(T1(7).Text) / Val(T1(6).Text))

m = (Val(T1(7).Text) - Val(T1(6).Text)) / Val(T1(6).Text) * (Val(T1(4).Text) - q)

k = Val(T1(7).Text) / Val(T1(6).Text) * (Val(T1(4).Text) - Val(T1(8).Text))

f = Log(k / x) - c * m / x + c

End Function

Private Function f1(x As Single) As Single

‘对函数f(x)的求导得f’(x)

……

f1 = -1 / x + c * m / (x * x)

End Function

图1 河流起始点BOD值的结果

5 讨论

5.1 本文用牛顿法所得的河流起始点BOD值为水利工作者提供了方便。但是,牛顿法也有它的局限性,如下左图和右图分别表示斜率为0和收敛过程中会停滞于某一点的情况:

5.2 可以进一步利用数控技术实现计算机与环境监测仪器之间的通信。

参考文献

[1] 陆书玉. 环境影响评价[M]. 北京:高等教育出版社, 2001.

[2] 杨克昌. 计算机程序设计典型例题精解[M]. 长沙:国防科技大学出版社,1999.

[3] 谭浩强. C程序设计题解与上机指导[M]. 北京:清华大学出版社,2005.