《计算方法实验修订版.pdf》由会员分享,可在线阅读,更多相关《计算方法实验修订版.pdf(29页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 计算方法实验修订版 IBMT standardization office【IBMT5AB-IBMT08-IBMT2C-ZZT18】计 算 方 法 实验指导 姓名_ 学号_ 院系_ 专业_ 哈尔滨工业大学 计算方法实验指导 根据实际问题建立的数学模型,一般不能求出所谓的解析解,必须针对数学模型的特点确定适当的计算方法,编制出计算机能够执行的计算程序,输入计算机,进行调试,完成运算,如果计算结果存在问题或不知是否正确,还需要重新确定新的计算方法,再编制出计算程序,输入计算机,重新调试,完成运算,直至获得正确的计算结果,这就是数值计算的全部过程。学生在学习“计算方法”和“高级语言”等课程时普遍存
2、在的问题是:只会套用教科书中的标准程序进行数值计算,很少有人能够独立地将学过的数值算法编制成计算机程序,至于灵活应用已经掌握的算法求解综合性较大的课题,则更是困难的事情。编写计算方法实验指导的目的是:突出数值计算程序结构化的思想。提高学生的编程能力,加深对“计算方法”课程内容的理解和掌握,为”计算方法“课程的教学服务,进一步奠定从事数值计算工作的基础。具体地 1.根据“计算方法”课程内容的特点,给出五个典型算法的分析流程,学生可以利用所掌握的“高级语言”顺利地编制出计算机程序,上机实习,完成实验环节的教学要求。2.所有的计算实习题目都经过任课教师逐一检验,准确无误。3.充分利用循环的思想、迭代
3、的思想,给出算法结构描述和程序语言的对应关系,有利于学生编制相应的程序。4.结合实习题目,提出实验要求,要求学生按规范格式写出相应的实验报告,实验报告成绩记入期末总成绩。需要提醒学生:不能简单地套用现成的标准程序完成实验题目,应当把重点放在对算法的理解、程序的优化设计、上机调试和计算结果分析上,否则就失去实验课的目的啦。5.五个具体的实验题目是:实验题目 1 拉格朗日(Lagrange)插值 实验题目 2 龙贝格(Romberg)积分法 实验题目 3 四阶龙格库塔(RungeKutta)方法 实验题目 4 牛顿(Newton)迭代法 实验题目 5 高斯(Gauss)列主元消去法 要求必须完成其
4、中三个(如果全部完成更好)。实验题目 1 拉格朗日(Lagrange)插值 方法概要:给定平面上1n个不同的数据点(,()kkxf x,0,1,kn,ijxx,ij;则满足条件()()nkkP xf x,0,1,kn 的n次拉格朗日插值多项式 是存在唯一的。若,0,1,kxa b kn,且函数()f x充分光滑,则当,xa b时,有误差估计式(1)01()()()()()()(1)!nnnff xP xxxxxxxn,,a b 拉格朗日插值算法实验 实验目的:利用拉格朗日插值多项式()nP x求()f x的近似值 输 入:1n个数据点(,()kkxf x,0,1,kn;插值点x 输 出:()f
5、 x在插值点x的近似值()nP x 程序流程:1 置0.0y;0k 2 当kn时,做 2.12.4 2.1 置1.0l;2.2 对0,1,1,1,jkkn,置()/()jkjllxxxx 2.3 置()kyyl f x 2.4 置1kk 3 输出,x y 4 停机 问题 1 拉格朗日插值多项式的次数n越大越好吗?考虑下面两个拉格朗日插值问题:(1)设21()1f xx,5,5x,考虑等距节点的拉格朗日插值多项式()nP x,即将区间 5,5进行n等分,记10.0hn,5.0kxk h,0,1,kn,构造()nP x,利用拉格朗日插值多项式()nP x作为()f x的近似值。分别取5n,10n,
6、20n,同时计算()nP x在0.75x,1.75x,2.75x,3.75x,4.75x 处的函数值。(2)设()xf xe,1,1x,考虑等距节点的拉格朗日插值多项式()nP x,即将区间 1,1进行n等分,记2.0hn,1.0kxk h,0,1,kn,构造()nP x,利用拉格朗日插值多项式()nP x作为()f x的近似值。分别取5n,10n,20n,同时计算()nP x在0.95x ,0.05x ,0.05x,0.95x 处的函数值。问题 2 插值区间越小越好吗?考虑下面两个拉格朗日插值问题:(1)设21()1f xx,1,1x,考虑等距节点的拉格朗日插值多项式()nP x,即将区间
7、1,1进行n等分,记2.0hn,1.0kxk h,0,1,kn,构造()nP x,利用拉格 朗日插值多项式()nP x作为()f x的近似值。分别取5n,10n,20n,同时计算()nP x在0.95x ,0.05x ,0.05x,0.95x 处的函数值。(2)设()xf xe,5,5x,考虑等距节点的拉格朗日插值多项式()nP x,即将区间 5,5进行n等分,记2.0hn,1.0kxk h,0,1,kn,构造()nP x,利用拉格朗日插值多项式()nP x作为()f x的近似值。分别取5n,10n,20n,同时计算()nP x在4.75x ,0.25x ,0.25x,4.75x 处的函数值。
8、问题 3 在区间 1,1考虑拉格朗日插值问题,为了使得插值误差较小,应如何选取插值节点?考虑下面两个拉格朗日插值问题:(1)设21()1f xx,1,1x,考虑非等距节点的拉格朗日插值多项式()nP x,记(21)cos2(1)kkxn,0,1,kn,构造()nP x,利用拉格朗日插值多项式()nP x作为()f x的近似值。分别取5n,10n,20n,同时计算()nP x在0.95x ,0.05x ,0.05x,0.95x 处的函数值。(2)设()xf xe,1,1x,考虑非等距节点的拉格朗日插值多项式()nP x,记(21)cos2(1)kkxn,0,1,kn,构造()nP x,利用拉格朗
9、日插值多项式()nP x作为()f x的近似值。分别取5n,10n,20n,同时计算()nP x在0.95x ,0.05x ,0.05x,0.95x 处的函数值。问题 4 考虑拉格朗日插值问题,内插比外推更可靠吗?考虑下面两个拉格朗日插值问题:(1)设()f xx,关于以01x,14x,29x 为节点的拉格朗日插值多项式2()P x,利用拉格朗日插值多项式2()P x作为()f x的近似值。同时计算2()P x在5x,50 x,115x,185x 处的函数值。(2)设()f xx,关于以036x,149x,264x 为节点的拉格朗日插值多项式2()P x,利用拉格朗日插值多项式2()P x作为
10、()f x的近似值。同时计算2()P x在5x,50 x,115x,185x 处的函数值。(3)设()f xx,关于以0100 x,1121x,2144x 为节点的拉格朗日插值多项式2()P x,利用拉格朗日插值多项式2()P x作为()f x的近似值。同时计算2()P x在5x,50 x,115x,185x 处的函数值。(4)设()f xx,关于以0169x,1196x,2225x 为节点的拉格朗日插值多项式2()P x,利用拉格朗日插值多项式2()P x作为()f x的近似值。同时计算2()P x在5x,50 x,115x,185x 处的函数值。思考题:1.对实验 1 存在的问题,应如何解
11、决?2.对实验 2 存在的问题的回答,试加以说明 3.对实验 3 存在的问题的回答,试加以说明 4.如何理解插值问题中的内插和外推?写出实验报告 实验题目 2 龙贝格(Romberg)积分法 方法概要:利用复化梯形求积公式、复化辛普生求积公式、复化柯特斯求积公式的误差估计式计算积分()baf x dx。记bahn,kxak h,0,1,kn,其计算公式:一般地,利用龙贝格算法计算积分,要输出所谓的T 数表 龙贝格(Romberg)积分法实验 实验目的:利用龙贝格(Romberg)积分法计算积分()baf x dx 输 入:,a b N 输 出:龙贝格T 数表 程序流程:1 置bahn,1m 2
12、 输出1T 3 对2,3,iN,做 3.13,5 3.1 置 12iii 置 211111()222iikTThf akh 输出 2T 3.2 置 2211(4)3STT 输出 2S 3.3 对1m,置 2211(16)15CSS 输出 2C,转 3.6 3.4 对2m,置 2211(64)63RCC 输出 2R,转 3.6 3.5 对3m,置21tolRR 如果tol,则停机,否则转 3.6 3.6 置12RR,12CC,12SS,12TT,2hh,1mm 4 停机 问题 1:利用龙贝格(Romberg)积分法计算积分(1)120exxdx,610(2)31e sinxxdx,610(3)1
13、2041dxx,610(4)1011dxx,610 问题 2:被积函数无界,如何处理?(1)10sin xdxx,610 提示:0sin(0)lim1xxfx(2)10cos1xdxx,610 提示:引进变换1tx(3)10cosxdxx,610 提示:利用等式111000cos1cos1xxdxdxdxxxx,第一个积分值等于 2,第二个积分,利用0cos1(0)lim0 xxfx;也可以考虑利用分部积分1100cos2cos()xdxxdxx(4)121sin1xxdxx,610 提示:利用第一类 Gauss-Chebyshev 求积公式 问题 3:积分区间无限,如何处理?(1)2e,xd
14、x,610 提示:利用21010exdx作近似 (2)11(1)dxxx,610 提示:利用变换1tx(3)23ecosxxdx,610 提示:Gauss-Hermite 求积公式(4)20esinxxdx,610 提示:Gauss-Lagurre 求积公式 思考题:1.输入的参数N有什么意义?2.在实验 1 中二分次数和精度的关系如何?3.在实验 2 中给出的提示具有普遍性吗?存在其它的方法吗?试加以说明。4.在实验 3 中给出的提示具有普遍性吗?存在其它的方法吗?试加以说明。写出实验报告 实验题目 3 四阶龙格库塔(RungeKutta)方法 方法概要:给定常微分方程初值问题 记nxan
15、h,0,1,nN,利用四阶龙格库塔方法 可逐次求出微分方程初值问题的数值解ny,1,2,nN。四阶龙格库塔(RungeKutta)方法实验 实验目的:利用四阶龙格库塔(RungeKutta)方法求解微分方程初值问题 输 入:,a bN 输 出:初值问题的数值解,nnxy,0,1,2,nN。程序流程:1 置00,baxa yhN 2 对1,2,nN,做 2.12.4 2.1 置 2.2 置 10 xxh 2.3 输出 11,x y 2.4 置 0101,xx yy 3 停机 问题 1(1)准确解(2)准确解 问题 2(1)准确解(2)准确解 问题 3(1)准确解(2)准确解(3)准确解 思考题:
16、1.对实验 1,数值解和解析解相同吗?为什么?试加以说明。2.对实验 2,N越大越精确吗?试加以说明。3.对实验 3,N较小会出现什么现象?试加以说明 写出实验报告 实验题目 4 牛顿(Newton)迭代法 方法概要:求非线性方程()0f x 的根*x,牛顿迭代法计算公式 一般地,牛顿迭代法具有局部收敛性,为保证迭代收敛,要求,对充分小的0,*(,)O x。如果2(),f xCa b,*()0f x,*()0fx,那么,对充分小的0,当*(,)O x时,由牛顿迭代法计算出的nx收敛于*x,且收敛速度是 2 阶的;如果(),mf xCa b,*(1)*()()()0mf xfxfx,()*()0
17、(1)mfxm,那么,对充分小的0,当*(,)O x时,由牛顿迭代法计算出的nx收敛于*x,且收敛速度是 1 阶的;牛顿(Newton)迭代法实验 实验目的:利用牛顿迭代法求()0f x 的根 输 入:初值,精度12,,最大迭代次数N 输 出:方程()0f x 根*x的近似值或计算失败标志 程序流程:1 置1n 2 当nN时,做 2.12.4 2.1 置0()Ff x,0()DFfx 如果 1F,输出0 x;停机 如果 2DF,输出失败标志;停机 2.2 置 10/xxF DF 2.3 置 10Tolxx 如果 1Tol,输出1x;停机 2.4 置 1nn,01xx 3 输出失败标志 4 停机
18、 问题 1:(1)cos0 xx,6110,4210,10N,00.7853981634x(2)esin0 xx,6110,4210,10N,00.6x 问题 2:(1)e0 xx,6110,4210,10N,00.5x (2)222 ee0 xxxx,6110,4210,20N,00.5x 问题 3:(1)由下面的递推公式可以生成勒让德(Legendre)多项式 试确定234(),(),()P x P x P x和5()P x 确定6()P x,求6()P x得所有零点,精度610 0.9324695142,0.6612093865,0.2386191861 (2)由下面的递推公式可以生成切
19、比雪夫勒让德(Chebyshev)多项式 试确定234(),(),()T x T x T x和5()T x 确定6()T x,求6()T x得所有零点,精度610 21cos()2(1)jjxn,0,1,jn(3)由下面的递推公式可以生成拉盖尔(Laguerre)多项式 试确定234(),(),()L x L x L x和5()L x 求5()L x得所有零点,精度610 0.2635603197,1.4134030591,3.5964257710,7.0858100059,12.6408008443 (4)由下面的递推公式可以生成埃尔米特(Hermite)多项式 试确定234(),(),()
20、Hx Hx Hx和5()Hx 确定6()Hx,求6()Hx得所有零点,精度610 2.3506049737,1.3358490740,0.4360774119 思考题:1.对实验 1 确定初值的原则是什么?实际计算中应如何解决?2.对实验 2 如何解释在计算中出现的现象?试加以说明 3.对实验 3 存在的问题的回答,试加以说明 写出实验报告 实验题目 5 相对高斯(Gauss)列主元消去法 方法概要:高斯(Gauss)列主元消去法:对给定的n阶线性方程组Axb,首先进行列主元消元过程,然后进行回代过程,最后得到解或确定该线性方程组是奇异的。如果系数矩阵的元素按绝对值在数量级方面相差很大,那么,
21、在进行列主元消元过程前,先把系数矩阵的元素进行行平衡:系数矩阵的每行元素和相应的右端向量元素同除以该行元素绝对值最大的元素。这就是所谓的平衡技术。然后再进行列主元消元过程。如果真正进行运算去确定相对主元,则称为显式相对Gauss 列主元消去法;如果不进行运算,也能确定相对主元,则称为隐式相对Gauss 列主元消去法。显式相对 Gauss 列主元消去法:对给定的n阶线性方程组Axb,首先进行列主元消元过程,在消元过程中利用显式平衡技术,然后进行回代过程,最后得到解或确定该线性方程组是奇异的。隐式相对 Gauss 列主元消去法:对给定的n阶线性方程组Axb,首先进行列主元消元过程,在消元过程中利用
22、隐式平衡技术,然后进行回代过程,最后得到解或确定该线性方程组是奇异的。实验目的:利用 Gauss 列主元消去法、显式相对 Gauss 列主元消去法、隐式相对 Gauss 列主元消去法求解线性方程组Axb。输 入:n;ija,ib,,1,2,i jn 输 出:线性方程组Axb的近似解ix,1,2,in 程序流程:一、Gauss 列主元消去法 1 对1,2,1kn,做 1.11.3,消元过程 1.1 寻找最小的正整数p,kpn和maxpkjkkj naa。如果0pka,输出奇异标志,停机;1.2 如果pk,那么交换,p k两行;1.3 对1,ikn,记/i ki kkkmaa,计算 2.如果0nn
23、a输出奇异标志,停机;3.置 nnnnabx/,回代过程 4.对1,2,1 nk,置 kknkjjkjkkaxabx/)(1 二、显式相对 Gauss 列主元消去法 1.对1,2,1kn,做 1.11.4,消元过程 1.1 对,1,ik kn,计算maxiijkj nsa,如果0is,输出奇异标志,停机;计算/ijijiaas,,1,jk kn;1.2 寻找最小的正整数p,kpn和maxpkjkkj naa,如果0pka,输出奇异标志,停机;1.3 如果pk,那么交换,p k两行;1.4 对1,ikn,记/i ki kkkmaa,计算 2.如果0nna输出奇异标志,停机;3.置 nnnnabx
24、/,回代过程 4.对1,2,1 nk,置 kknkjjkjkkaxabx/)(1 三、隐式相对Gauss列主元消去法 1.对1,2,1kn,做 1.11.3 消元过程 1.1 对,1,ik kn,计算maxijkkj nsa,如果0is,输出奇异标志,停机;寻找最小的正整数p,kpn和/max/pkpikik i nasas;1.2 如果pk,那么交换,p k两行;1.3 对1,ikn,记/i ki kkkmaa,计算 2.如果0nna输出奇异标志,停机;3.置 nnnnabx/,回代过程 4.对1,2,1 nk,置 kknkjjkjkkaxabx/)(1 问题 1 实验题目:(1)2499.
25、19989.01262.12951.13927.02786.04002.01784.00643.03781.01920.03645.01129.04015.03872.02246.02943.03678.01234.04096.04321xxxx(2)43.22368.11008.12287.22617.177260.4600260.4601.132590.6700590.67810.98860.9000860.9001.1364321xxxx(3)420/31960/5760/7712/257/16/15/14/16/15/14/13/15/14/13/12/14/13/12/114321x
26、xxx(4)3133233210957910685657787104321xxxx 实验题目的准确结果:(1)1234(,)(1,1,1,1)TTx xx xx;(2)1234(,)(1,1,1,1)TTx xx xx;(3)1234(,)(1,1,1,1)TTx xx xx;(4)1234(,)(1,1,1,1)TTx xx xx。问题 2(1)123419730520680413646.871.347.452.011.788.676.410.880225.11.455.906.1336.56.60 xxxx(2)12340.53980.71610.55540.29820.20580.525
27、70.69240.35650.62550.05030.64650.81870.18720.12910.10700.58140.94000.77790.40420.1859xxxx(3)1231012131102131157xxx(4)12342422171025410915xxx 思考题:1.计算实验 1、实验 2 的各个题目说明:对什么类型的线性方程组三种方法是一致的?2.用三种方法计算实验 1、实验 2 的各个题目,哪种方法最好?试加以说明。3.综合上述两种结论,总结三种方法的关系,试加以说明。写出实验报告 说 明 1 本课程给出五类实验题目,供学生选用,要求必须完成其中三个实验。2 实验
28、课的目的是为了让学生深入理解和掌握“计算方法”课程的基本内容,同时有助于培养学生的上机调试程序进行数值计算的动手能力,进一步提高利用数值方法求解数学问题、分析计算结果、选择算法的综合能力。3 为了顺利完成实验教学的规定内容,建议学生按下面方法准备实验、进行实验、写出实验报告:(1)应明确实验的目的,清楚实验的内容,包括算法和误差分析;(2)写出内容摘要,包括算法的理论基础和对算法的初步认识;(3)上机前,编写好计算程序;(4)上机调试程序要做到快速、准确;(5)记录计算结果要做到真实、准确;(6)课后,认真写好实验报告,包括对算法的新认识和体会,要特别注意对计算结果的分析和讨论,当然包括对计算
29、结果的误差分析。实验报告一 题目(摘要)Lagrange 插值 给定平面上1n个不同的数据点(,()kkxf x,0,1,kn,ijxx,ij;则满足条件 ()()nkkP xf x,0,1,kn 的n次拉格朗日插值多项式 是存在唯一的。若,0,1,kxa b kn,且函数()f x充分光滑,则当,xa b时,有误差估计式 (1)01()()()()()()(1)!nnnff xP xxxxxxxn,,a b 前 言:(目的和意义)目的:利用拉格朗日插值多项式()nP x求()f x的近似值 意义:数学原理 程序设计流程 本实验采用 CodeBlocks 的 C 文件编写。Lagrange 插
30、值源程序:#include?#include?#include?float?lagrange(float?*x,float?*y,float?xx,int?n)?int?i,j;?float?*a,yy=0.0;?a=(float?*)malloc(n*sizeof(float);?for(i=0;i=n-1;i+)?ai=yi;?for(j=0;j=20)?printf(Error!The?value?of?n?must?in?(0,20).);?getch();return?1;?if(n=0)?printf(Error!?The?value?of?n?must?in?(0,20).);?
31、getch();?return?1;?for(i=0;i=n-1;i+)?printf(x%d:,i);?scanf(%f,&xi);?printf(n);?for(i=0;i=n-1;i+)?printf(y%d:,i);scanf(%f,&yi);?printf(n);?printf(Input?xx:);?scanf(%f,&xx);?yy=lagrange(x,y,xx,n);?printf(x=%f,y=%fn,xx,yy);?getch();?实验结果、结论与讨论 问题 1(1)N=5 时,程序运行如下:N=10 时,程序运行如下:实验报告二 题目(摘要)前 言:(目的和意义)数学原理 程序设计流程 实验结果、结论与讨论 实验报告三 题目(摘要)前 言:(目的和意义)数学原理 程序设计流程 实验结果、结论与讨论 实验报告四 题目(摘要)0.75 前 言:(目的和意义)数学原理 程序设计流程 实验结果、结论与讨论
限制150内