编程求解实际气体状态方程

第12卷 第3期       江苏广播电视大学学报Vol. 12No. 3

       2001年6月JOURNAL OF J IAN GSU RADIO &TEL EVISION UNIV ERSITY J un. 2001

编程求解实际气体状态方程

潘宝娟, 沈海滨

(南京化学工业集团公司电大, 江苏南京210048)

摘 要:将几种常用的实际气体状态方程式转化为三次方程, 采用牛顿迭代法并利用计算机编程进行求解。

关键词:气体状态方程式; 牛顿迭代法; 高次方程

中图分类号:O552.31  文献标识码:B  文章编号:1008-4207(2001) 03-0050-02

一、数学模型的建立

描述实际气体pV T , 程, , 不同的T 、p 范围。所以, 对不同的气体应该选用不同的方程才能求得精确的结果。下面对几种常用的实际气体状态方程进行分析、化简。

11范德华方程

p +

V 2m

(V m -b ) =R T

R TV 2V m R 0

3K P +

T 2

V m (V m +b )

(V m -b ) =R T

R —K 方程被认为是目前最好的二参数方程

式, 因它的适用范围广、计算精度高而被广泛使用。R —K 方程用于烃类、N 2、、H 2等非极性气体时精度很高, 即使在高压下误差仍很小, 对N H 3、H 2O (g ) 等极性分子气体误差较大。对这些极性分子气体用马丁—侯(Maltin —侯) 四参数方程误差较小, 精度较高。

R —K 方程也可转化为V m 的三次方程:

3f (V m ) =PV m -

范德华方程建立了实际气体的分子模型, 方程式的推导原理很简单, 容易理解, 适用于中低压范围, 高压下有一定的误差。将上式转化为V m 的三次方程:f (V m ) =pV m 3-(bp +R T ) V m 2-aV m +ab =0

R TV m

2

-

(R Tb +pb 2-

A T

0. 5

) V m -ab T 0. 5=0

从以上三个方程的转化结果可以看出, 求解实际气体的V m , 最终都归结为求解三次方程的根。求解三次方程的根, 一般采用牛顿迭代法。

41牛顿迭代法

21维里方程

pV m

=R T 1+V +2+V m m

牛顿迭代法用于求形如f (x ) =a 0+a 1x +

a 2x +…+a n x 的高次方程的实根。

2

n

维里方程是纯经验方程, B 、C 等分别称为第二、第三、……维里系数, 是气体的特性常数, 在计算中压以下的实际气体时, 一般略去第三维里系数以后的高次项, 维里方程不适用于高压情况。将上式转化为V m 的三次方程:f (V m ) =pV m -收稿日期:2000-08-27

3

具体方法是:先给出根的一个粗略的估计值

x 0, 然后不断地用如下的牛顿迭代公式进行迭代

f (x )

(x i -1) f ′

计算:x i =x i -1-

作者简介:潘宝娟(1964-) , 女, 浙江东阳人, 南京化学工业集团公司电大讲师; 沈海滨(1963-) , 男, 江苏太仓人, 南京化学工业集团

公司电大高级讲师。

第3期             潘宝娟, 沈海滨:编程求解实际气体状态方程・51・

直到|x i -x i -1|

(x ) 是f (x ) 的导数式中f ′

如果迭代不收敛, 则指定一个最大的迭代次数, 例如100, 当实际迭代次数超过该数时, 就作为迭代不收敛处理。

由于牛顿迭代法的计算工作量非常大, 用手工计算费时费力, 且很难达到精度要求, 所以在实际应用中很少用这些方程式求V m 。现在由计算机来完成这一繁重的计算工作可以大大提高计算精度。

 float Rapfson () /3牛顿迭代法解三次方程3/ {int i =0;

float x0,x ,f ,f1; x =v0; do

 {x0=x ;

 f =((a33x0+a2) 3x0+a1) 3x0+a0;  f1=(33a33x0+23a2) 3x0+a1;  x =x0-f/f1;   i =i +1;

}while((fabs (x -x0) >=1. 0e -6) &&(i

 if (i >100) return (0) ;  else return (x ) ;    } main ()

 {……   \3显示简要菜单3\

) ; printf (“\n (1) 用R —K 方程求V m ”) ; printf (“\n (2) 用范德华方程求V m ”) printf (“\n (3) 用维里方程求V \n -:%d”) ;

二、设计过程

11设计说明

下面是用C 语言编制一个程序, 由两个函数组成:主函数main 和牛顿迭代求解函数Rapfson 。

p 范围, 下菜单:

(1) 用范德华方程求V m (2) 用R —K 方程求V m (3) 用维里方程求V m 请选择(1-3) :

根据所选择的气体方程式, 并在主程序中输入相应的物性参数, 及温度和压力, 求出三次方程中各项的系数a 0~a 3的值; 然后调用牛顿迭代求根的子程序, 求出V m 。这样求出的结果比较精确。最后将结果传回到主函数进行输出。整个求解过程只要选择气体状态方程式, 然后输入数据即可。

本例中摩尔体积的初始估计值采用理想气体状态方程式的计算值, 即V 0=R T/p 。由于V 0和高次方程中的各项系数(a 0~a 3) 在程序运行

(即迭代求解) 过程中其值不变, 且这些变量在几

\3) ;  (“\(单位:K ) 和压强(单位:Pa ) :”

 scanf (“%f%f”, &T, &p) ;

 switch (choise )    \3求出三次方程的各系数项3\ {case1:printf(“\n 范德华常数(先a 、后b :) ”,name ) ;

scanf (“%f%f”, &a, &b) ; a0=-a 3b ; a1=a ;

a2=-(p 3b +R 3T ) ; a3=p ; break ;

     case 2: ……     case 3::……} V0=R 3T/p ;  Vm =Rapfson ();

) ;  if (! Vm ) pfintf (“\n 该指定条件下迭代不收敛”

 else printf (“\n %s在该条件下的Vm =%f”,name ,Vm ) ;  }

从程序实际运行结果看, 计算结果与实测值

非常吻合, 计算精度较高。利用计算机并且可以在极短的时间内完成不同物质在不同T 、p 条件下的精确计算。

参考文献:

[1] 天津大学物理化学教研室. 物理化学[M ].北京:高等教育

个函数中都用到, 所以将它们定义为全局变量, 就

不需要通过参数进行数据的传递了。

21程序主要内容

 #define  R  8. 314 #include  “math. h ” float a0,a1,a2,a3,V0;

出版社,19831

[2] 谭浩强. C 程序设计[M ].北京:清华大学出版社,1998. [3] 杨保群等. PASCAL 管理程序库[M ].成都:西南交通大学

出版社,19841

(责任编辑 文 涛)

第12卷 第3期       江苏广播电视大学学报Vol. 12No. 3

       2001年6月JOURNAL OF J IAN GSU RADIO &TEL EVISION UNIV ERSITY J un. 2001

编程求解实际气体状态方程

潘宝娟, 沈海滨

(南京化学工业集团公司电大, 江苏南京210048)

摘 要:将几种常用的实际气体状态方程式转化为三次方程, 采用牛顿迭代法并利用计算机编程进行求解。

关键词:气体状态方程式; 牛顿迭代法; 高次方程

中图分类号:O552.31  文献标识码:B  文章编号:1008-4207(2001) 03-0050-02

一、数学模型的建立

描述实际气体pV T , 程, , 不同的T 、p 范围。所以, 对不同的气体应该选用不同的方程才能求得精确的结果。下面对几种常用的实际气体状态方程进行分析、化简。

11范德华方程

p +

V 2m

(V m -b ) =R T

R TV 2V m R 0

3K P +

T 2

V m (V m +b )

(V m -b ) =R T

R —K 方程被认为是目前最好的二参数方程

式, 因它的适用范围广、计算精度高而被广泛使用。R —K 方程用于烃类、N 2、、H 2等非极性气体时精度很高, 即使在高压下误差仍很小, 对N H 3、H 2O (g ) 等极性分子气体误差较大。对这些极性分子气体用马丁—侯(Maltin —侯) 四参数方程误差较小, 精度较高。

R —K 方程也可转化为V m 的三次方程:

3f (V m ) =PV m -

范德华方程建立了实际气体的分子模型, 方程式的推导原理很简单, 容易理解, 适用于中低压范围, 高压下有一定的误差。将上式转化为V m 的三次方程:f (V m ) =pV m 3-(bp +R T ) V m 2-aV m +ab =0

R TV m

2

-

(R Tb +pb 2-

A T

0. 5

) V m -ab T 0. 5=0

从以上三个方程的转化结果可以看出, 求解实际气体的V m , 最终都归结为求解三次方程的根。求解三次方程的根, 一般采用牛顿迭代法。

41牛顿迭代法

21维里方程

pV m

=R T 1+V +2+V m m

牛顿迭代法用于求形如f (x ) =a 0+a 1x +

a 2x +…+a n x 的高次方程的实根。

2

n

维里方程是纯经验方程, B 、C 等分别称为第二、第三、……维里系数, 是气体的特性常数, 在计算中压以下的实际气体时, 一般略去第三维里系数以后的高次项, 维里方程不适用于高压情况。将上式转化为V m 的三次方程:f (V m ) =pV m -收稿日期:2000-08-27

3

具体方法是:先给出根的一个粗略的估计值

x 0, 然后不断地用如下的牛顿迭代公式进行迭代

f (x )

(x i -1) f ′

计算:x i =x i -1-

作者简介:潘宝娟(1964-) , 女, 浙江东阳人, 南京化学工业集团公司电大讲师; 沈海滨(1963-) , 男, 江苏太仓人, 南京化学工业集团

公司电大高级讲师。

第3期             潘宝娟, 沈海滨:编程求解实际气体状态方程・51・

直到|x i -x i -1|

(x ) 是f (x ) 的导数式中f ′

如果迭代不收敛, 则指定一个最大的迭代次数, 例如100, 当实际迭代次数超过该数时, 就作为迭代不收敛处理。

由于牛顿迭代法的计算工作量非常大, 用手工计算费时费力, 且很难达到精度要求, 所以在实际应用中很少用这些方程式求V m 。现在由计算机来完成这一繁重的计算工作可以大大提高计算精度。

 float Rapfson () /3牛顿迭代法解三次方程3/ {int i =0;

float x0,x ,f ,f1; x =v0; do

 {x0=x ;

 f =((a33x0+a2) 3x0+a1) 3x0+a0;  f1=(33a33x0+23a2) 3x0+a1;  x =x0-f/f1;   i =i +1;

}while((fabs (x -x0) >=1. 0e -6) &&(i

 if (i >100) return (0) ;  else return (x ) ;    } main ()

 {……   \3显示简要菜单3\

) ; printf (“\n (1) 用R —K 方程求V m ”) ; printf (“\n (2) 用范德华方程求V m ”) printf (“\n (3) 用维里方程求V \n -:%d”) ;

二、设计过程

11设计说明

下面是用C 语言编制一个程序, 由两个函数组成:主函数main 和牛顿迭代求解函数Rapfson 。

p 范围, 下菜单:

(1) 用范德华方程求V m (2) 用R —K 方程求V m (3) 用维里方程求V m 请选择(1-3) :

根据所选择的气体方程式, 并在主程序中输入相应的物性参数, 及温度和压力, 求出三次方程中各项的系数a 0~a 3的值; 然后调用牛顿迭代求根的子程序, 求出V m 。这样求出的结果比较精确。最后将结果传回到主函数进行输出。整个求解过程只要选择气体状态方程式, 然后输入数据即可。

本例中摩尔体积的初始估计值采用理想气体状态方程式的计算值, 即V 0=R T/p 。由于V 0和高次方程中的各项系数(a 0~a 3) 在程序运行

(即迭代求解) 过程中其值不变, 且这些变量在几

\3) ;  (“\(单位:K ) 和压强(单位:Pa ) :”

 scanf (“%f%f”, &T, &p) ;

 switch (choise )    \3求出三次方程的各系数项3\ {case1:printf(“\n 范德华常数(先a 、后b :) ”,name ) ;

scanf (“%f%f”, &a, &b) ; a0=-a 3b ; a1=a ;

a2=-(p 3b +R 3T ) ; a3=p ; break ;

     case 2: ……     case 3::……} V0=R 3T/p ;  Vm =Rapfson ();

) ;  if (! Vm ) pfintf (“\n 该指定条件下迭代不收敛”

 else printf (“\n %s在该条件下的Vm =%f”,name ,Vm ) ;  }

从程序实际运行结果看, 计算结果与实测值

非常吻合, 计算精度较高。利用计算机并且可以在极短的时间内完成不同物质在不同T 、p 条件下的精确计算。

参考文献:

[1] 天津大学物理化学教研室. 物理化学[M ].北京:高等教育

个函数中都用到, 所以将它们定义为全局变量, 就

不需要通过参数进行数据的传递了。

21程序主要内容

 #define  R  8. 314 #include  “math. h ” float a0,a1,a2,a3,V0;

出版社,19831

[2] 谭浩强. C 程序设计[M ].北京:清华大学出版社,1998. [3] 杨保群等. PASCAL 管理程序库[M ].成都:西南交通大学

出版社,19841

(责任编辑 文 涛)


相关文章

  • 非线性方程求解
  • 实验六:非线性方程求解 化21 华晓 2012011857 [实验目的] 1. 掌握用Matlab 软件求解非线性方程和方程组的基本方法,并对结果作初步分析. 2. 联系用非线性方程和方程组建立实际问题的模型并进行求解. [实验内容] 题六 ...查看


  • 气体扩散初稿
  • 放射性气体扩散的预测 摘 要 摘要中要把文章中模型的方法.思想.技巧.结论体现出来. 日本福岛核电遭遇日本近海发生9.0级地震并引发了大海啸的破坏,发生了核泄漏,核事故发生后,气载放射性污染物经大气扩散,在短期内对环境产生大范围的影响,日本 ...查看


  • 斐波那契数列
  • 一句话先回答问题:因为斐波那契数列在数学和生活以及自然界中都非常有用. 下面我就尽我所能,讲述一下斐波那契数列. 一.起源和定义 斐波那契数列最早被提出是印度数学家Gopala,他在研究箱子包装物件长度恰好为1和2时的方法数时首先描述了这个 ...查看


  • 清华大学课程学习
  • 电机工程与应用电子技术系 00220012 高档单片机原理及应用 2学分 32学时 The Principles and Application of Advanced Single-Chip Computer 本课程受日本瑞萨科技公司资助 ...查看


  • Matlab在物理学中的应用
  • 目 录 摘 要„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„1 Abstract „„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„1 1 引言„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„ ...查看


  • 用matlab实现线性常系数差分方程的求解
  • 数字信号处理课程设计 题目: 试实现线性常系数差分方程的求解 学院: 专业: 班级: 学号: 组员: 指导教师: 题目:用Matlab 实现线性常系数差分方程求解 一. 设计要求 1. 2. 3. 掌握线性常系数差分方程的求解 熟练掌握Ma ...查看


  • 1-石油工程本科毕业论文word版
  • 有杆泵采油是世界石油工业传统的采油方式之一,也是迄今在采油工程中一直占主导地位的人工举升方式.及时.准确地掌握有杆抽油系统的工作状况,诊断油井所存在的问题,制定合理的技术措施,使油井及时恢复正常生产,提高举升效率和油井产量,对提高油田开发的 ...查看


  • CFD仿真
  • 3.1气体泄漏扩散的模拟方法 目前在研究气体扩散领域应用较多的模拟方法主要有三种,即:物理模拟方法. 数学模拟方法和CFD 数值模拟方法.当然在实际的模拟仿真过程中,经常是两种或是三种方法同时使用,以此来验证模拟的准确性. 3.1.1物理模 ...查看


  • Matlab中常微分方程数值解法
  • Matlab中常微分方程数值解法讲解 作者:dynamic 时间:2008.12.10 版权:All Rights Reserved By www.matlabsky.cn ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ...查看


热门内容