计算方法实验报告_第1页
计算方法实验报告_第2页
计算方法实验报告_第3页
计算方法实验报告_第4页
计算方法实验报告_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算方法》实验报告专业班级:学生姓名学生学号实验名称:实验一:非线性方程求根迭代法实验二:求解线性方程组(1)实验三:求解线性方程组(2)实验四:数值积分实验五:数值微分实验一:一、实验名称非线性方程求根迭代法二、实验目的(1) 熟悉非线性方程求根简单迭代法,牛顿迭代及牛顿下山法(2) 能编程实现简单迭代法,牛顿迭代及牛顿下山法(3) 认识选择迭代格式的重要性(4) 对迭代速度建立感性的认识;分析实验结果体会初值对迭代的影响三、实验内容用牛顿下山法解方程X3-x-1=0(初值为0.6)输入:初值,误差限,迭代最大次数,下山最大次数输出:近似根各步下山因子四、基本原理(计算公式)求非线性方程组的解是科学计算常遇到的问题,有很多实际背景.各种算法层出不穷,其中迭代是主流算法。只有建立有效的迭代格式,迭代数列才可以收敛于所求的根。因此设计算法之前,对于一般迭代进行收敛性的判断是至关重要的。牛顿法也叫切线法,是迭代算法中典型方法,只要初值选取适当,在单根附近,牛顿法收敛速度很快,初值对于牛顿迭代至关重要。当初值选取不当可以采用牛顿下山算法进行纠正。一般迭代:x (x)x(x)of(x)=ok+1 k牛顿公式:xk+1f(xk)牛顿公式:xk+1kf(x丿k牛顿下山公式:x=x牛顿下山公式:x=x一九k+1 kf(xk)kf,(x丿k下山因子九=下山因子九=1,,-222下山条件If(x)lvlf(x)1k+1 k五、算法设计与实现(流程图)牛顿下山算法见流程图:辅入备e,牛顿下山算法见流程图:辅入备e,乳M输出斗■垮出专异标恵:图3.2牛顿下山算法流程图这个问题的关键之处不是公式的复杂性,而是如何对算法的实现提供一个条理清晰且方法合理的if嵌套,这个算法中运用了许多判断,如何进行其判断结果的返回将是解决这个问题的重中之重。把这个问题弄清楚,再结合本身并不复杂的算法公式,这个问题就可解了。这个程序开始花费了我很长时间搞清楚如何进行判断返回的运算来解决if语句嵌套。

七、输入与输出%%;?2■■401数熱.325购次次:1」0.大大为曰¥專根值合襁山崔初秽下方字刀值:0』精凰E1.00001迭武曇大次数=10Q下山巖大茨数:100X0-O.6, xl=17.9X0--O.6,xl=9.25X0--O.6, xl=4.925X0--O.6,xl=2.7625X0-O.6,xl=1.68125方程根为=1-32472图2八、结果讨论和分析可见,该程序的输出分为两个情况,两者的差别是初值选取的不同,所以说,牛顿法的收敛性依赖于初值x0的选取,如果x0偏离x的准确值较远,则牛顿法将可能发散。所以要引入牛顿下山法来避免这一情况。所以,当图2情况下,初值为0.6的时候,会进行牛顿下山法使结果可以进行再次迭代,解决了牛顿法初值选取问题。实验二:一、实验名称求解线性方程组Qauss-Seidel迭代法)二、实验目的熟悉求解线性方程组的有关理论和方法;能编程实现雅可比及高斯-塞德尔迭代法、列主元高斯消去法、约当消去,追赶法通过测试,进一步了解各种方法的优缺点根据不同类型的方程组,选择合适的数值方法三、实验内容10x—x—2x=7.2123用Gauss-Seidel迭代法求解方程组彳—x+10x—2x=8.3用Gauss-Seidel迭代法求解方程组彳1 2 3—x一x+5x=4.21 2 3输入:系数矩阵A,最大迭代次数N初始向量,误差限e输出:解向量四、基本原理(计算公式)无论是三次样条还是拟合问题最终都归结为线性方程组,求解线性方程组在数值分析中非常重要,在工程计算中也不容忽视。线性方程组大致分迭代法和直接法。只有收敛条件满足时,才可以进行迭代。雅可比及高斯-塞德尔是最基本的两类迭代方法,最大区别是迭代过程中是否引用新值进行剩下的计算。消元是最简单的直接法,并且也十分有效的,列主元高斯消去法对求解一般的线性方程组都适用,同时可以用来求矩阵对应的行列式。约当消去实质是经过初等行变换将系数矩阵化为单位阵,主要用来求矩阵的逆。在使用直接法,要注意从空间、时间两方面对算法进行优化。高斯-塞德尔迭代:x(k+高斯-塞德尔迭代:x(k+1)iaii<i迟ax(k+i)—ijjj=1i=1,2,...,n五、算法设计与实现(流程图,个人理解)图4.1G-S迭代算法流程图个人理解:该算法最考验人的地方在于对运算公式的理解,这个公式相对于其他几个实验来说是最难的,其原因在于要用到多重嵌套循环,而且其中对数组的运用对于很多同学来说也是比较困难的。只要将其中依次将数组的值的和对另一个数组赋值的原理搞清楚以后,这个问题将很容易解决,所以,这一点,也是这个程序最考验人的地方。六、输入与输出嘉入矩阵行列瓦勰个数为1寫个数为訂个数为售个数为1筋个数为幕7个数为辭个数为韧个数为1幕10个数为1幕11个数为幕12个数为.2£01^1.R00000.|00000300000pessanykeytocontinue議入矩阵行列式F計弁数为卜个数为毎个数为鮎个数为4篤5个数为魯个数为爲个数为渐个数为伽个数为4窜価个数为备“个数为第空个数为聖代失败Pressanykeytocontinue七、结果讨论和分析对于求解行列式来说,一般的方法很难求出,只能通过之前步骤的结果一步步地将结果求得,在这些迭代中,选取一个好的迭代方式,既避免了可能存在的发散情况,又加快了收敛次数。上两图说明高斯赛德尔迭代对于某些迭代来说还是有缺陷的,并不能解出有效结果。实验三:一、实验名称求解线性方程组(选主元高斯消去)二、实验目的1)熟悉求解线性方程组的有关理论和方法;2)能编程实现雅可比及高斯-塞德尔迭代法、列主元高斯消去法、约当消去,追赶法3)通过测试,进一步了解各种方法的优缺点4)根据不同类型的方程组,选择合适的数值方法三、实验内容3 -2 14用选主元高斯消去求行列式值4-32 8四、基本原理(计算公式)提示:A.B.IA\=a11an1aA.B.IA\=a11an1a1nann=...=(-1)“b11...b\n••• ••:=(-1)mb11...b11nn

b

nn消元结果直接存储在系数矩阵中C.当消元过程发生两行对调的情况为偶数次时,行列式值为对角线乘积,否则为对角线乘积的相反数[A1[A11In【IIA-1_1-11_■-2-16A=113和A=4 0 52一32一6一11提示:五、算法设计与实现(流程图)裔入黑Jx11丨|<千丨庶臺元裔入黑Jx11丨|<千丨庶臺元I述3=蹲©严妤3■娜-九雌jssk+1,..Tfn;i=1-k-1.k+1,..n~4Kk衬图4.3列主元的高斯消去流程图六、个人理解:我感觉选主元高斯消去编程稍微有一些困难,难在对公式的理解,还有对数组的处理。可能我从一开始就理解有误,只是把握住了其中心思想,但是对其函数的具体实现还是存在一些偏差,导致输出结果并不是很理想。七、输入与输出

八、结果讨论和分析感觉我这个程序运行还是有些问题,无法实现某些功能,仅仅能够解决行列式的最终求值问题。实验四:一、实验名称数值积分二、实验目的熟悉复化梯形方法、复化Simpson方法、梯形递推算法、龙贝格算法;能编程实现复化梯形方法、复化Simpson方法、梯形递推算法、龙贝格算法;理解并掌握自适应算法和收敛加速算法的基本思想;分析实验结果体会各种方法的精确度,建立计算机求解定积分问题的感性认识三、实验内容sinx(1)用龙贝格算法计算J1 dx0x输入:积分区间,误差限输出:序列Tn,Sn,Cn,Rn及积分结果四、基本原理(计算公式)在许多实际问题中,常常需要计算定积分Jbf(x)dx的值。根据微积分学基本定理,若a被积函数f(x)在区间[a,b]上连续,只要能找到f(x)的一个原函数F(x),便可利用牛顿-莱布尼兹公式Af(x)二F(b)-F(a)求得积分值。a但是在实际使用中,往往遇到如下困难,而不能使用牛顿-莱布尼兹公式。找不到用初等函数表示的原函数虽然找到了原函数,但因表达式过于复杂而不便计算(3) f(x)是由测量或计算得到的表格函数由于以上种种困难,有必要研究积分的数值计算问题。利用插值多项式pn由于以上种种困难,有必要研究积分的数值计算问题。利用插值多项式pnx)”f(x)则积分Jbf(x)dx转化为fbp(x)dx,显然易算。fbp(x治称为插值型求积公式。最简单的插值型求积公式是梯形公式和Simpson公式,。an当求积结点提供较多,可以分段使用少结点的梯形公式和Simpson公式,并称为复化梯形公式、复化Simpson公式。如步长未知,可以通过误差限的控制用区间逐次分半的策略自动选取步长的方法称自适应算法。梯形递推公式给出了区间分半前后的递推关系。由梯形递推公式求得梯形序列,相邻序列值作线性组合得Simpson序列,Simpson序列作线性组合得柯特

斯序列,柯特斯序列作线性组合的龙贝格序列。右冬込1<£,则输出R2;否则…依此类推。如此加工数据的过程叫龙贝格算法,如下图所示:ARomberg算法GGq⑥⑨03)\\\③⑤⑧(12)\\\\①②④⑦M6J24001"1234复化梯形公式GGq⑥⑨03)\\\③⑤⑧(12)\\\\①②④⑦M6J24001"1234复化梯形公式Tn=2h[f(xo)+25—1f(x)+f(xnk=1复化Simpson公式S :兀)+f(X)+4艺f(xn6 0 k nk=1kMk=0 k+2梯形递推公式T2n=Tn+2£1/(〔丿k=0加权平均公式:与21=加权平均公式:与21=S4-1 "42S -S=Cnn=C42—1 n43C-C=Rnn=r43一1 n龙贝格算法大大加快了误差收敛的速度,由梯形序列O(h2)提高到龙贝格序列的O(h8)五、算法设计与实现(流程图)(1)龙贝格算法见流程图图2.2梯形递推算法流程图图图2.2梯形递推算法流程图图2.3龙贝格算法流程图六、个人理解龙贝格算法其实是在梯形递推的基础之上生成的一种精度高,而且收敛速度也较快的一种算法。对于梯形算法来说,程序比较容易编写,而龙贝格算法,程序中需要注意用龙贝格算法加速收敛的时候如何处理判断以后生成的返回值才能使程序正常运行。而且,对于本题的特殊性,对于积分的函数中存在分母为x的情况,在此情况下,就必须要讨论X为0溢出的情况,刚开始编好的程序总是出现莫名其妙的输出,后来才发现是出现了分母为0的情况。所以,在编程中,要注意细节,往往一个很好的程序,某一个不起眼的细节很可能影响整个程序的正常运行。还有最后编写防止溢出的操作函数的时候,==不小心写为=,也找了很久的错误。这些都是非常低级的错误,但是因为粗心,仍然出现了。所以,以后编程要认真。七、输入与输出谕入积分下限输入积分上限备入精度帜分f直为946074?ressanpkeytocontinue八、结果讨论和分析龙贝格算法可以达到预期目的,求得所需要的结果。但无法分析出是否节约了时间和效率但绝对是个可行的办法。

实验五:一、实验名称微分方程的差分方法二、实验目的(1)熟悉数值微分中Euler法,改进Euler法,Rung-Kutta方法;2) 能编程实现Euler法,改进Euler法,Rung-Kutta方法;3) 通过实验结果分析各个算法的优缺点;(4)明确步长对算法的影响并理解变步长的Rung-Kutta方法三、实验内容(I)/(I)/C-yG)=10<x<1取h=0.1时用Euler法,改进Euler法,Rung-Kutta方法求其数值解并与精确解进行比较。输入:求解区间,初值,数值解个数输出:数值解四、基本原理(计算公式)在许多科学技术问题中,建立的模型常常以常微分方程的形式表示。然而,除了少数特殊类型的常微分方程能用解析方法求其精确解外,要给出一般方程解析解的表达式是困难的。所以只能用近似方法求其数值解,在实际工作中常用计算机求常微分方程的数值解。所x<x〈…〈x=b处的未知函数y(x)近似值y,y,…丫,即找到一系列离散点(x,y)(x,y)谓常微分方程的数值解即对于常微分方程初值问题/y'=谓常微分方程的数值解即对于常微分方程初值问题/y'=f(x,y)b(%)=儿计算出在系列节点a=01n01n0011(x,y)・・・(x,y)近似满足常微分方程。数值解法的基本思想用差商代替导数,实现连续22nn问题离散化,选取不同的差商代替导数可以得到不同公式。改进欧拉公式是常用方法之一,包括预测和校正两步。先用欧拉公式进行预报,再将预报值代入梯形公式进行校正,从而达到二阶精度。通过龙格-库塔法我们可以获得更高精度。经典龙格-库塔法即在区间[x,x]取四点,并对这四点的斜率进行加权平均作为平均斜nn+1率,通过泰勒公式寻找使局部截断误差为0(h»(即4阶精度)的参数满足条件。h改进的欧拉公式: 预测y=y+(f(x,y)+f(x,y))n+1 n2 nn n+1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论