RK方程迭代法求V
- 格式:xls
- 大小:13.50 KB
- 文档页数:2
对分法SRK方程#include<stdio.h>#include<math.h># define R 8.314float fun( float A, float B, float Z) {floatfz;fz=pow(Z,3)-pow(Z,2)+(A-B-B*B)*Z-A*B;returnfz;}main(){inti=1;float p0,t0,w,p1,t1,h,Z0,Z1,Z2;float a,b,m,A,B,t2,at,y,y1,y2;a=b=0.0;printf("请输入临界参数:\n p0= ");scanf("%f",&p0);printf("请输入临界参数:\n t0= ");scanf("%f",&t0);printf("请输入偏心因子:\n w= ");scanf("%f",&w);printf("请输入实际温度:\n t1=");scanf("%f",&t1);printf("请输入实际压力:\n p1=");scanf("%f",&p1);m=0.480+1.574*w-0.176*w*w;t2=t1/t0;at=(1+m*(1-sqrt(t2)))*(1+m*(1-sqrt(t2))); a=0.42748*R*R*pow(t0,2)/p0*at;b=0.08664*R*t0/p0;A=a*p1/(R*R*pow(t1,2));B=b*p1/(R*t1);Z1=0.0;Z2=3.0;y1=fun(A,B,Z1);y2=fun(A,B,Z2);printf("第0 次计算结果 y1=%.6f y2=%.6f Z1=%.5f Z2=%.5f\n",y1,y2,Z1,Z2);do{Z0=(Z1+Z2)/2;y=fun(A,B,Z0);if(y>0){y2=y;Z2=Z0;}if(y<0){y1=y;Z1=Z0;}if(y=0){Z1=Z0;break;}printf("第%-2d次计算结果 y1=%.6f y2=%.6f Z1=%.5f Z2=%.5f\n",i,y1,y2,Z1,Z2);i++;}while((fabs(Z1-Z2))>0.0001);printf("\n");printf("共经过%d次计算,求得压缩因子为Z=%.5f \n",--i,Z1);}对分法RK方程1#include<stdio.h>#include<math.h># define R 8.314# define t0 126.2# define p0 3394000.0# define w 0.04float fun( float A, float B, float Z){floatfz;fz=pow(Z,3)-pow(Z,2)+(A-B-B*B)*Z-A*B;returnfz;}main(){inti=1;float p1,t1,Z0,Z1,Z2;float a,b,A,B,t2,y,y1,y2;a=b=0.0;printf("氨的临界压力 p0=%.1f\n",p0); printf("氨的临界温度 t0=%.1f\n",t0); printf("氨的偏心因子 w=%.2f\n",w); printf("请输入实际温度:\n t1="); scanf("%f",&t1);printf("请输入实际压力:\n p1="); scanf("%f",&p1);a=0.42748*R*R*pow(t0,2)/p0;b=0.08664*R*t0/p0;A=a*p1/(R*R*pow(t1,2));B=b*p1/(R*t1);Z1=0.0;Z2=3.0;y1=fun(A,B,Z1);y2=fun(A,B,Z2);printf("第0 次计算结果 y1=%.6f y2=%.6f Z1=%.5f Z2=%.5f\n",y1,y2,Z1,Z2);do{Z0=(Z1+Z2)/2;y=fun(A,B,Z0);if(y>0){y2=y;Z2=Z0;}if(y<0){y1=y;Z1=Z0;}if(y=0){Z1=Z0;break;}printf("第%-2d次计算结果 y1=%.6f y2=%.6f Z1=%.5f Z2=%.5f\n",i,y1,y2,Z1,Z2);i++;}while((fabs(Z1-Z2))>0.0001);printf("\n");printf("共经过%d次计算,求得压缩因子为Z=%.5f \n",--i,Z1);}对分法RK方程2#include<stdio.h>#include<math.h># define R 8.314# define t0 126.2# define p0 3394000.0# define w 0.04float fun( float A, float B, float Z){floatfz;fz=pow(Z,3)-pow(Z,2)+(A-B-B*B)*Z-A*B; returnfz;}main(){inti=1;float p1,t1,h,Z0,Z1,Z2;float a,b,m,A,B,t2,at,y,y1,y2;a=b=0.0;printf("氨的临界压力 p0=%.1f\n",p0); printf("氨的临界温度 t0=%.1f\n",t0); printf("氨的偏心因子 w=%.2f\n",w); printf("请输入实际温度:\n t1="); scanf("%f",&t1);printf("请输入实际压力:\n p1="); scanf("%f",&p1);m=0.480+1.574*w-0.176*w*w;t2=t1/t0;at=(1+m*(1-sqrt(t2)))*(1+m*(1-sqrt(t2)));a=0.42748*R*R*pow(t0,2)/p0*at;b=0.08664*R*t0/p0;A=a*p1/(R*R*pow(t1,2));B=b*p1/(R*t1);Z1=0.0;Z2=3.0;y1=fun(A,B,Z1);y2=fun(A,B,Z2);printf("第0 次计算结果 y1=%.6f y2=%.6f Z1=%.5f Z2=%.5f\n",y1,y2,Z1,Z2);do{Z0=(Z1+Z2)/2;y=fun(A,B,Z0);if(y>0){y2=y;Z2=Z0;}if(y<0){y1=y;Z1=Z0;}if(y=0){Z1=Z0;break;}printf("第%-2d次计算结果 y1=%.6f y2=%.6f Z1=%.5f Z2=%.5f\n",i,y1,y2,Z1,Z2);i++;}while((fabs(Z1-Z2))>0.0001);printf("\n");printf("共经过%d次计算,求得压缩因子为Z=%.5f \n",--i,Z1);}迭代法RK方程#include<stdio.h>#include<math.h># define R 8.314float fun( float A, float B, float h){float Z;Z=1.0/(1-h)-A/B*(h/(1+h));return Z;}main(){inti=1;float p0,t0,w,p1,t1,h,Z0;floata,b,A,B,Z;a=b=0.0;printf("请输入临界参数:\n p0= "); scanf("%f",&p0);printf("请输入临界参数:\n t0= "); scanf("%f",&t0);printf("请输入偏心因子:\n w= "); scanf("%f",&w);printf("请输入实际温度:\n t1=");scanf("%f",&t1);printf("请输入实际压力:\n p1=");scanf("%f",&p1);a=0.42748*R*R*pow(t0,2.5)/p0;b=0.08664*R*t0/p0;A=a*p1/(R*R*pow(t1,2.5));B=b*p1/(R*t1);printf("请输入Z的迭代初值:\n Z="); scanf("%f",&Z);do{Z0=Z;h=B/Z0;Z=fun(A,B,h);printf("第%d次迭代 %f %f\n",i,Z,h); i++;}while((fabs(Z-Z0))>0.0001);printf("\n");printf("共经过%d次迭代,求得压缩因子为w=%f \n",--i,Z);}迭代法SRK方程#include<stdio.h>#include<math.h># define R 8.314float fun( float A, float B, float h){float Z;Z=1.0/(1-h)-A/B*(h/(1+h));return Z;}main(){inti=1;float p0,t0,w,p1,t1,h,Z0;float a,b,m,A,B,Z,t2,ft;a=b=0.0;printf("请输入临界参数:\n p0= ");scanf("%f",&p0);printf("请输入临界参数:\n t0= ");scanf("%f",&t0);printf("请输入偏心因子:\n w= ");scanf("%f",&w);printf("请输入实际温度:\n t1=");scanf("%f",&t1);printf("请输入实际压力:\n p1=");scanf("%f",&p1);m=0.480+1.574*w-0.176*w*w;t2=t1/t0;ft=(1+m*(1-sqrt(t2)))*(1+m*(1-sqrt(t2)));a=0.42748*R*R*pow(t0,2)/p0*ft;b=0.08664*R*t0/p0;A=a*p1/(R*R*pow(t1,2));B=b*p1/(R*t1);printf("请输入Z的迭代初值:\n Z=");scanf("%f",&Z);h=B/Z;printf("第0次迭代 %.4f %.5f\n",Z,h); do{Z0=Z;Z=fun(A,B,h);h=B/Z;printf("第%d次迭代 %.4f %.5f\n",i,Z,h); i++;}while((fabs(Z-Z0))>0.0001);printf("\n");printf("共经过%d次迭代,求得压缩因子为w=%.4f \n",--i,Z);}牛顿迭代法RK方程#include<stdio.h>#include<math.h># define R 8.314# define t0 126.2# define p0 3394000.0# define w 0.04float fun( float A, float B, float Z){floatfz;fz=pow(Z,3)-pow(Z,2)+(A-B-B*B)*Z-A*B;returnfz;}float fun1( float A, float B, float Z){float fz1;fz1=3*pow(Z,2)-2*Z+(A-B-B*B);return fz1;}main(){inti=1;float p1,t1,Z0,Z1;float a,b,A,B,t2,y,y1,y2;a=b=0.0;printf("氨的临界压力 p0=%.1f\n",p0); printf("氨的临界温度 t0=%.1f\n",t0); printf("氨的偏心因子 w=%.2f\n",w); printf("请输入实际温度:\n t1="); scanf("%f",&t1);printf("请输入实际压力:\n p1=");scanf("%f",&p1);printf("请输入牛顿迭代初值:\n Z1=");scanf("%f",&Z1);a=0.42748*R*R*pow(t0,2.5)/p0;b=0.08664*R*t0/p0;A=a*p1/(R*R*pow(t1,2.5));B=b*p1/(R*t1);Z0=Z1;do{Z1=Z0;Z0=Z1-fun(A,B,Z1)/fun1(A,B,Z1);printf("第%d次牛顿迭代 Z0=%f Z1=%f\n",i,Z0,Z1); i++;}while(fabs(Z1-Z0)>0.0001);printf("经过第%d次牛顿迭代,Z=%f\n",--i,Z0);}牛顿迭代法SRK方程#include<stdio.h>#include<math.h># define R 8.314# define t0 126.2# define p0 3394000.0# define w 0.04float fun( float A, float B, float Z){floatfz;fz=pow(Z,3)-pow(Z,2)+(A-B-B*B)*Z-A*B;returnfz;}float fun1( float A, float B, float Z) {float fz1;fz1=3*pow(Z,2)-2*Z+(A-B-B*B);return fz1;}main(){inti=1;float p1,t1,Z0,Z1;float a,b,m,A,B,t2,ft,y,y1,y2;a=b=0.0;printf("氨的临界压力 p0=%.1f\n",p0); printf("氨的临界温度 t0=%.1f\n",t0); printf("氨的偏心因子 w=%.2f\n",w); printf("请输入实际温度:\n t1="); scanf("%f",&t1);printf("请输入实际压力:\n p1="); scanf("%f",&p1);printf("请输入牛顿迭代初值:\n Z1=");scanf("%f",&Z1);m=0.480+1.574*w-0.176*w*w;t2=t1/t0;ft=(1+m*(1-sqrt(t2)))*(1+m*(1-sqrt(t2)));a=0.42748*R*R*pow(t0,2.5)/p0*ft;b=0.08664*R*t0/p0;A=a*p1/(R*R*pow(t1,2.5));B=b*p1/(R*t1);Z0=Z1;do{Z1=Z0;Z0=Z1-fun(A,B,Z1)/fun1(A,B,Z1);printf("第%d次牛顿迭代 Z0=%f Z1=%f\n",i,Z0,Z1); i++;}while(fabs(Z1-Z0)>0.0001);printf("经过第%d次牛顿迭代,Z=%f\n",--i,Z0); }公式法SRK方程#include<stdio.h>#include<math.h># define R 8.314# define t0 126.2# define p0 3394000.0# define w 0.04# define l (float)1/3main(){inti=1;float p1,t1,D,U,V,Z,h,g;float a,b,m,A,B,t2,at,q,p;a=b=0.0;printf("氨的临界压力 p0=%.1f\n",p0);printf("氨的临界温度 t0=%.1f\n",t0); printf("氨的偏心因子 w=%.2f\n",w); printf("请输入实际温度:\n t1=");scanf("%f",&t1);printf("请输入实际压力:\n p1=");scanf("%f",&p1);m=0.480+1.574*w-0.176*w*w;t2=t1/t0;at=(1+m*(1-sqrt(t2)))*(1+m*(1-sqrt(t2))); a=0.42748*R*R*pow(t0,2)/p0*at;b=0.08664*R*t0/p0;A=a*p1/(R*R*pow(t1,2));B=b*p1/(R*t1);p=(3*(A-B-B*B)-1)/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(h,l);V=pow(g,l);Z=U+V;printf("解出 Z=%f\n",Z); }公式法SR方程#include<stdio.h>#include<math.h># define R 8.314# define t0 126.2# define p0 3394000.0# define w 0.04# define l (float)1/3 main(){inti=1;float p1,t1,D,U,V,Z,h,g;float a,b,m,A,B,t2,at,q,p;a=b=0.0;printf("氨的临界压力 p0=%.1f\n",p0); printf("氨的临界温度 t0=%.1f\n",t0); printf("氨的偏心因子 w=%.2f\n",w); printf("请输入实际温度:\n t1="); scanf("%f",&t1);printf("请输入实际压力:\n p1="); scanf("%f",&p1);a=0.42748*R*R*pow(t0,2.5)/p0;b=0.08664*R*t0/p0;A=a*p1/(R*R*pow(t1,2.5));B=b*p1/(R*t1);p=(3*(A-B-B*B)-1)/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(h,l);V=pow(g,l);Z=U+V;printf("解出 Z=%f\n",Z); }。
第二章 迭代法的一般原理非线性方程组无论从理论上还是计算方法上,都比线性方程组复杂得多。
一般的非线性方程组很难求出解析解,往往只能求出其数值解,且往往只能借助于迭代法。
本章我们将讨论迭代法的一般原理、迭代法的一般构造及迭代收敛速度的衡量标准。
2-1 迭代法与不动点定理设n n R R D →⊂:f ,考虑方程()0=x f (2-1)若存在D *∈x ,使()0=*x f ,则称*x 为方程(2-1) 的解。
用迭代法求解(2-1) ,先将(2-1)化为等价的方程()x g x = (2-2)这里映象n n R R D →⊂:g 。
方程(2-2)的解*x (即()**x g x =)称为映象g 的不动点。
因此用迭代法解方程(2-1),就是求(2-2)中映象g 的不动点。
这样以及g 是否存在不动点自然就是我们关心的问题。
定理2-1 若n n R R D →⊂:g 为有界闭集D D ⊂0上的严格非膨胀映象,()00D D ⊂g ,则g 在0D 内有唯一不动点。
证 唯一性 设g 在0D 内至少有两个不动点1x ,2x ,则()()2121x x x g x g x x 21-≤-=-α 因1<α,所以由上式推得21x x =。
唯一性得证。
记()()x g x x -=ϕ,由g 及泛数的连续性可知1:R R D n →⊂ϕ连续。
因0D 为有界闭集,故ϕ在0D 上有最小值。
设0D *∈x 为最小点,即()()x g x x -=∈min 0D x *ϕ则*x 为g 的不动点。
因为若不然,则有()**x g x ≠,再由g 严格非膨胀,可得()()()()()***x g g x g x g -=ϕ()()***x x g x ϕ=-<这与*x 为ϕ的最小点相矛盾,故*x 为g 的不动点。
注 定理中0D 的有界闭性、g 的压缩性和g 映0D 入自身,此3个条件缺一不可。
例如,()xx x g 1+=在[)+∞=,D 10上严格非膨胀,但它在0D 中却没有不动点。
线形方程组的迭代解法——雅克比(Jacobi )迭代法 概述: 线性方程组的迭代解法就是根据所给的方程组AX=b ,设计出一个迭代公式,然后将任意选取的初始向量带入迭代公式,求出,再将 同一代入迭代公式,求出 ,如此反复进行,得到向量序列。
当 收敛时,其极限即为原方程组的解。
1. 原理线形方程组:矩阵形式:如果矩阵A 的对角线元素都不为零,即A ii ≠0, 则可把方程变为:雅可比迭代法:1. 给定的一组x 初始值; 2. 由以下公式用 求; 3.如果满足中止条件(认为足够逼近与某组值,可以将其取为极限,与前一次求得的结果差值小于事先设定好的允许误差值m )则停止,否则k=k+1,重复2.即: (0)X (1)X (1)X (2)X (){}k X (){}k X 11112211211222221122.........n n n n n n nn n nA x A x A xB A x A x A x B A x A x A x B +++=⎧⎪+++=⎪⎨⎪⎪+++=⎩Ax =B ()()()11221331111221123322221122,111...1...1...n n n n n n n n n n n nn x A x A x A x B A x A x A x A x B A x A x A x A x B A --⎧=----+⎪⎪⎪=----+⎪⎨⎪⎪⎪=----+⎪⎩00012[,,...,]n x x x 12[,,...,]k k k n x x x 11112[,,...,]k k k n x x x +++()()()11122133111112211233222211122,111...1...1...k k k k n n k k k k n n k k k k n n n n n n n nn x A x A x A x B A x A x A x A x B A x A x A x A x B A +++--⎧=----+⎪⎪⎪=----+⎪⎨⎪⎪⎪=----+⎪⎩把此公式写为矩阵形式:令:则有:故雅可比迭代公式的矩阵形式为:令:迭代公式:MATLAB 程序:function [x,k] = jacobi(A,B)% Jacobi 迭代法解方程组Ax=Bv = diag(A);if all(v) 注:D = diag(v); all( ), 全不为零则返回1,否则返回0. Di = diag(1./v); >> all([1 2 3]) M = -Di*(A-D); ans =1d = Di*B; >> all([1 0 3]) x1 = v; ans =0x2 = x1+1;k = 0;while max(abs(x2-x1))>0.0001if k > 300disp('可能不收敛')break;endx1 = x2;x2 = M*x1+d;k = k+1;endelseerror('A 对角线有零元素');end211200000n n A A A ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦L 121200000n n A A A ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦U 1122000000nn A A A ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦D A =L +U +D[]⇒=⇒Ax =B L +U +D x B Dx =-[L +U]x +B⇒-1-1x =-D (L +U)x +D B1k k +-1-1x =-D (L +U)x +D B -1M =-D (L +U)-1d =D B 1k k +x =Mx +d。
常微分方程初值问题RK法和多步法科J教文}化●常微分方程初值问题科法和多步法李忠杰(山东商务职业学院,山东烟台264670)摘要:常微分方程的差分方法分为单步法和多步法,RK方法是最常用的单步法,而Adams方法是常用的多步法之一,本文探讨了求解常微分方程初值问题单步法和多步法,从运算量,计算精度两个方面分析和比较了同阶RK法和多步法.关键词:RK法;多步法;运算量;精度1概述求解常微分方程初值问题的方法分为单步法和多步法,单步法主要有欧拉法和Runge—Kutta法,多步法主要有Adams法和Milne法,本文仅以最常用的Runge—Kutta法和Adams法分别作为单步法和多步法的例子,对两种方法进行分析比较.2方法介绍2.1RK法Euler法是最简单的一种求解常微分方程初值问题的数值方法,但其局部截断误差仅为O(h),是一阶方法,为了达到更高的精度,我们构造了RK法.通过构造高阶单步法来提高精度,而较高的精度意味着计算结果更加精确,误差随着的减小迅速减小,考虑常微分方程:Y=f(x,),y(0)=Y o,(2lj利用Taylor级数法构造(,y,h),使)'()=y()+,y(),^)+)中的局部截断误差尽可能高,最常用的就是四级四阶RK 法,其局部截断误差为O(h).单步法的一般形式是HY+hg(,,h)(n=0,1,2,?一,N一1)(2.2)这是因为单步法在计算时都只用到前一步的值,为了提高精度,需要重瓤计算多个点处的函数值(例如RK法),计算量较大.多步法的基本思想是如何通过较多地利用前面的已知信息(如Y,y一,Y…)来构造高精度的算法计算Y.四级四阶RK的常用基本格式有…y+【=Th(clKl十c2K2十f,+c4K4)K=f(x,Y)Ke=,(+ash,Y+b2】hKI)(2.3)1,23一f(x+a3h,y+b31hK14-2hK2)K4=fIx+d4h,+shKt+2hKz十3hX31通过取定不同的1和a会得到y+1=y+;(K1+2K2+2K3+K4)Kf(xK2,t十K,(j+K4,t+和hK.t)(2.4)hKhK)=++√2+(2一+1l=f(,):::曼hk"1+(1一./2x,~--1c:厂(+,,+——一—))k:,y一7-+mI以及=yH+h(O17476028KE0.55148053K2+017118478K:J=,(,)04矗O觚),2.6,=,+0.455737254hv.+0.29697~60^O15卵5966艋j=+by.to.2181oo38h~3.0509646470tK2十383286432hff3) 其中,式(24)是最为常用的经典四级四阶RK格式,式(25)称为Gill格式22多步法常用的多步法主要有Adams法和Milne法,本文仅以Adams法为例介绍多步法,其中Adams法又包括显式Adams法和隐式Adams法.显式Adams法:Adams~Bashforth公式:y=+△=_其中.出_卜1):ds,m:,公式(2_7)又称为Adams外插公为方便汁算,改用函数值表示后差:霉.c从而(2.7)式可以写成=)'+^∑(28)其中i=o&_(_km,j=0,l,2,…,足.困(27)或(2.8)是显式公式,所以又称它们为显式Adams公式,易见显式Adams公式(2.7)或(2.8]是线性(+1)步公式.常刚的四阶盟式Adams公式为日+=+(55一59一十37A一一9.)(29)22.2隐式Adams法+△+(2.10)其中,,_(-_Im=0,.',.称(210)为Adams—Mouhon公式.NNN~-顿向后插值多项基点为,…,,而积分区问为f,+』,故上式又称为Adams内插公式,该式为隐式公式,故又称为隐式Adams公式. 闪V=喜c-¨1,故(2.1O)式可改写成+一+∑(2川)~.-ee,一五kmJ_U,1,2,…,常用的四阶隐式Adams公式=+(+1+)(2-12)这是一个关于+的隐式方程,在计算中,需要将式(2.12)写成显式格式,但一些方程难以求出其砬式格式,这就需要将四阶最式Adams法和四阶隐式Adams法结合起来,用显式公式(2.9)作为预测,然后用隐式公式(2.I2)作校正,构造Adams 预测一校正公武fb(55L-59,r甲3z,广2)l+=+(9+(州+)+19L5一+吨)式(2l3)为四阶公式,式中的初始值除yo已给定,y,y,y常用四阶RK法计算.3运算量及精度比较3.1运算量比较叫级RK法每前进一步需要计算四个函数值,对N级RK法,每计算一步,函数f需要计算N 次.闪此,对给定的N,我们总是希构造阶数最高的方法,记P(Ⅳ,是N级RK法所能达到的最高的阶数,已经得到下面的结:fN,当Ⅳ=l,2,3,4H,jP(Ⅳ)={N1,当=5,6,7时lN-2,当.v=8,州由此可见,当N25时,pON)<N,从而四级四阶RK法是较受欢迎的方法.对于显式Adams法, 已知Yn~3,一:,yn和Y,把它们代入到式(2_9)右端,就可以直接得到+,因而是一个四级四阶的方法,应用公式时需要提供主yo,y.,Y:和v=;4/b-N 始值,通常也是由经典RK公式提供.同样,对于四阶隐式Adams法.式(2.12)是一个三级四阶的,应用该公式需要提供3个初始值y0,Y和y2,通常由经典RK公式提供.32精度比较3.2.1RK法精度对四阶RK法,川测试方程分析其精度.Y=f(x,y)=0y(1)假设Y是已知的,y.的精确值为:(")=8(32)Tavh>r展开得:m)一刍寺{㈤+ll,●3jJ另一方面,将式(3.2){Jd.fi.(3.1)得:)f+ah+2~h)+寺^)+未(.){(34)比较上式与(3.3),表明四阶RK法精度的阶为4,一步迭代的误差与h成比例,即局部截断误差为O(h).3.2.2多步法精度式Adams法的局部截断误差是=l1出(=(一j"J1"(贝0,=+fo'(-1/+~--T—l}+()=^a}+1Y(∈)xn一<∈<(下转309页)一199—工I程I科I技浅谈地下室的防水赵春明郝力(哈尔滨大都会房地产开发有限公司,黑龙江哈尔滨150000)摘要:地下防水工程是地下工程建设中的一个重要组成部分,针对地下室的防水措施进行了论述.关键词:地下室;防水;措施地下防水工程是地下工程建设中的一个重要组成部分,地下室防水采用混凝土结构自防水与外墙全粘贴SBS高聚物改性沥青卷材防水相结合的施工技术,这里介绍防水混凝土,卷材防水及穿墙管道,施工缝的施工.工程是江北某高层地下室的防水,防水计划采用刚性防水和柔性防水相结合的防水体系.底板和外墙采用混凝土结构自防水与SBS高聚物改性沥青卷材防水相结合,混凝土抗渗品级为S6,柔性防水为4mm厚SBS高聚物改性沥青防水卷材.穿墙的管件防水采用满焊止水环及钢板封口,施工缝处的防水采用钢板板止水带和橡胶止水条.地下室防水混凝土施工,混凝土使用商品混凝土抗渗品级计划为s6,外加剂采用硅质密实剂防水剂,地下室底板混凝土属于大体积大面积施工,混凝土浇筑时应采用"分区定点,一个坡度,循序推进,一次到底"的浇筑工艺.浇筑时先在一个部位进行,直至达到设计标高,混凝土形成扇形向前流动,然后在其坡面上连续浇筑,循序推进.该要领能较好顺应泵送工艺, 制止通常拆卸运送混凝土管道,前进泵送屈从, 简化混凝土的泌水处理,并保证了上下层混凝土不超过初凝时间.墙体混凝土,浇筑时要严酷控制分层厚度,每次浇筑厚度应控在0.5m左右,每次浇筑墙体长度不大于30m,浇筑时应保证一连性.混凝土坍落度的控制,本工程采用商品混凝土,要严格控制混凝土的和易性,采用低坍落度混凝土,混凝土坍落度现场实测值控制在(120±20)ram;当混凝土运到现场后出现离析, 必须退还搅拌站进行二次搅拌,混凝土浇筑时要保证合理的分段分层施工,分层厚度为0.3m,分层的接头时间间隔不超过2h,施工中交接的临时结合的竖向缝,要互相错开.混凝土振捣:根据泵送浇筑时自然形成一个坡度,防水混凝土施工必须采用高频机械振捣,严格控制振捣的间距和时间.每一振点的振捣时间,应将混凝土捣实至表面呈现浮浆,不冒气泡和不再沉落为准,振捣时间为20~30s,避免漏振,少振和超振.混凝土的表面处理;大体积泵送混凝土,排除泌水和浮浆后,表面仍有较厚的水泥浆,在浇完4~5h后,要用长括尺括平,在初凝前用滚筒来回碾压数遍,待接近终凝前,用木抹子再打磨一遍,使收水裂缝闭合.混凝土养护; 大体积混凝土的内外温差大,必须做好养护工作.本工程采用浇水养护并覆盖塑料薄膜,防止混凝土水分蒸发和表面脱水而产生干缩裂缝, 养护时间不少于14d.SBS高聚物改性沥青防水卷材,地下室卷材防水层的施工要领基础上有两种:外防外贴法和外防内贴法.本工程接纳外防外贴法,即待墙体围护结构施工完成后,将立面卷材防水层直接铺贴在围护结构的外表面,最后采取保护措施的方法.施工前要将下层整理清洁,涂刷下层处理剂时,下层应平整牢固,清洁干燥,下层处理剂应与卷材的材性相容,涂刷时要匀称同等.下层处理干燥后,先按计划要求对有特别部位做防水附加层,如阴阳角处应做成圆弧或钝角,并贴上1层SBS卷材做附加层,宽度不小于500mm,卷材铺贴采用全粘贴热熔法施工, 铺贴卷材时应先铺贴平面,后铺贴立面,交接处应交织搭接,从平面折向立面时,应暂时贴附在该墙上或模板上.围护结构完成后,铺贴立面墙体卷材之前,应先将暂时性掩护墙区段内各层卷材的接搓揭开,并将其外貌整理清洁.如卷材有局部破坏,应进行修补后方可继续施工.铺贴卷材时必须满粘法施工.卷材防水层经检查及格后,应实时做好掩护层.底板卷材防水层的细石混凝土保厚度不应小于50ram,侧墙卷材防水层接纳2O厚l:3 的水泥砂浆掩护层.SBS高聚物改性沥青防水卷材应具有良好的耐水性,历久性,耐刺穿性和耐腐性.防水层的厚度不应小于3mm,单层使用时,厚度不应小于4mm;双层使用时,总厚度不小于6mm,地下室底板卷材长边搭接宽度不小于100mm,短边搭接宽度不小于150ram;同一层相邻两幅卷材铺贴时,短边搭接处应错开150mm以上.上下两层卷材禁垂直铺贴,且搭接缝宽应错开1/3 幅宽以上;地下室侧墙铺贴双层卷材接长时,应采用交叉法接缝,上层卷材接缝位置盖过下层150ram;在立面与平面的转角处,卷材的接缝应留在平面上,距立面不应小于600mm.穿墙管道,当结构变形或管道伸缩量较小时,穿墙管道可接纳直接埋人混凝土内的牢固式防水法,主管应满焊止水环.当结构变形或管科道伸缩量较大或有调换要求时,应采用套管式防水法,套管与止水环应满焊.当穿墙管线较多且密时,宜相对会集,接纳穿墙盒法,盒的封口钢板与墙上的预埋角钢焊严,并从钢板上的浇筑孔注人密封质料.各种穿墙管道,预埋件等位置要留置正确,穿墙管道和预埋件应在浇筑混凝土前预埋.穿墙管道与内墙角,凹凸部位的距离不小于250ram.金属止水环应与主管满焊密实,采用套管式穿墙管防水结构时,翼环与套管应满焊密实,并在施工前将套管内外表面清理干净.施工缝,底板与外墙的水平施工缝,应在缝处设置一圈宽200mm的钢板止水带.外墙间的垂直施工缝,可在缝处设置一竖直同墙高的宽200mm钢板止水带.防水混凝土施工应保证连续浇筑,尽量少留施工缝.当必须留置时,墙体水平施工缝不应留在剪力与弯矩最大处或底板与侧墙的交接处,应留在高出底板表面不小于300mm高的墙体上;当墙体有预留孔洞时,施工缝距孔洞边缘不小于300mm.水平施工缝浇筑混凝土时,应将其表面的浮浆和杂物扫除,先铺净浆,再铺30—50mm厚的l:1水泥砂浆或涂刷混凝土界面处理剂,并及时浇筑混凝土.垂直施工缝浇筑混凝土时,应将其表面清理干净,涂刷混凝土界面处理剂,并实时浇筑混凝土.施工缝采用遇水膨胀橡胶腻子止水条时,要将止水条牢固地安放在缝表面预留槽内.地下室防水工程在施工缝,穿墙构件等易渗点部位的施工质量,是关系到地下室防水质量的关键,必须制定周密的施工方案和采取切实有效的施工措施.特殊部位重点设防,施工时着力控制好每一环节,精心组织施工,在施工中进一步去完善就能达到预期要求,确保防水施工(上接199页)故,显式Adams法的局部截澎差的阶为矿).式(29)的局莉描毫塞为●C1RH=考+D(),利用牛顿后插值多项式的余项表达式,可得隐式Adams公式的局部截断误差的阶为D(^),因ll~(Zl2)的局部截断误差的阶为O(h),对照显式公式的局部截断误差阶为D(矿),可见同样步隐式公式较之显式公式更为精确,其局部截断误差阶高一阶.四阶四阶RK法的局部截断误差为O(h),而四级四阶显式Adams法的局部截断误差也为为01,这同三级四阶隐式Adams法的精度是一样的.由此可见,相同精度条件下,隐式Adams法的步数更少—些.参考文献【l】任玉杰.数值分析及其MA TLAB实现{北京: 高等教育出版社'2Oo73.闭戴嘉尊,邱建贤.微分方程数值解法南京:东南大学出版社20o22【3】袁慰平等计算方法与实习南京:东南大学出版毒±00o5'7.【4】李瑞遗何志庆等缀分方程数值方法呻上海: 华东理工大学~&2oo5.一309—。
基础算法迭代法原理的应用1. 什么是迭代法迭代法是一种解决问题的基础算法,它通过不断迭代逼近解的过程来求解问题。
迭代法的原理是基于一个重要的数学定理——不动点定理。
不动点定理指出,如果一个函数存在至少一个不动点(即x = f(x)),那么通过不断迭代f(x),可以逐渐接近这个不动点。
2. 迭代法的基本步骤迭代法的基本步骤如下:1.首先,选择一个起始点x0作为迭代的初始值。
2.然后,根据问题的要求和具体情况,选择一个迭代函数f(x)。
3.接着,通过不断迭代计算,更新x的值,直到达到停止条件为止。
4.最后,得到近似解x*。
3. 迭代法的应用举例迭代法可以应用于各种数学问题和工程应用中,下面我们介绍几个常见的应用。
3.1 方程求根迭代法可以用来求解方程的根。
对于一个函数f(x) = 0,我们可以通过迭代法找到它的近似解。
具体步骤如下:1.选择一个起始点x0。
2.定义迭代函数f(x),根据具体问题的要求进行定义。
3.迭代计算,更新x的值,直到达到停止条件(如精度要求)。
4.得到近似解x*。
3.2 矩阵求逆迭代法还可以用于矩阵求逆的问题。
给定一个n阶矩阵A,我们可以通过迭代法求得它的逆矩阵A-1。
1.选择一个起始矩阵B0。
2.定义迭代函数f(B),根据具体问题的要求进行定义。
3.迭代计算,更新B的值,直到达到停止条件(如精度要求)。
4.得到近似解B*,即为矩阵A的逆矩阵A-1。
3.3 最优化问题迭代法在最优化问题中也有广泛的应用。
最优化问题可以描述为找到一个函数的最值(最大值或最小值)。
通过迭代法,我们可以逐步逼近最值点。
1.选择一个起始点x0。
2.定义迭代函数f(x),根据具体问题的要求进行定义。
3.迭代计算,更新x的值,直到达到停止条件(如精度要求)。
4.得到最优解x*。
4. 迭代法的优缺点迭代法作为一种基础算法,具有以下优点:•简单易实现:迭代法的思想简单,实现起来相对容易。
•广泛适用:迭代法可以应用于各种数学问题和工程应用。