《计算方法与实习》实验报告(5)

2019-04-23 00:05

计算方法与实习

用两层嵌套循环语句,内层套用复化梯形公式和复化辛卜生公式,外层判断是否满足精度要求,若不满足,增加n,若满足,跳出循环。

C++语言编程源代码如下:

#include #include #include using namespace std;

int main(){ double f1=0,f2=0,p=0,q=0,e=0.000001,a,b,h,x1,x2,x3;

int i,j=1,n1=1,n2=1;

cout<<\计算结果如下:\

cout<<\以下为用复化梯形公式的计算结果\

cout<

h=(b-a)/n1; for(j=1;j<=n1;j++){

x1=a+(j-1)*h; x2=a+j*h;

f1+=h/2*(sqrt(1+cos(x1)*cos(x1))+sqrt(1+cos(x2)*cos(x2))); if(fabs(f1-p)<0.000001)break;

}

cout<

p=f1; n1++; f1=0;

}

cout<

n=\ cout<<\以下为用复化辛卜生公式的计算结果\

cout<

b=3.14159/2; h=(b-a)/n2; for(j=1;j<=n2;j++){ x1=a+(j-1)*h;

21

计算方法与实习

x2=a+j*h;

x3=a+(j-0.5)*h;

f2+=h/6*(sqrt(1+cos(x1)*cos(x1))+4*sqrt(1+cos(x3)*cos(x3))+sqrt(1+cos(x2)*cos(x2))); if(fabs(f2-q)<0.000001)break;

}

cout<

}

cout<

n=\ }

return 0;

实验结果如下:

计算结果如下:

以下为用复化梯形公式的计算结果 f1 前后项差值 1.896117 1.896117 1.90997 0.01385312 1.910096 0.0001251545 1.910098 1.937996e-006

1.910098 4.239134e-008

用复化梯形公式计算得f1=1.910098,迭代次数为:n=5

以下为用复化辛卜生公式的计算结果 f1 前后项差值 1.914588 1.914588 1.91014 0.004448252

1.910098 4.165611e-005 1.910098 6.414982e-007

用复化辛卜生公式计算得f1=1.910098,迭代次数为:n=4 Press any key to continue

?二、I2(f)??4tanxx0dx

思路分析

用两层嵌套循环语句,内层套用复化梯形公式和复化辛卜生公式,外层判断是否满足精

22

计算方法与实习

tan(x)度要求,若不满足,增加n,若满足,跳出循环。需要注意的是,由于有意义,因此可以把初始值设为0.00000001,这对结果是没有影响的。

x在x=0处没

C++语言编程源代码如下:

#include #include #include using namespace std;

int main(){ double f1=0,f2=0,p=0,q=0,e=0.000001,a,b,h,x1,x2,x3;

int i,j=1,n1=1,n2=1;

cout<<\计算结果如下:\

cout<<\以下为用复化梯形公式的计算结果\

cout<

h=(b-a)/n1; for(j=1;j<=n1;j++){

x1=a+(j-1)*h; x2=a+j*h;

f1+=h/2*(tan(x1)/x1+tan(x2)/x2); if(fabs(f1-p)<0.000001)break;

}

cout<

p=f1; n1++; f1=0;

}

cout<

n=\ cout<<\以下为用复化辛卜生公式的计算结果\

cout<

b=3.14159/4; h=(b-a)/n2; for(j=1;j<=n2;j++){ x1=a+(j-1)*h;

23

计算方法与实习

}

x2=a+j*h;

x3=a+(j-0.5)*h;

f2+=h/6*(tan(x1)/x1+4*tan(x3)/x3+tan(x2)/x2); if(fabs(f2-q)<0.000001)break;

cout<

q=f2; n2++;

f2=0; } cout<

return 0;

实验结果如下:

计算结果如下:

以下为用复化梯形公式的计算结果 f1 前后项差值 0.892698 0.892698 0.860562 0.0321359 0.85419 0.00637239 0.851919 0.00227055 0.850861 0.00105857 0.850284 0.000577125 0.849935 0.000348715 0.849708 0.000226625 0.849553 0.000155509 0.849441 0.000111302 0.849359 8.23878e-005 0.849296 6.26836e-005 0.849248 4.87951e-005 0.849209 3.87252e-005 0.849178 3.12466e-005 0.849152 2.55764e-005 0.849131 2.11994e-005 0.849113 1.77669e-005 0.849098 1.50372e-005 0.849085 1.28394e-005 0.849074 1.10498e-005 0.849065 9.57802e-006

24

计算方法与实习

0.849056 8.35643e-006

0.849049 0.849042 0.849037 0.849032

7.33406e-006 6.47191e-006 5.73977e-006 5.11403e-006

0.849027 4.57605e-006 0.849023 4.11096e-006 0.849019 3.70682e-006 0.849016 3.35397e-006 0.849013 3.04452e-006 0.84901 2.772e-006 0.849007 2.53106e-006 0.849005 2.31725e-006 0.849003 2.12686e-006 0.849001 1.95677e-006 0.848999 1.80435e-006 0.848998 1.66735e-006 0.848996 1.54388e-006 0.848995 1.43231e-006 0.848993 1.33123e-006 0.848992 1.23945e-006

0.848991 1.15591e-006 0.84899 1.07972e-006 0.848989 1.01007e-006 0.848988 9.46293e-007

用复化梯形公式计算得f1=0.848988,迭代次数为:n=47

以下为用复化辛卜生公式的计算结果 f1 前后项差值 0.84985 0.84985 0.849038 0.000811965 0.848981 5.68013e-005 0.848971 1.02701e-005 0.848968 2.89011e-006

0.848967 1.0536e-006 0.848967 4.5551e-007

用复化辛卜生公式计算得f1=0.848967,迭代次数为:n=7 Press any key to continue

实验分析

从实验中可以发现,利用复化辛卜生公式进行迭代比用复化梯形公式迭代有更大的收敛速度,达到同样的精度要求,用复化辛卜生公式比复化梯形公式需要迭代的次数更少,当复化梯形公式需要迭代的次数很多时,复化辛卜生公式的优势尤其明显。实验结果中,计算

25

计算方法与实习

?I2(f)??4tanxx0dx时,用复化辛卜生公式与用复化梯形公式计算的结果略有出入,这可能

是由于复化梯形公式经过多次迭代之后误差累计造成的。

26


《计算方法与实习》实验报告(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:儿童心理学部分作业参考答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: