| 查看: 789 | 回复: 3 | |||
| 当前主题已经存档。 | |||
| 当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖 | |||
[交流]
求助,P-R方程C语言编程求解问题
|
|||
|
#include #include void main() { int k,sign; double f(double V); double v3,v4,q3; double x[50],A,B,C; x[1]=1.0;*设定初值 x[2]=2.0; x[3]=3.0; k=3; while(fabs(x[k]-x[k-1])>0.00001)*Muller法迭代 { v3=(x[k]-x[k-1])/(x[k-1]-x[k-2]); q3=1+v3; A=f(x[k-2])*v3*v3-f(x[k-1])*v3*q3+f(x[k])*v3; B=f(x[k-2])*v3*v3-f(x[k-1])*q3*q3+f(x[k])*(v3+q3); C=f(x[k])*q3; if (B>0) sign=1; else sign=-1; v4=-2*C/(B+sign*sqrt(B*B-4*A*C)); x[k+1]=x[k]+v4*(x[k]-x[k-1]); k++; } printf("Muller迭代方法所求实根X=%lf\n",x[k]); printf("迭代次数:%d\n",k); } double f(double V) { double R=8.314,Tc=190.69,Pc=4604000,w=0.013; *临界温度压力偏心因子 double Q,T,a,b,P,e,d,K,Tr; printf("请输入压力P(千帕)和温度T(开尔文)\n" ;scanf("%lf,%lf",&P,&T); Tr=T/Tc; K=0.37464+1.54226*w-0.26992*w*w; e=0.45724*R*R*Tc*Tc/Pc; d=pow((1+K*(1-sqrt(Tr))),2.0); a=e*d; b=0.0778*R*Tc/Pc; printf("a=%lf",a); Q=R*T/(V-b)-a/(V*(V+b)+b*(V-b))-P; *利用P-R方程构造的迭代格式 return Q; } Peng-Robinson方程可以用来求实际流体的密度等物性参数,现在已知纯甲烷的临界温度和临界压力,偏心因子,用C语言编程计算1MP,108.15K时的密度。编程时出现溢出现象,主要是使用Muller法设定初值的问题,劳烦高手指点迷津,多谢。 |
» 猜你喜欢
参与限项
已经有3人回复
假如你的研究生提出不合理要求
已经有7人回复
实验室接单子
已经有4人回复
全日制(定向)博士
已经有4人回复
对氯苯硼酸纯化
已经有3人回复
求助:我三月中下旬出站,青基依托单位怎么办?
已经有12人回复
不自信的我
已经有12人回复
所感
已经有4人回复
要不要辞职读博?
已经有7人回复
北核录用
已经有3人回复
4楼2010-01-06 22:15:48
波不动
木虫 (正式写手)
Wave No Move
- 应助: 0 (幼儿园)
- 贵宾: 1.204
- 金币: 2138.1
- 红花: 2
- 帖子: 610
- 在线: 33分钟
- 虫号: 871855
- 注册: 2009-10-14
- 性别: GG
- 专业: 应用地球物理学
- 管辖: 程序软件

2楼2009-12-21 00:24:47
bluesine
铁杆木虫 (职业作家)
科苑小木虫
- 数学EPI: 5
- 应助: 132 (高中生)
- 贵宾: 1.991
- 金币: 9587.7
- 散金: 89
- 红花: 19
- 帖子: 3555
- 在线: 371.7小时
- 虫号: 869544
- 注册: 2009-10-12
- 性别: GG
- 专业: 数学物理

3楼2009-12-21 10:14:16












;
回复此楼