《计算方法与实习》实验报告.doc
《《计算方法与实习》实验报告.doc》由会员分享,可在线阅读,更多相关《《计算方法与实习》实验报告.doc(26页珍藏版)》请在三一办公上搜索。
1、课程:计算方法与实习学期:2010-2011学年第三学期 习题一:用两种不同的顺序计算,分析其误差的变化。思路分析用一个循环语句,对从1到10000进行叠加,两种不同顺序指从1叠加到10000和从10000叠加到1,每隔一定的叠加次数就比较一次误差。用C+语言编程(1)从1叠加到10000源代码如下:#include#include#include using namespace std;int main()double N=10000,i=0;int a;double n=0,S=1.644834;for(i=1;i=N;i+)n+=1/(i*i);a=i;if(a%500=0)coutse
2、tprecision(7)迭代a次时,和为:S=nt误差为:i=fabs(S-n)endlendl;return 0;运行结果如下:迭代500次时,和为:S=1.642936 误差为:i=0.001897934迭代1000次时,和为:S=1.643935 误差为:i=0.0008994333迭代1500次时,和为:S=1.644268 误差为:i=0.0005663776迭代2000次时,和为:S=1.644434 误差为:i=0.0003998082迭代2500次时,和为:S=1.644534 误差为:i=0.0002998532迭代3000次时,和为:S=1.644601 误差为:i=0.
3、0002332109迭代3500次时,和为:S=1.644648 误差为:i=0.0001856066迭代4000次时,和为:S=1.644684 误差为:i=0.0001499019迭代4500次时,和为:S=1.644712 误差为:i=0.0001221307迭代5000次时,和为:S=1.644734 误差为:i=9.991315e-005迭代5500次时,和为:S=1.644752 误差为:i=8.173481e-005迭代6000次时,和为:S=1.644767 误差为:i=6.658593e-005迭代6500次时,和为:S=1.64478 误差为:i=5.376747e-005
4、迭代7000次时,和为:S=1.644791 误差为:i=4.278009e-005迭代7500次时,和为:S=1.644801 误差为:i=3.32576e-005迭代8000次时,和为:S=1.644809 误差为:i=2.492534e-005迭代8500次时,和为:S=1.644816 误差为:i=1.757329e-005迭代9000次时,和为:S=1.644823 误差为:i=1.103809e-005迭代9500次时,和为:S=1.644829 误差为:i=5.19077e-006迭代10000次时,和为:S=1.644834 误差为:i=7.184807e-008Press a
5、ny key to continue(2)从10000叠加到1的源代码如下:#include#include#include using namespace std;int main()double N=10000,i=0;int a;double n=0,S=1.644834;for(i=N;i=1;i-)n+=1/(i*i);a=i;if(a=N)cout以下为n大于200时每隔500所积累的和:endl=200)coutsetprecision(7)n=a时,和为:S=nt误差为:i=fabs(S-n)endlendl;if(a=200)coutendl以下为n小于200时每隔20所积累
6、的和endlendl;if(a200&a%10=0|a=10)coutsetprecision(7)n=a时,和为:S=nt误差为:i=fabs(S-n)endlendl;return 0;运行结果如下:以下为n大于200时每隔500所积累的和:n=10000时,和为:S=1e-008 误差为:i=1.644834n=9500时,和为:S=5.273698e-006 误差为:i=1.644829n=9000时,和为:S=1.112228e-005 误差为:i=1.644823n=8500时,和为:S=1.765898e-005 误差为:i=1.644816n=8000时,和为:S=2.5012
7、81e-005 误差为:i=1.644809n=7500时,和为:S=3.334722e-005 误差为:i=1.644801n=7000时,和为:S=4.287235e-005 误差为:i=1.644791n=6500时,和为:S=5.386299e-005 误差为:i=1.64478n=6000时,和为:S=6.668556e-005 误差为:i=1.644767n=5500时,和为:S=8.183971e-005 误差为:i=1.644752n=5000时,和为:S=0.000100025 误差为:i=1.644734n=4500时,和为:S=0.0001222519 误差为:i=1.6
8、44712n=4000时,和为:S=0.0001500363 误差为:i=1.644684n=3500时,和为:S=0.0001857601 误差为:i=1.644648n=3000时,和为:S=0.0002333939 误差为:i=1.644601n=2500时,和为:S=0.000300085 误差为:i=1.644534n=2000时,和为:S=0.00040013 误差为:i=1.644434n=1500时,和为:S=0.0005668939 误差为:i=1.644267n=1000时,和为:S=0.0009005052 误差为:i=1.643933n=500时,和为:S=0.0019
9、02006 误差为:i=1.642932以下为n小于200时每隔20所积累的和n=180时,和为:S=0.005471021 误差为:i=1.639363n=160时,和为:S=0.006169577 误差为:i=1.638664n=140时,和为:S=0.007068433 误差为:i=1.637766n=120时,和为:S=0.008268157 误差为:i=1.636566n=100时,和为:S=0.009950172 误差为:i=1.634884n=80时,和为:S=0.01247846 误差为:i=1.632356n=60时,和为:S=0.01670633 误差为:i=1.62812
10、8n=40时,和为:S=0.02521511 误差为:i=1.619619n=20时,和为:S=0.05117083 误差为:i=1.593663n=10时,和为:S=0.1050663 误差为:i=1.539768n=9时,和为:S=0.117412 误差为:i=1.527422n=8时,和为:S=0.133037 误差为:i=1.511797n=7时,和为:S=0.1534452 误差为:i=1.491389n=6时,和为:S=0.181223 误差为:i=1.463611n=5时,和为:S=0.221223 误差为:i=1.423611n=4时,和为:S=0.283723 误差为:i=1
11、.361111n=3时,和为:S=0.3948341 误差为:i=1.25n=2时,和为:S=0.6448341 误差为:i=0.9999999n=1时,和为:S=1.644834 误差为:i=7.184806e-008Press any key to continue结果分析从这两种不同顺序的结果来看,随着叠加次数的增加,误差是逐渐变小的,当全部叠加完之后,其结果达到了预期值1.644834,而且两种方法出来的最终误差是相同的习题二:用牛顿法求下列方程的根:(1);思路分析1.给定初始值,e为根的容许误差,N为迭代次数的容许值2.若或迭代次数大于N,则算法失败,结束,否则转向33.计算4.若
12、则输出,否则令,转向2C+语言编程源代码如下:#include#include#includeusing namespace std;int main()double x0=1,x1,e=0.00001,u;int i,N=100;cout迭代过程数据如下:endlendl;coutksetw(15)x0setw(15)x1setw(15)误差endl;for(i=1;i+)x1=x0-(x0*x0-exp(x0)/(2*x0-exp(x0);u=fabs(x1-x0);coutisetw(15)x0setw(15)x1setw(15)uendl;if(uN)break;else x0=x1;
13、if(iN)cout迭代次数超出限制,算法失败endl;if(ue&i=N)cout算法成功,迭代次数为:n=iendl;return 0;实验结果如下:迭代过程数据如下:k x0 x1 误差1 1 -1.39221 2.392212 -1.39221 -0.835088 0.5571243 -0.835088 -0.709834 0.1252534 -0.709834 -0.703483 0.006350695 -0.703483 -0.703467 1.59816e-0056 -0.703467 -0.703467 1.0107e-010算法成功,迭代次数为:n=6Press any ke
14、y to continue第三章第1题(1):编写用追赶法解三对角线性方程组的程序,并解下列方程组:,其中,思路分析1.用一个二维数组存储an,bn,cn,xi,dn2.用一个循环语句迭代和,使矩阵变换为上三角矩阵3.求出xn3.用一个循环语句完成回代法,C+语言编程源代码如下:#include#include#includeusing namespace std;int main()double s510;int i,j,n=5,m=10;for(i=0;i=n-1;i+)for(j=0;j=m-1;j+)if(i=0)sij=1;/an赋值else if(i=1)sij=-4;/bn赋值e
15、lse if(i=2)sij=1;/cn赋值else if(i=3)sij=0;/xn赋值else if(i=4&j=0)sij=-27;/dn赋值else if(i=4&j!=0)sij=-15;for(i=0;i=0;i-)s3i=(s4i-s2i*s3i+1)/s1i;cout方程的解如下:endl; for(i=0;i=m-1;i+)coutxi=s3iendl;return 0;实验结果如下:方程的解如下:x0=8.70576x1=7.82303x2=7.58637x3=7.52245x4=7.50344x5=7.49131x6=7.46179x7=7.35584x8=6.96156
16、x9=5.49039Press any key to continue习题4、分别用雅可比迭代法与高斯塞德尔迭代法解下列方程组:,其中,一、雅可比迭代法思路分析1.用一个二维数组存储方程组的各项系数,两个数组x0,x1分别存储和2.用三个嵌套的循环语句,第一层把上一次循环的x1赋给x0,并判断是否符合方程解,第二层和第三层进行雅克比迭代3.输出方程的解C+语言编程源代码如下:/雅克比迭代式#include#include#includeusing namespace std;int main()double s910= 31,-13,0,0,0,-10,0,0,0,-15,-13,35,-9,
17、0,-11,0,0,0,0,27,0,-9,31,-10,0,0,0,0,0,-23,0,0,-10,79,-30,0,0,0,-9,0,0,0,0,-30,57,-7,0,-5,0,-20,0,0,0,0,7,47,-30,0,0,12,0,0,0,0,0,-30,41,0,0,-7,0,0,0,0,-5,0,0,27,-2,7,0,0,0,0,0,0,0,-2,29,-10,x19,x09,e=0.00001,u,s2=0;int i,j,h,N=0,n=0;for(i=0;i=8;i+)x1i=x0i=1;cout迭代过程数据如下:endlendl;for(i=0;i+)for(j=0;
18、j=8;j+)x0j=x1j; for(j=0;j=8;j+)for(h=0;h=8;h+)if(h!=j)s2+=(sjh*x0h);x1j=(-s2+sj9)/sjj;s2=0;for(j=0;j=8;j+)u=fabs(x1j-x0j);if(ue)N+;if(N=9)break;coutx1=x10tx2=x11tx3=x12tendl;coutx4=x13tx5=x14tx6=x15tendl;coutx7=x16tx8=x17tx9=x18tendl;coutendl;n+;cout算法成功,迭代次数为:n=nendl;return 0;实验结果如下:迭代过程数据如下:x1=0.2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算方法与实习 计算方法 实习 实验 报告
链接地址:https://www.31ppt.com/p-4192810.html