对分发迭代法牛顿法RKSRK方程docx文档格式.docx
《对分发迭代法牛顿法RKSRK方程docx文档格式.docx》由会员分享,可在线阅读,更多相关《对分发迭代法牛顿法RKSRK方程docx文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
t0);
请输入偏心因子:
\nw="
scanfC^f"
&
w);
printfj请输入实际温度:
\ntl="
scanf(“%化&
tl);
printf(“请输入实际压力:
\npl=n);
&
pl);
m=0.480+1.574*w-0.176*w*w;
t2=tl/t0;
at=(l+m*(l-sqrt(t2)))*(l+m*(l-sqrt(t2)));
a=0.42748*R*R*pow(t0,2)/p0*at;
b=0.08664*R*t0/p0;
A=a*pl/(R*R*pow(tl,2));
B=b*pl/(R*tl);
Z1=O.O;
Z2=3.O;
yl=fun(A,B,Zl);
y2=fun(A,B,Z2);
Zl=%.5f
第0次计算结果yl=%.6fy2=%.6f
Z2=%.5f\n"
yl,y2,Zl,Z2);
do
Z0=(Zl+Z2)/2;
y=fun(A,B,Z0);
if(y>
o)
{y2=y;
Z2=Z0;
if(V<
0)
{yl=y;
Zl=ZO;
if(y=o)
{Zl=ZO;
break;
第%・24次计算结果y2%・6fy2=%.6fZl=%.5f
Z2=%.5f\n“jyby2,ZbZ2);
i++;
while((fabs(Zl-Z2))>
0.0001);
printfCXn"
printf(“共经过%d次计算,求得压缩因子为Z=%.5f\n"
-i,Zl);
对分法RK方程1
#definetO126.2
#definepO3394000.0
#definew0.04
fz=pow(乙3)・pow(乙2)+(A・B・B*B)*Z・A*B;
floatpl,tl,Z0,Zl,Z2;
floata,b,A,B,t2,y,yl,y2;
氨的临界压力p0=%.lf\n"
p0);
M的临界温度tO=%.lf\n"
/tO);
氨的偏心因子w=%.2f\n"
w);
请输入实际温度:
\ntl=n);
scanf(n%f"
printfC'
i#输入实际压力:
\npl="
a=0.42748*R*R*pow(t0,2)/p0;
y=fun(A,B,ZO);
第%・201次计算结果y2%.6fy2=%.6fZl=%.5f
printf(哄经过%d次计算,求得压缩因子为Z=%.5f\n"
对分法RK方程2
#include<
#defineR8.324
itdefinew0.04
floatpl,tl,h,Z0,Zl,Z2;
printf(”氨的临界压力p0=%.lf\n"
printf("
ztO);
?
printf(“请输入实际温度:
请输入实际压力:
\npl=H);
if(y=O)
Z2=%.5f\n“jyby2,Z:
bZ2);
i卄;
printf(“共经过%d次计算,求得压缩因子为Z=%.5f\n,,,-i,Zl);
迭代法RK方程
#defineR8314
floatfun(floatA,floatB,floath)
floatZ;
Z=1.0/(l-h)-A/B*(h/(l+h));
returnZ;
floatpO,tO,w,pl,tlhZO;
floata,bABZ
\np0=”);
scanf("
%f”,&
tO);
\ntl=H);
a=0.42748*R*R*pow(t0,2.5)/p0;
A=a*pl/(R*R*pow(tl,2.5));
请输入Z的迭代初值:
\nZ=“);
scanf(“%f”,&
Z);
zo=z;
h=B/ZO;
Z=fun(A,B,h);
第%4次迭代%f%f\n”,i,Z,h);
while((fabs(Z-Z0))>
printf(”\n“);
printf(”共经过%d次迭代,求得压缩因子为w=%f\n”厂i,Z);
迭代法SRK方程
#defineR8.314
floatpO,tO,w,pl,tlhZO;
floatabmABZt2,ft;
\np0=“);
scanf(”%f”,&
\ntl=H);
t2=tl/tO;
ft=(l+m*(l-sqrt(t2)))*(l+m*(l-sqrt(t2)));
a=0.42748*R*R*pow(t0,2)/p0*ft;
A=a*pl/(R*R*pow(tl,2));
B=b*pl/(R*tl);
\nZ=H);
h=B/Z;
第0次迭代%.4f%.5f\n"
Z,h);
do
printf(M^%d次迭代%.4f%.5f\nHJzZ,h);
\n"
printfC1共经过%d次迭代,求得压缩因子为w=%・4f\n:
7Z);
牛顿迭代法RK方程
fz=pow(乙3)・pow(Z,2)+(A-B-B*B)*Z-A*B;
floatfunl(floatA,floatB,floatZ)
floatfzl;
fzl=3*pow(Z,2)-2*Z+(A-B-B*B);
returnfzl;
floatplAl/ZO^l;
floatabABt2“yl,y2;
氨的临界压力pO=%.lf\nH/PO);
printff"
氨的临界温度tO=%.lf\n"
printf(”氨的偏41、因子w=%.2f\n,,,w);
scanf(“%f”,&
请输入牛顿迭代初值:
\nZl="
scanf(“%f”,&
Z1);
b=0.08664*R*t0/p0;
ZO=Z1;
Z1=ZO;
ZO二Zl・fun(ABZl)/funl(ABZl);
printf(”第%d次牛顿迭代ZO=%fZl=%f\n,,,i/ZO,Zl);
i++;
while(fabs(Zl-ZO)>
O.OOOl);
经过第%d次牛顿迭代/Z=%f\n,,/-i,ZO);
牛顿迭代法SRK方程
itdefineR8.314
floatfunl(floatA,floatBzfloatZ)
returnfzl;
floatabn%Abt2,ft“y:
Ly2;
printff'
M的临界压力pO=%.lf\n"
pO);
printff'
M的临界温度tO=%.lf\n,,/tO);
M的偏心因子w=%.2f\n,,/w);
t2=tl/tO;
拿⑴sqrt(t2))r(l+m未⑴sqrt(t2)));
a=0.42748*R*R*pow(tO/2.5)/pO*ft;
A=a*pl/(R*R*pow(tlz2-5));
Zl=Z0;
Z0二Zl・fun(ABZl)/funl(ABZl);
printf(N第%4次牛顿迭代ZO=%fZ*%f\n”jZ0,Zl);
while(fabs(Zl-Z0)>
printf(n经过第%d次牛顿迭代/Z=%f\n,,/-i/ZO);
公式法SRK方程
#defineR8314
#defineI(float)1/3
floatpbtlQUMZhg;
floata,b,m,A,B,t2,at,q,p;
氨的临界压力pO=%.lf\n"
氨的临界温度tO=%.lf\nH,tO);
M的偏心因子w=%.2f\n"
a=0.42748*R*R*pow(t0z2)/p0*at;
A=a*pl/(R*R*pow(tlz2));
p=(3*(A-B-B*B)-l)/3;
q=(9*(A-B-B*B)-2-27*A*B)/27;
D=sqrt(q*q/4+p*p*p/27);
h=D-q/2;
g=-D-q/2;
U=pow(hJ);
V=pow(gJ);
Z=U+V;
printf(H解出Z=%f\n"
/Z);
公式法SR方程
floata,b,m,A,p;
氨的临界温度tO=%.lf\n,,/tO);
printf(”氨的偏41、因子w=%.2f\nHzw);
printff"
printf('
"
a=0.42748*R*R*pow(t0/2.5)/p0;
A=a*pl/(R*R*pow(tl/2.5));
q=(9*(A-B-B*B)-2-27*A*B)/27;
V=pow(g,l);
printfC*解出Z=%f\n,,/Z);
三次方程求根公式
设一元三次方程厂。
在复数集中的根是A-2,X3,那么勺-(-手+((#)2+(铲+(铲,
七=S*升J炸)2+尋+T号馬~+(铲,
-1士向-1-阪
其中曲=一,勺=2°
3ac-2?
2b^-9abc+•27a^d
这里P・PL,孑而