《计算方法与实习》实验报告.doc

上传人:laozhun 文档编号:4192810 上传时间:2023-04-09 格式:DOC 页数:26 大小:181.50KB
返回 下载 相关 举报
《计算方法与实习》实验报告.doc_第1页
第1页 / 共26页
《计算方法与实习》实验报告.doc_第2页
第2页 / 共26页
《计算方法与实习》实验报告.doc_第3页
第3页 / 共26页
《计算方法与实习》实验报告.doc_第4页
第4页 / 共26页
《计算方法与实习》实验报告.doc_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《《计算方法与实习》实验报告.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

19、58065 x2=1.71429 x3=-0.129032x4=0.620253 x5=0.385965 x6=0.744681x7=0.560976 x8=0.518519 x9=-0.275862x1=0.475243 x2=0.955405 x3=-0.044158x4=0.0988084 x5=0.112508 x6=0.555905x7=0.374157 x8=0.3103 x9=-0.309068x1=0.0961066 x2=0.971952 x3=-0.432686x4=0.00192468 x5=-0.203384 x6=0.477386x7=0.236028 x8=0.25

20、72 x9=-0.323428x1=0.0777173 x2=0.631942 x3=-0.459135x4=-0.168851 x5=-0.268676 x6=0.436266x7=0.178575 x8=0.197638 x9=-0.32709x1=-0.0781318 x2=0.597791 x3=-0.612936x4=-0.197411 x5=-0.368833 x6=0.409319x7=0.148488 x8=0.185276 x9=-0.331197x1=-0.101146 x2=0.468877 x3=-0.632064x4=-0.255381 x5=-0.388258 x6

21、=0.405031x7=0.12877 x8=0.166424 x9=-0.33205x1=-0.15659 x2=0.449305 x3=-0.688191x4=-0.265276 x5=-0.420949 x6=0.395338x7=0.125632 x8=0.162763 x9=-0.33335x1=-0.167924 x2=0.404005 x3=-0.697065x4=-0.284944 x5=-0.427669 x6=0.398205x7=0.11854 x8=0.156613 x9=-0.333603x1=-0.185996 x2=0.395401 x3=-0.716561x4=

22、-0.288647 x5=-0.438207 x6=0.394678x7=0.120638 x8=0.15535 x9=-0.334027x1=-0.190742 x2=0.380363 x3=-0.720254x4=-0.295165 x5=-0.4407 x6=0.397587x7=0.118057 x8=0.153367 x9=-0.334114x1=-0.19611 x2=0.376868 x3=-0.726722x4=-0.296589 x5=-0.443948 x6=0.396311x7=0.120185 x8=0.152899 x9=-0.334251x1=-0.197987 x

23、2=0.37219 x3=-0.728196x4=-0.298657 x5=-0.444895 x6=0.398153x7=0.119252 x8=0.152287 x9=-0.334283x1=-0.199355 x2=0.370816 x3=-0.730221x4=-0.299207 x5=-0.445811 x6=0.397698x7=0.1206 x8=0.15211 x9=-0.334325x1=-0.200078 x2=0.369499 x3=-0.730798x4=-0.299816 x5=-0.446171 x6=0.398695x7=0.120267 x8=0.151937

24、x9=-0.334337x1=-0.200308 x2=0.368969 x3=-0.731376x4=-0.300027 x5=-0.446385 x6=0.398536x7=0.120996 x8=0.151869 x9=-0.334349x1=-0.200582 x2=0.368668 x3=-0.731598x4=-0.300183 x5=-0.446521 x6=0.399034x7=0.12088 x8=0.151829 x9=-0.334354x1=-0.200548 x2=0.368466 x3=-0.731736x4=-0.300263 x5=-0.446546 x6=0.3

25、9898x7=0.121244 x8=0.151803 x9=-0.334357x1=-0.20065 x2=0.368436 x3=-0.731821x4=-0.30029 x5=-0.446597 x6=0.399216x7=0.121205 x8=0.151798 x9=-0.334358x1=-0.200586 x2=0.36836 x3=-0.731838x4=-0.300321 x5=-0.446583 x6=0.399198x7=0.121377 x8=0.151789 x9=-0.334359算法成功,迭代次数为:n=19Press any key to continue二、高

26、斯赛德尔迭代法思路分析1.用一个二维数组存储方程组的各项系数,两个数组x0,x1分别存储和2.用三个嵌套的循环语句,第一层把上一次循环的x0赋给x1用于判断是否符合精度要求,并判断是否符合精度要求,第二层和第三层进行高斯塞德尔迭代3.输出方程的解C+语言编程源代码如下:/高斯赛德尔迭代法#include#include#includeusing namespace std;int main()double s910= 31,-13,0,0,0,-10,0,0,0,-15,-13,35,-9,0,-11,0,0,0,0,27,0,-9,31,-10,0,0,0,0,0,-23,0,0,-10,7

27、9,-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;j=8;j+)x1j=x0j; for(j=0;j=8;j+)for(h=0;h=8;h+)if(h!=

28、j)s2+=(sjh*x0h);x0j=(-s2+sj9)/sjj;s2=0;for(j=0;j=8;j+)u=fabs(x0j-x1j);if(ue)N+;if(N=9)break;coutx1=x00tx2=x01tx3=x02tendl;coutx4=x03tx5=x04tx6=x05tendl;coutx7=x06tx8=x07tx9=x08tendl;coutendl;n+;N=0;cout算法成功,迭代次数为:n=nendl;return 0;实验结果如下:迭代过程数据如下:x1=0.258065 x2=1.43871 x3=-0.00166493x4=0.49346 x5=0.1

29、19365 x6=0.875839x7=0.470126 x8=0.355438 x9=-0.320315x1=0.401988 x2=0.957825 x3=-0.304677x4=-0.0297297 x5=-0.227786 x6=0.589325x7=0.260482 x8=0.19335 x9=-0.331493x1=0.107902 x2=0.661571 x3=-0.559457x4=-0.195084 x5=-0.364219 x6=0.47583x7=0.177436 x8=0.167256 x9=-0.333293x1=-0.0529445 x2=0.493434 x3=-

30、0.661611x4=-0.260029 x5=-0.414628 x6=0.430329x7=0.144144 x8=0.157788 x9=-0.333946x1=-0.138131 x2=0.419683 x3=-0.703972x4=-0.284608 x5=-0.433983 x6=0.411961x7=0.130703 x8=0.154155 x9=-0.334196x1=-0.174984 x2=0.389018 x3=-0.720804x4=-0.294117 x5=-0.441562 x6=0.404511x7=0.125252 x8=0.152733 x9=-0.33429

31、4x1=-0.190247 x2=0.376639 x3=-0.727465x4=-0.29785 x5=-0.444566 x6=0.401479x7=0.123034 x8=0.15217 x9=-0.334333x1=-0.196416 x2=0.371691 x3=-0.730106x4=-0.29933 x5=-0.445766 x6=0.400242x7=0.122128 x8=0.151945 x9=-0.334349x1=-0.19889 x2=0.369716 x3=-0.731157x4=-0.29992 x5=-0.446249 x6=0.399736x7=0.12175

32、8 x8=0.151854 x9=-0.334355x1=-0.199882 x2=0.368925 x3=-0.731577x4=-0.300157 x5=-0.446444 x6=0.399529x7=0.121606 x8=0.151817 x9=-0.334357x1=-0.20028 x2=0.368608 x3=-0.731745x4=-0.300253 x5=-0.446523 x6=0.399444x7=0.121544 x8=0.151803 x9=-0.334358x1=-0.200441 x2=0.36848 x3=-0.731813x4=-0.300292 x5=-0.

33、446555 x6=0.399409x7=0.121519 x8=0.151797 x9=-0.334359x1=-0.200505 x2=0.368429 x3=-0.731841x4=-0.300307 x5=-0.446568 x6=0.399394x7=0.121508 x8=0.151794 x9=-0.334359x1=-0.200532 x2=0.368408 x3=-0.731852x4=-0.300314 x5=-0.446573 x6=0.399388x7=0.121504 x8=0.151793 x9=-0.334359x1=-0.200542 x2=0.368399 x

34、3=-0.731856x4=-0.300316 x5=-0.446576 x6=0.399386x7=0.121502 x8=0.151793 x9=-0.334359算法成功,迭代次数为:n=15Press any key to continue实验分析从两种迭代法的实验结果来看,高斯塞德尔迭代法比雅可比迭代法的收敛速度更快,可以用更少的迭代次数来得到方程的解。习题5、按下列数据0.300.420.500.580.660.721.044031.084621.118031.156031.198171.23223作五次插值,并求,时的函数近似值。思路分析可用拉格朗日差值多项式作五次插值,用一个双

35、层嵌套的循环语句来计算拉格朗日多项式,内层计算,外层计算C+语言编程源代码如下:#include#include#include using namespace std;double chazhi(double x)double xi6=0.30,0.42,0.50,0.58,0.66,0.72,yi6=1.04403,1.08462,1.11803,1.15603,1.19817,1.23223,li6=1,1,1,1,1,1,Ln=0;int i,j;for(i=0;i=5;i+)for(j=0;j=5;j+)if(j!=i)lii*=(x-xij)/(xii-xij);lii*=yii;

36、Ln+=lii;return Ln;int main()cout五次插值的结果如下:endlendl;coutx=0.46时,y=setprecision(7)chazhi(0.46)endl;coutx=0.55时,y=setprecision(7)chazhi(0.55)endl;coutx=0.60时,y=setprecision(7)chazhi(0.60)endl;return 0;实验结果如下:五次插值的结果如下:x=0.46时,y=1.100724x=0.55时,y=1.141271x=0.60时,y=1.166194Press any key to continue习题6、试分

37、别用抛物线和指数曲线拟合下列数据11.522.533.544.533.479.50122.65159.05189.15214.15238.65252.5055.566.577.58267.55280.50296.65301.40310.40318.15325.15比较两个拟合函数的优劣。一、抛物线拟合思路分析套用最小二乘法的解题思路,先求取正规方程组,再用高斯消元法解得正规方程组的解即为抛物线拟合的系数,a,b,c。C+语言编程源代码如下:#include#include#include using namespace std;int main()double x15=1,1.5,2,2.5,3,3.5,4,4.5,5,5.5,6,6.5,7,7.5,8,y15=3

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号