计算方法与实习
用两层嵌套循环语句,内层套用复化梯形公式和复化辛卜生公式,外层判断是否满足精度要求,若不满足,增加n,若满足,跳出循环。
C++语言编程源代码如下:
#include
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 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 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库《计算方法与实习》实验报告(5)在线全文阅读。
相关推荐: