第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
(责任编辑 文 涛)