资源预览内容
第1页 / 共12页
第2页 / 共12页
第3页 / 共12页
第4页 / 共12页
第5页 / 共12页
第6页 / 共12页
第7页 / 共12页
第8页 / 共12页
第9页 / 共12页
第10页 / 共12页
亲,该文档总共12页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
数值分析实验报告模板篇一:数值分析实验报告数值分析实验报告12345篇二:数值分析实验报告实验报告一题目:非线性方程求解摘要:非线性方程的解析解通常很难给出,因此线性方程的数值解法就尤为重要。本实验采用两种常见的求解方法二分法和Newton法及改进的Newton法。利用二分法求解给定非线性方程的根,在给定的范围内,假设f在a,b上连续,fxf0;a=c;elseb=c;endR=b-a;%求出误差k=k+1;endx=c%给出解Newton法及改进的Newton法源程序:clear% 输入函数f=input%求解f的导数df=diff;%改进常数或重根数miu=2;%初始值x0x0=input;k=0;%迭代次数max=100;%最大迭代次数R=eval);%求解f,以确定初值x0时否就是解while 1e-8)x1=x0-miu*eval)/eval);R=x1-x0;x0=x1;k=k+1;if )max;%如果迭代次数大于给定值,认为迭代不收敛,重新输入初值ss=input;if strcmpx0=input;k=0;elsebreakendendendk;%给出迭代次数x=x0;%给出解结果分析和讨论:x2?0在1,2内的根。 1. 用二分法计算方程sinx?2计算结果为x= ;f= -;k=18;由f知结果满足要求,但迭代次数比较多,方法收敛速度比较慢。2. 用二分法计算方程x3?x?1?0在1,内的根。计算结果为x= ;f= ;k=17;由f知结果满足要求,但迭代次数还是比较多。3. 用Newton法求解下列方程a) xex?1?0 x0=;计算结果为x= ;f= ;k=4;由f知结果满足要求,而且又迭代次数只有4次看出收敛速度很快。b) x3?x?1?0 x0=1;c) 2?0 x0=, x0=;当x0=时,计算结果为x= ;f= -;k=4;由f知结果满足要求,而且又迭代次数只有4次看出收敛速度很快,实际上该方程确实有真解x=。当x0=时,计算结果为x= ;f=0;k=9;由f知结果满足要求,实际上该方程确实有真解x=,但迭代次数增多,实际上当取x0时,x1,就变成了方程的另一个解,这说明Newton法收敛与初值很有关系,有的时候甚至可能不收敛。4. 用改进的Newton法求解,有2重根,取?22?0 x0=;并与3.中的c)比较结果。当x0=时,程序死循环,无法计算,也就是说不收敛。改?时,结果收敛为x=;f=;k=16;显然这个结果不是很好,而且也不是收敛至方程的2重根上。当x0=时,结果收敛为x= ;f= ;k=4;这次达到了预期的结果,这说明初值的选取很重要,直接关系到方法的收敛性,实际上直接用Newton法,在给定同样的条件和精度要求下,可得其迭代次数k=15,这说明改进后的Newton法法速度确实比较快。结论:对于二分法,只要能够保证在给定的区间内有根,使能够收敛的,当时收敛的速度和给定的区间有关,二且总体上来说速度比较慢。Newton法,收敛速度要比二分法快,但是最终其收敛的结果与初值的选取有关,初值不同,收敛的结果也可能不一样,也就是结果可能不是预期需要的结果。改进的Newton法求解重根问题时,如果初值不当,可能会不收敛,这一点非常重要,当然初值合适,相同情况下其速度要比Newton法快得多。在编制程序过程中,需事先规定迭代的次数,若超过这个次数,还不收敛,则停止迭代,另选初值。篇三:数值分析实验报告5篇误差分析实验(问题)实验目的:算法有“优”与“劣”之分,问题也有“好”与“坏”之别。对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题。通过本实验可获得一个初步体会。数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。问题提出:考虑一个高次的代数多项式p?k?120显然该多项式的全部根为1,2,20共计20个,且每个根都是单重的。现考虑该多项式的一个扰动p?x19?0其中?是一个非常小的数。这相当于是对()中x19的系数作一个小的扰动。我们希望比较()和()根的差别,从而分析方程()的解对扰动的敏感性。实验内容:为了实现方便,我们先介绍两个Matlab函数:“roots”和“poly”。u?roots其中若变量a存储n+1维的向量,则该函数的输出u为一个n维的向量。设a的元素依次为a1,a2,?,an?1,则输出u的各分量是多项式方程a1xn?a2xn?1?anx?an?1?0 的全部根;而函数b?poly的输出b是一个n+1维变量,它是以n维变量v的各分量为根的多项式的系数。可见“roots”和“poly”是两个互逆的运算函数。ess?; ve?zeros; ve?ess;roots?ve)上述简单的Matlab程序便得到()的全部根,程序中的“ess”即是()中的?。实验要求:(1)选择充分小的ess,反复进行上述实验,记录结果的变化并分析它们。如果扰动项的系数?很小,我们自然感觉()和()的解应当相差很小。计算中你有什么出乎意料的发现?表明有些解关于如此的扰动敏感性如何? (2)将方程()中的扰动项改成?x18或其它形式,实验中又有怎样的现象出现?(3)(选作部分)请从理论上分析产生这一问题的根源。注意我们可以将方程()写成展开的形式。p?x20?x19?0同时将方程的解x看成是系数?的函数,考察方程的某个解关于?的扰动是否敏感,与研究它关于?的导数的大小有何关系?为什么?你发现了什么现象,哪些根关于?的变化更敏感?思考题一:(上述实验的改进)在上述实验中我们会发现用roots函数求解多项式方程的精度不高,为此你可以考虑用符号函数solve来提高解的精确度,这需要用到将多项式转换为符号多项式的函数poly2sym,函数的具体使用方法可参考Matlab的帮助。实验过程:程序:a=poly; rr=roots; for n=2:21 nfor m=1:9ess=10;ve=zeros;ve=ess;r=roots;-6-ms=max) end end利用符号函数:(思考题一) a=poly;y=poly2sym; rr=solve for n=2:21 nfor m=1:8ess=10;ve=zeros;ve=ess;a=poly+ve;y=poly2sym;r=solve;-6-ms=max) end end数值实验结果及分析:讨论:利用这种方法进行这类实验,可以很精确的扰动敏感性的一般规律。即当对扰动项的系数越来越小时,对其多项式扰动的结果也就越来越小,即扰动敏感性与扰动项的系数成正比,扰动项的系数越大,对其根的扰动敏感性就越明显,当扰动的系数一定时,扰动敏感性与扰动的项的幂数成正比,扰动的项的幂数越高,对其根的扰动敏感性就越明显。实验总结:利用MATLAB来进行病态问题的实验,虽然其得出的结果是有误差的,但是可以很容易的得出对一个多次的代数多项式的其中某一项进行很小的扰动,对其多项式的根会有一定的扰动的,所以对于这类病态问题可以借助于MATLAB来进行问题的分析。插值法实验(多项式插值的振荡现象) 问题提出:考虑一个固定的区间上用插值逼近一个函数。显然拉格朗日插值中使用的节点越多,插值多项式的次数就越高。 我们自然关心插值多项式的次数增加时,L是否也更加靠近被逼近的函数。龙格给出了一个极著名例子。设区间-1,1上函数f=1实验内容:考虑区间-1,1的一个等距划分,分点为:x=-1+2i/n,i=0,1,2?,n泽拉格朗日插值多项式为:L=l/2 ) i=0,1,?n其中l, i=0,1,?n,n是n次拉格朗日插值基函数。实验要求: 选择不断增大的分点数目n=2,3?,画出f及插值多项式函数L在-1,1上的图象,比较分析实验结果。(2)选择其它的函数,例如定义在区间-5,5上的函数 h=x/ , g=arctanx 重复上述的实验看其结果如何。(3)区间a,b上切比雪夫点的定义为:xk=(b+a)/2+/2)cos/),k=1,2,n+1 以x1,x2x为插值节点构造上述各函数的拉格朗日插值多项式,比较其结果。实验过程:程序:多项式插值的震荡现象(实验) for m=1:6subplot%把窗口分割成2*3大小的窗口 largrang%对largrang函数进行运行 if m=1title elseif m=2title elseif m=3title elseif m=4title elseif m=5title elseif m=6titleend%对每个窗口分别写上标题为插值点的个数 end
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号