《数值计算方法》实验 (6)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

电子科技大学《数值计算方法》

s1+=(*f)(temp1);/*公式(22)*/

s2+=(*f)(temp2);/*公式(22)*/ }

s=h/6.f*((*f)(a)+4*s1+2*s2+(*f)(b));/*复化辛卜生公式*/

printf("S(%d)=%11.10f\n",n,s);

fprintf(fp,"S(%d)=%11.10f\n",n,s);

deta=s-s0; /*前后两值的间距*/

if(fabs(deta)>eps)/*判断前后所求值的间距是否已满足精度*/

{ n++;/*区间等分数加1*/

s1=0;

s2=0;

s0=s; }

else

break;

}

○3数据处理与分析

当a=0,b=1,eps=1e-6;时

S(1)=0.7833333333,S(2)=0.7853921569

S(3)=0.7853979452,S(4)=0.7853981256

从计算结果看n=4时满足精度要求,即n=4时达到6为有效数字。

当a=0,b=1,eps=5e-10时

S(1)=0.7833333333,S(2)=0.7853921569,S(3)=0.7853979452

S(4)=0.7853981256,S(5)=0.7853981535,S(6)=0.7853981601

S(7)=0.7853981621,S(8)=0.7853981628,S(9)=0.7853981631

从计算结果看n=9时满足精度要求。在n=7时有9位有效数字,而同时可知n=4时也已达到7位有效数字。MATLAB绘图

temp2=a+h/2.;

c2=(*f)(temp2);/*公式(25)在k=0下的值*/

temp3=a+3*h/4.;

c3=(*f)(temp3);/*公式(26)在k=0下的值*/

for(k=1;k!=n;k++)

temp1=a+k*h+h/4.;

{

temp2=a+k*h+h/2;

temp3=a+k*h+3*h/4;

temp4=a+k*h;

c1+=(*f)(temp1);/*公式(24)*/

c2+=(*f)(temp2);/*公式(25)*/

c3+=(*f)(temp3);/*公式(26)*/

c4+=(*f)(temp4);/*公式(27)*/ }

c=h/90.f*(7*(*f)(a)+32*c1+12*c2+32*c3+14*c4+7*(*f)(b));/*复化复化柯特斯公式*/ printf("C(%d)=%11.10f\n",n,c);

fprintf(fp,"C(%d)=%11.10f\n",n,c);

deta=c-c0;/*前后两值的间距*/

if(fabs(deta)>eps)/*判断前后所求值的间距是否已满足精度*/

{ n++;/*区间等分数加1*/

c1=0;

c2=0;

c3=0;

c4=0;

c0=c; }

else

break;

}

○3数据处理与分析

当a=0,b=1,eps=1e-6;时

t1=t2;

h/=2.0;/*把区间n等分,每个区间的长度*/

}

else

break;

}

○3数据处理与分析

当a=0,b=1,eps=1e-6;时

T(2)=0.7750000000,T(4)=0.7827941176,T(8)=0.7847471236

T(16)=0.7852354030,T(32)=0.7853574733,T(64)=0.7853879909

T(128)=0.7853956203,T(256)=0.7853975276,T(512)=0.7853980045

从计算结果看n=512时满足精度要求,即n=512时达到6位有效数字。

当a=0,b=1,eps=5e-10时

T(2)=0.7750000000,T(4)=0.7827941176,T(8)=0.7847471236

T(16)=0.7852354030,T(32)=0.7853574733,T(64)=0.7853879909

T(128)=0.7853956203,T(256)=0.7853975276,T(512)=0.7853980045

T(1024)=0.7853981237,T(2048)=0.7853981535,T(4096)=0.7853981609

T(8192)=0.7853981628,T(16384)=0.7853981632

从计算结果看n=16384,满足精度要求,在n=4096时达到8位有效数字。

f 12121212,,,,/2,*2r r c c s s t t h n ======

2主要程序代码 while(1)

{

temp=0;

for(k=0;k!=n;k++)

{

x=a+k*h+h/2.;/*公式(31)*/

temp+=(*f)(x);/*公式(32)*/

}

t2=(t1+temp*h)/2.f;/*公式(33)*/

s2=t2+(t2-t1)/3;/*公式(34)*/

/*核心算法中c 步*/

if(n>=2)

{

c2=s2+(s2-s1)/15; }

/*核心算法中d 步*/

if(n>=4)

{

r2=c2+(c2-c1)/63;

/*核心算法中e 步*/

printf("R(%d)=%11.10f\n",n/4,r2);

fprintf(fp,"R(%d)=%11.10f\n",n/4,r2);

deta1=r2-r1;

if(fabs(deta1)

}

r1=r2;c1=c2;s1=s2;t1=t2;h/=2.0;n*=2;/*核心算法中f 步*/

}

相关文档
最新文档