哈工大_数值分析上机实验报告

上传人:新** 文档编号:511402296 上传时间:2023-06-09 格式:DOC 页数:47 大小:285.50KB
返回 下载 相关 举报
哈工大_数值分析上机实验报告_第1页
第1页 / 共47页
哈工大_数值分析上机实验报告_第2页
第2页 / 共47页
哈工大_数值分析上机实验报告_第3页
第3页 / 共47页
哈工大_数值分析上机实验报告_第4页
第4页 / 共47页
哈工大_数值分析上机实验报告_第5页
第5页 / 共47页
点击查看更多>>
资源描述

《哈工大_数值分析上机实验报告》由会员分享,可在线阅读,更多相关《哈工大_数值分析上机实验报告(47页珍藏版)》请在金锄头文库上搜索。

1、实验报告一题目:非线性方程求解摘要:非线性方程的解析解通常很难给出,因此线性方程的数值解法就尤为重要。本实验采用两种常见的求解方法二分法和Newton法及改进的Newton法。前言:目的和意义掌握二分法与Newton法的基本原理和应用。数学原理:对于一个非线性方程的数值解法很多。在此介绍两种最常见的方法:二分法和Newton法。对于二分法,其数学实质就是说对于给定的待求解的方程f,其在a,b上连续,ff0,且f在a,b内仅有一个实根x*,取区间中点c,若,则c恰为其根,否则根据ff0是否成立判断根在区间a,c和c,b中的哪一个,从而得出新区间,仍称为a,b。重复运行计算,直至满足精度为止。这就

2、是二分法的计算思想。Newton法通常预先要给出一个猜测初值x0,然后根据其迭代公式产生逼近解x*的迭代数列xk,这就是Newton法的思想。当x0接近x*时收敛很快,但是当x0选择不好时,可能会发散,因此初值的选取很重要。另外,若将该迭代公式改进为其中r为要求的方程的根的重数,这就是改进的Newton法,当求解已知重数的方程的根时,在同种条件下其收敛速度要比Newton法快的多。程序设计:本实验采用Matlab的M文件编写。其中待求解的方程写成function的方式,如下function y=f;y=-x*x-sin;写成如上形式即可,下面给出主程序。二分法源程序:clear%给定求解区间b

3、=1.5;a=0;%误差 R=1;k=0;%迭代次数初值while 5e-6 ; c=/2; if f12*f120; a=c; else b=c; end R=b-a;%求出误差k=k+1;endx=c%给出解Newton法及改进的Newton法源程序:clear% 输入函数f=input,s%求解f的导数df=diff;%改进常数或重根数miu=2;%初始值x0x0=input;k=0;%迭代次数max=100;%最大迭代次数R=evalsubs;%求解f,以确定初值x0时否就是解while abs1e-8 x1=x0-miu*evalsubs/evalsubs; R=x1-x0; x0=

4、x1; k=k+1;if evalsubs; break end if kmax;%如果迭代次数大于给定值,认为迭代不收敛,重新输入初值 ss=input,s; if strcmp x0=input; k=0; else break end endendk;%给出迭代次数x=x0;%给出解结果分析和讨论:1. 用二分法计算方程在1,2内的根。计算结果为x= 1.40441513061523;f= -3.797205105904311e-007;k=18;由f知结果满足要求,但迭代次数比较多,方法收敛速度比较慢。2. 用二分法计算方程在1,1.5内的根。计算结果为x= 1.32471847534

5、180;f= 2.209494846194815e-006;k=17;由f知结果满足要求,但迭代次数还是比较多。3. 用Newton法求解下列方程a) x0=0.5;计算结果为x=;f= 2.220446049250313e-016;k=4;由f知结果满足要求,而且又迭代次数只有4次看出收敛速度很快。b) x0=1;c) x0=0.45, x0=0.65; 当x0=0.45时,计算结果为x= 0.49999999999983;f= -8.362754932994584e-014;k=4;由f知结果满足要求,而且又迭代次数只有4次看出收敛速度很快,实际上该方程确实有真解x=0.5。当x0=0.6

6、5时,计算结果为x= 0.50000000000000;f=0;k=9;由f知结果满足要求,实际上该方程确实有真解x=0.5,但迭代次数增多,实际上当取x00.68时,x1,就变成了方程的另一个解,这说明Newton法收敛与初值很有关系,有的时候甚至可能不收敛。4. 用改进的Newton法求解,有2重根,取 x0=0.55;并与3.中的c比较结果。当x0=0.55时,程序死循环,无法计算,也就是说不收敛。改时,结果收敛为x=0.50000087704286;k=16;显然这个结果不是很好,而且也不是收敛至方程的2重根上。当x0=0.85时,结果收敛为x= 1.00000000000489;f=

7、 2.394337647718737e-023;k=4;这次达到了预期的结果,这说明初值的选取很重要,直接关系到方法的收敛性,实际上直接用Newton法,在给定同样的条件和精度要求下,可得其迭代次数k=15,这说明改进后的Newton法法速度确实比较快。结论: 对于二分法,只要能够保证在给定的区间内有根,使能够收敛的,当时收敛的速度和给定的区间有关,二且总体上来说速度比较慢。Newton法,收敛速度要比二分法快,但是最终其收敛的结果与初值的选取有关,初值不同,收敛的结果也可能不一样,也就是结果可能不时预期需要得结果。改进的Newton法求解重根问题时,如果初值不当,可能会不收敛,这一点非常重要

8、,当然初值合适,相同情况下其速度要比Newton法快得多。实验报告二题目: Gauss列主元消去法摘要:求解线性方程组的方法很多,主要分为直接法和间接法。本实验运用直接法的Guass消去法,并采用选主元的方法对方程组进行求解。前言:目的和意义1. 学习Gauss消去法的原理。2. 了解列主元的意义。3. 确定什么时候系数阵要选主元数学原理:由于一般线性方程在使用Gauss消去法求解时,从求解的过程中可以看到,若=0,则必须进行行交换,才能使消去过程进行下去。有的时候即使0,但是其绝对值非常小,由于机器舍入误差的影响,消去过程也会出现不稳定得现象,导致结果不正确。因此有必要进行列主元技术,以最大

9、可能的消除这种现象。这一技术要寻找行r,使得并将第r行和第k行的元素进行交换,以使得当前的的数值比0要大的多。这种列主元的消去法的主要步骤如下:1. 消元过程对k=1,2,n-1,进行如下步骤。1) 选主元,记若很小,这说明方程的系数矩阵严重病态,给出警告,提示结果可能不对。2) 交换增广阵A的r,k两行的元素。 3) 计算消元 2. 回代过程对k= n, n-1,1,进行如下计算至此,完成了整个方程组的求解。程序设计:本实验采用Matlab的M文件编写。Gauss消去法源程序:cleara=inputnb=inputnn=length;A=a bx=zeros;%函数主体for k=1:n-

10、1;%是否进行主元选取if absAyipusilong;%事先给定的认为有必要选主元的小数yzhuyuan=1; else yzhuyuan=0;end if yzhuyuan; %选主元 t=A; for r=k+1:n; if absAabs p=r; else p=k; end end %交换元素 if p=k; for q=k:n+1; s=A; A=A; A=s; end end end %判断系数矩阵是否奇异或病态非常严重if absA yipusilongdispend %计算消元,得三角阵 for r=k+1:n; m=A/A; for q=k:n+1; A=A-A*m; e

11、nd endend %求解x x=A/A; for k=n-1:-1:1; s=0; for r=k+1:n; s=s+A*x; end t=A-s x=A-s/Aend结果分析和讨论:例:求解方程。其中为一小数,当时,分别采用列主元和不列主元的Gauss消去法求解,并比较结果。记Emax为求出的解代入方程后的最大误差,按要求,计算结果如下:当时,不选主元和选主元的计算结果如下,其中前一列为不选主元结果,后一列为选主元结果,下同。 0.99999934768391 0.99999934782651 2.00000217421972 2.00000217391163 2.99999760859451 2.99999760869721Emax=,0此时,由于不是很小,机器误差就不是很大,由Emax可以看出不选主元的计算结果精度还可以,因此此时可以考虑不选主元以减少计算量。当时,不选主元和选主元的计算结果如下 1.00001784630877 0.99999999999348 1.99998009720807 2.00000000002174 3.00000663424731 2.99999999997609Emax= 2.036758973744668e-005,0此时由Emax可以看出不选主元的计算精度就不好了,误差开

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号