对分发迭代法牛顿法RKSRK方程docx.docx
- 文档编号:4643592
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:14
- 大小:17.11KB
对分发迭代法牛顿法RKSRK方程docx.docx
《对分发迭代法牛顿法RKSRK方程docx.docx》由会员分享,可在线阅读,更多相关《对分发迭代法牛顿法RKSRK方程docx.docx(14页珍藏版)》请在冰豆网上搜索。
对分发迭代法牛顿法RKSRK方程docx
对分法SRK方程
#include
#include
#defineR8.314
floatfun(floatA,floatB,floatZ)
{
floatfz;
fz=pow(Z,3)-pow(乙2)+(A・B・B*B)*Z・A*B;returnfz;
}
main()
{
inti=l;
floatp0,t0,w,pl,tl,h,Z0,Zl,Z2;
floata,b,m,A,B,t2,at,y,yl,y2;
a=b=0.0;
printf("请输入临界参数:
\np0=");
scanf(”%化&p0);
printf("请输入临界参数:
\nt0=");
scanf(”%化&t0);
printf("请输入偏心因子:
\nw=");
scanfC^f",&w);
printfj请输入实际温度:
\ntl=");
scanf(“%化&tl);
printf(“请输入实际压力:
\npl=n);
scanfC^f",&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
printf("第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;}
printf("第%・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
#include
#include
#defineR8.314
#definetO126.2
#definepO3394000.0
#definew0.04
floatfun(floatA,floatB,floatZ)
{
floatfz;
fz=pow(乙3)・pow(乙2)+(A・B・B*B)*Z・A*B;returnfz;
}
main()
{
inti=l;
floatpl,tl,Z0,Zl,Z2;
floata,b,A,B,t2,y,yl,y2;
a=b=0.0;
printf("氨的临界压力p0=%.lf\n",p0);
printf("M的临界温度tO=%.lf\n"/tO);
printf("氨的偏心因子w=%.2f\n",w);
printf("请输入实际温度:
\ntl=n);
scanf(n%f",&tl);
printfC'i#输入实际压力:
\npl=");
scanf(n%f",&pl);
a=0.42748*R*R*pow(t0,2)/p0;
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
printf("第0次计算结果yl=%.6fy2=%.6f
Z2=%.5f\n",yl,y2,Zl,Z2);
do
Z0=(Zl+Z2)/2;
y=fun(A,B,ZO);
if(y>0)
{y2=y;Z2=Z0;}
if(V<0)
{yl=y;Zl=ZO;}
if(y=o)
{Zl=ZO;break;}
printf("第%・201次计算结果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方程2
#include
#defineR8.324
#definetO126.2
#definepO3394000.0
itdefinew0.04
floatfun(floatA,floatB,floatZ)
{
floatfz;
fz=pow(Z,3)-pow(乙2)+(A・B・B*B)*Z・A*B;returnfz;
}
main()
{
inti=l;
floatpl,tl,h,Z0,Zl,Z2;
floata,b,m,A,B,t2,at,y,yl,y2;
a=b=0.0;
printf(”氨的临界压力p0=%.lf\n",p0);printf("M的临界温度tO=%.lf\n"ztO);printf("氨的偏心因子w=%.2f\n"?
w);
printf(“请输入实际温度:
\ntl=");
scanf(n%f",&tl);
printf("请输入实际压力:
\npl=H);
scanf(n%f",&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
printf("第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;}
printf("第%・24次计算结果y2%・6fy2=%.6fZl=%.5f
Z2=%.5f\n“jyby2,Z:
bZ2);
i卄;
}
while((fabs(Zl-Z2))>0.0001);
printfCXn");
printf(“共经过%d次计算,求得压缩因子为Z=%.5f\n,,,-i,Zl);
}
迭代法RK方程
#include
#include
#defineR8314
floatfun(floatA,floatB,floath)
{
floatZ;
Z=1.0/(l-h)-A/B*(h/(l+h));
returnZ;
main()
inti=l;
floatpO,tO,w,pl,tlhZO;
floata,bABZ
a=b=0.0;
printf("请输入临界参数:
\np0=”);scanf("%f”,&p0);
printf("请输入临界参数:
\nt0=");scanf("%f”,&tO);
printf("请输入偏心因子:
\nw=");scanf("%f”,&w);
printf("请输入实际温度:
\ntl=H);scanf("%f”,&tl);
printf("请输入实际压力:
\npl=");scanf("%f”,&pl);
a=0.42748*R*R*pow(t0,2.5)/p0;
b=0.08664*R*t0/p0;
A=a*pl/(R*R*pow(tl,2.5));
B=b*pl/(R*tl);
printf("请输入Z的迭代初值:
\nZ=“);
scanf(“%f”,&Z);
do
{
zo=z;
h=B/ZO;
Z=fun(A,B,h);
printfC'第%4次迭代%f%f\n”,i,Z,h);
i++;
}
while((fabs(Z-Z0))>0.0001);
printf(”\n“);
printf(”共经过%d次迭代,求得压缩因子为w=%f\n”厂i,Z);
迭代法SRK方程
#include
#include
#defineR8.314
floatfun(floatA,floatB,floath)
{
floatZ;
Z=1.0/(l-h)-A/B*(h/(l+h));
returnZ;
}
main()
{
inti=l;
floatpO,tO,w,pl,tlhZO;
floatabmABZt2,ft;
a=b=0.0;
printf("请输入临界参数:
\np0=“);scanf(”%f”,&p0);
printf("请输入临界参数:
\nt0=");scanf(”%f”,&tO);
printf("请输入偏心因子:
\nw=");scanf(”%f”,&w);
printf("请输入实际温度:
\ntl=H);scanf(”%f”,&tl);
printf("请输入实际压力:
\npl=");scanf(”%f”,&pl);
m=0.480+1.574*w-0.176*w*w;
t2=tl/tO;
ft=(l+m*(l-sqrt(t2)))*(l+m*(l-sqrt(t2)));a=0.42748*R*R*pow(t0,2)/p0*ft;
b=0.08664*R*t0/p0;
A=a*pl/(R*R*pow(tl,2));B=b*pl/(R*tl);
printf("请输入Z的迭代初值:
\nZ=H);scanf("%f”,&Z);
h=B/Z;
printf("第0次迭代%.4f%.5f\n",Z,h);do
zo=z;
Z=fun(A,B,h);
h=B/Z;
printf(M^%d次迭代%.4f%.5f\nHJzZ,h);
i++;
}
while((fabs(Z-Z0))>0.0001);
printf("\n");
printfC1共经过%d次迭代,求得压缩因子为w=%・4f\n:
7Z);
}
牛顿迭代法RK方程
#include
#include
#defineR8.314
#definetO126.2
#definepO3394000.0
#definew0.04
floatfun(floatA,floatB,floatZ)
{
floatfz;
fz=pow(乙3)・pow(Z,2)+(A-B-B*B)*Z-A*B;returnfz;
}
floatfunl(floatA,floatB,floatZ)
{
floatfzl;
fzl=3*pow(Z,2)-2*Z+(A-B-B*B);
returnfzl;
}
main()
{
inti=l;
floatplAl/ZO^l;
floatabABt2“yl,y2;
a=b=0.0;
printfC'氨的临界压力pO=%.lf\nH/PO);printff"氨的临界温度tO=%.lf\n"/tO);printf(”氨的偏41、因子w=%.2f\n,,,w);
printfC'请输入实际温度:
\ntl=");scanf(“%f”,&tl);
printf("请输入实际压力:
\npl=");scanf(“%f”,&pl);
printf("请输入牛顿迭代初值:
\nZl=");scanf(“%f”,&Z1);
a=0.42748*R*R*pow(t0,2.5)/p0;b=0.08664*R*t0/p0;
A=a*pl/(R*R*pow(tl,2.5));B=b*pl/(R*tl);
ZO=Z1;
do
{
Z1=ZO;
ZO二Zl・fun(ABZl)/funl(ABZl);
printf(”第%d次牛顿迭代ZO=%fZl=%f\n,,,i/ZO,Zl);i++;
}
while(fabs(Zl-ZO)>O.OOOl);
printfC'经过第%d次牛顿迭代/Z=%f\n,,/-i,ZO);
}
牛顿迭代法SRK方程
#include
#include
itdefineR8.314
#definetO126.2
#definepO3394000.0
#definew0.04
floatfun(floatA,floatB,floatZ)
floatfz;
fz=pow(乙3)・pow(Z,2)+(A-B-B*B)*Z-A*B;returnfz;
}
floatfunl(floatA,floatBzfloatZ)
{
floatfzl;
fzl=3*pow(Z,2)-2*Z+(A-B-B*B);returnfzl;
}
main()
{
inti=l;
floatplAl/ZO^l;
floatabn%Abt2,ft“y:
Ly2;
a=b=0.0;
printff'M的临界压力pO=%.lf\n",pO);printff'M的临界温度tO=%.lf\n,,/tO);printf("M的偏心因子w=%.2f\n,,/w);
printf("请输入实际温度:
\ntl=H);scanf(”%f”,&tl);
printf("请输入实际压力:
\npl=");scanf(”%f”,&pl);
printf("请输入牛顿迭代初值:
\nZl=");scanf(”%f”,&Z1);
m=0.480+1.574*w-0.176*w*w;t2=tl/tO;
拿⑴sqrt(t2))r(l+m未⑴sqrt(t2)));a=0.42748*R*R*pow(tO/2.5)/pO*ft;b=0.08664*R*t0/p0;
A=a*pl/(R*R*pow(tlz2-5));
B=b*pl/(R*tl);
ZO=Z1;
do
{
Zl=Z0;
Z0二Zl・fun(ABZl)/funl(ABZl);
printf(N第%4次牛顿迭代ZO=%fZ*%f\n”jZ0,Zl);
i++;
}
while(fabs(Zl-Z0)>0.0001);
printf(n经过第%d次牛顿迭代/Z=%f\n,,/-i/ZO);
}
公式法SRK方程
#include
#include
#defineR8314
#definetO126.2
#definepO3394000.0
#definew0.04
#defineI(float)1/3
main()
{
inti=l;
floatpbtlQUMZhg;
floata,b,m,A,B,t2,at,q,p;
a=b=0.0;
printf("氨的临界压力pO=%.lf\n",pO);printf("氨的临界温度tO=%.lf\nH,tO);printf("M的偏心因子w=%.2f\n",w);
printf("请输入实际温度:
\ntl=H);scanf(”%f”,&tl);
printf("请输入实际压力:
\npl=");scanf(”%f”,&pl);
m=0.480+1.574*w-0.176*w*w;t2=tl/tO;
at=(l+m*(l-sqrt(t2)))*(l+m*(l-sqrt(t2)));a=0.42748*R*R*pow(t0z2)/p0*at;
b=0.08664*R*t0/p0;
A=a*pl/(R*R*pow(tlz2));B=b*pl/(R*tl);
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方程
#include
#include
#defineR8314
#definetO126.2
#definepO3394000.0
#definew0.04
#defineI(float)1/3
main()
{
inti=l;
floatpbtlQUMZhg;
floata,b,m,A,p;
a=b=0.0;
printf("氨的临界压力pO=%.lf\n",pO);printf("氨的临界温度tO=%.lf\n,,/tO);
printf(”氨的偏41、因子w=%.2f\nHzw);
printff"请输入实际温度:
\ntl=H);scanf(”%f”,&tl);
printf('"请输入实际压力:
\npl=");
scanf(“%化&pl);
a=0.42748*R*R*pow(t0/2.5)/p0;
b=0.08664*R*t0/p0;
A=a*pl/(R*R*pow(tl/2.5));
B=b*pl/(R*tl);
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(g,l);
Z=U+V;
printfC*解出Z=%f\n,,/Z);
}
三次方程求根公式
设一元三次方程厂。
在复数集中的根是A-2,X3,那么勺-(-手+((#)2+(铲+(铲,
七=S*升J炸)2+尋+T号馬~+(铲,
-1士向-1-阪
其中曲=一,勺=2°
3ac-2?
2b^-9abc+•27a^d
这里P・PL,孑而
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 分发 迭代法 牛顿 RKSRK 方程 docx