计算方法实验指导书1

上传人:子 文档编号:42029321 上传时间:2018-05-31 格式:DOC 页数:33 大小:521.50KB
返回 下载 相关 举报
计算方法实验指导书1_第1页
第1页 / 共33页
计算方法实验指导书1_第2页
第2页 / 共33页
计算方法实验指导书1_第3页
第3页 / 共33页
计算方法实验指导书1_第4页
第4页 / 共33页
计算方法实验指导书1_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《计算方法实验指导书1》由会员分享,可在线阅读,更多相关《计算方法实验指导书1(33页珍藏版)》请在金锄头文库上搜索。

1、1第一章第一章 绪论绪论一、主要要求一、主要要求通过实验,认真理解和体会数值计算的稳定性、精确性与步长的关系。 二、主要结果回顾:二、主要结果回顾:1、算法:、算法:电子计算机实质上只会做加、减、乘、除等算术运算和一些逻辑运算,由 这些基本运算及运算顺序规定构成的解题步骤,称为算法它可以用框图、算法语言、 数学语言或自然语言来描述。用计算机算法语言描述的算法称为计算机程序。 (如 c 语言程序,c+语言程序,Matlab 语言程序等) 。 2、最有效的算法:、最有效的算法:应该运算量少,应用范围广,需用存储单元少,逻辑结构简单, 便于编写计算机程序,而且计算结果可靠。 3、算法的稳定性:、算法

2、的稳定性:一个算法如果输入数据有误差,而在计算过程中舍入误差不增长, 则称此算法是数值稳定的,否则称此算法为不稳定的。换句话说:若误差传播是可控制 的,则称此算法是数值稳定的,否则称此算法为不稳定的。 4、控制误差传播的几个原则:、控制误差传播的几个原则: 1)防止相近的两数相减; 2)防止大数吃小数; 3)防止接近零的数做除数; 4)要控制舍入误差的累积和传播; 5)简化计算步骤,减小运算次数,避免误差积累。 三、数值计算实验(以下实验都需利用三、数值计算实验(以下实验都需利用 Matlab 软件来完成)软件来完成) 实验实验 1.1(体会数值计算精度与步长关系的实验)(体会数值计算精度与步

3、长关系的实验) 实验目的:实验目的:数值计算中误差是不可避免的,要求通过本实验初步认识数值分析中两个重 要概念:截断误差和舍入误差,并认真体会误差对计算结果的影响。 问题提出:问题提出:设一元函数 f :RR,则 f 在 x0的导数定义为:hxfhxfxf h)()(lim)( 0000 实验内容实验内容:根据不同的步长可设计两种算法,计算 f 在 x0处的导数。 计算一阶导数的算法有两种:(1)hxfhxfxf)()()( 00 0(2)hhxfhxfxf2)()()( 00 0请给出几个计算高阶导数的近似算法,并完成如下工作: 1、对同样的 h,比较(1)式和(2)式的计算结果; 2、针对

4、计算高阶导数的算法,比较 h 取不同值时(1)式和(2)式的计算结果。2实验要求:实验要求:选择有代表性的函数 f(x)(最好多选择几个) ,利用 Matlab 提供的绘图工具 画出该函数在某区间的导数曲线 f(s)(x),再将数值计算的结果用 Matlab 画出来,认 真思考实验的结果。实验分析:实验分析:不论采用怎样的算法,计算结果通常都会有误差。 比如算法(1),由 Taylor 公式,知: )()( ! 2)( )()(3 02000hOxfhxhfxfhxf所以有 )()( ! 2)( )()(2 0000hOxfhxfhxfhxf利用上式来计算 f (x0),其截断误差为: )()

5、( ! 22 01hOxfhT所以误差是存在的,并且当步长 h 越来越小时,(1)的近似程度也越来越好。类似地可以分析(2)的截断误差为:)()(! 33 0)3(22hOxfhT上述截断误差的分析表明(2)是比(1)更好的算法,因为对步长 h(0,n=1,2,当 n=1 时,得:edxxeIx1101 1当 n2 时,由分部积分可得: n=2,3,11011nxn nnIdxexI另外,还有:1110101 ndxxdxexInxn n实验内容:实验内容:由递推关系 In=1-nIn-1,可得计算积分序列In的两种算法:算法一、算法一、直接使用递推公式得:eI1 1In=1-nIn-1 n=

6、2,3算法二、算法二、利用递推公式变形得:,.3 , 2101nnIIIn nN实验要求:实验要求:用上述两种算法分别在计算中采用 5 位、6 位和 7 位有效数字,请判断哪种4算法给出的结果更精确。 实验分析:实验分析:两种算法的优劣可能与你的第一感觉完全不同。 设算法一中 I1的误差为 e1,由 I1递推计算 In的误差为 en 算法二中 IN的误差为N,由 IN向前递推计算 In (n0输出失败信息n=1y1*y newton(x0) 即可求出 求方程 fc1=0 在 x0 附近的近似解 得出结果 ans =0.5018 3.1407 6.2832 9.42489图 3注:用 Newto

7、n 迭代法可求出多个根。具体做法:先用 fplot 命令作出函数的图形,再 根据图形给出不同的初始值 x0,最后通过调用 Newton 迭代法程序求出非线性方程的所 有根。 五、思考题五、思考题 思考题思考题 1、 在二分法中取区间中点,每次计算一次函数值。如果每次把区间三等份, 计算两个函数值,是否可以找出方程的根?给出它的算法。和二分法比较它的效率如何?思考题思考题 2、目的:找出一维搜索的最佳途径。 内容: 假设 f(x)=0 在a,b区间内只有一个根(可以是重根) ,求解该方程 等价于在 a,b 区间找|f(x)|的极小值点。设计一种寻找极小值点的方法,使得计算 f(x)的次数尽可能的

8、少,并完成数值实验。你能从理论上证明你的搜索方法最好吗?思考题思考题 3、目的:了解牛顿收敛法的结构和“局部”收敛性。 内容:牛顿法可以直接用来求解复数方程 z3-1=0,在复平面上它的三个根是z1*=1 ,。选择中心位于坐标原点边长为 2 的正方形内的点为.21 23*3 , 2iz初始值,把收敛到三个不同根的初始值分别标上不同的颜色。只要计算足够多的点, 你将得到关于牛顿收敛域的彩色图片。10第三章第三章 线性方程组的解法线性方程组的解法一、主要要求一、主要要求 编写方程组求解的通用程序:Jacobi 迭代、Seidel 迭代以及 SOR 迭代程序 二、主要结果回顾二、主要结果回顾 1、迭

9、代法:、迭代法: 它的基本思想是将线性方程组 AX=b 化为 : X=BX+f 再由此构造向量序列X(k): X(k+1)=BX (k)+f 若X(k)收敛至某个向量 x *,则可得向量 X *就是所求方程组 AX=b 的准确解. 线性方程组的迭代法主要有 Jocobi 迭代法、Seidel 迭代法和超松弛(Sor)迭代法. 2、收敛性判定定理:、收敛性判定定理: 定理定理 1:对任意初始向量 X(0)及任意向量 f,由此产生的迭代向量序列X(k)收敛的充要条件是。. 1)(B定理定理 2:若|B|=1.0e-6x0=y y=B*x0+fn=n+1输出输出x结束结束图 4 仿 Jacobi 迭

10、代法算法和 Seidel 迭代算法可给出超松驰迭代的算法(略)三、数值计算实验(以下实验都需用三、数值计算实验(以下实验都需用 Matlab 软件来完成)软件来完成) 实验实验 3.1(求解线性方程组实验) 实验目的:实验目的:掌握各种迭代法,比较各种迭代法的渐进收敛速度. 实验内容实验内容:令1、计算 A 的条件数 cond(A);(可选用任何一种范数) 2、上述方程组是否为病态方程组?若是,如何改变方程组的病态性? 3、分别用 Jacobi 迭代、Seidel 迭代与超松驰迭代求方程组 AX=b 的近似解;23106351710101768416104125A31332332b124、比较

11、 Jacobi 迭代、Seidel 迭代与超松驰迭代的渐进收敛速度。 注:上述实验分两次完成。四、具体操作见下例(以下实验都需用四、具体操作见下例(以下实验都需用 Matlab 软件来完成)软件来完成) 例:用 Jacobi 方法求解下列方程组,设 X(0)=0,精度为 10-6610272109103132121xxxxxxx解:1)先根据 Jacobi 算法编写 M文件:Jacobi(a,b,X0) 2)在 Matlab 命令窗口输入命令: a=10 -1 0;-1 10 -2;0 -1 10; b=9;7;6; Jacobi(a,b,0;0;0) 3)输出结果:y =0.99380.93

12、810.6938n = 9 注: n=9 为迭代次数。五、思考题五、思考题 思考题:目的:以 Hilbert 矩阵为例,研究处理病态问题可能遇到的困难。 内容: 设 Hilbert 矩阵为 ) 12/(1)2/(1) 1/(1/1)2/(15/14/13/1) 1/(14/13/12/1/13/12/11)(nnnnnnnhHijnLMMMMLLL它是一个对称正定矩阵,而且 cond(Hn)随着 n 的增加迅速增加。其逆矩阵 Hn-1=(aij),这里 )!()!()!1()!1(1()!1()!1() 1(2jninjijijninajiij1) 画出 ln(cond(Hn) n 之间的曲线

13、(可以用任何一种范数) 。你能猜出 ln(cond(Hn) n 之间有何种关系吗?提出你的猜测并想法验证。2) 设 D 是 Hn的对角元素开方构成的矩阵。11DHDHnn,不难看出它仍13然是对称矩阵,而且对角线元素都是 1。把 Hn变成nH的技术称为预处理(preconditioning)。画出 ln(cond(nH)/ cond(Hn) n 之间的曲线(可以用任何一种范数) 。对于预处理你能得出什么印象? 3) 对于 4n12,给出不同的右端项 b。分别用 X1=Hn-1b,bDHxn11,X2=D-1x 以及 X3=Hnb(这是 Matlab 的一条命令)求解 HnX=b,比较计算结果。

14、 4) 取不同的 n 并以 Hn的第一列为右端向量 b,同高斯塞德尔迭代求解 HnX=b,观察其收敛性。最后你能对于有关 Hilbert 矩阵的计算得出哪些结论。14第四章第四章 插值与拟合插值与拟合 一、主要要求一、主要要求 编写拉格朗日插值法、分段线性插值法、*三次样条插值通用程序(Matlab 自带)。 拉格朗日插值多项式: 二、主要结果回顾二、主要结果回顾 插值法是函数逼近的重要方法之一,有着广泛的应用 。在生产和实验中,函数 f(x)或者其表达式复杂不便于计算或者无表达式而只有函数在给定点的函数值(或其导数 值) ,此时我们希望建立一个简单的而便于计算的函数 (x),使其近似的代替

15、f(x),这 就是所谓的插值法.有很多种插值法,其中以拉格朗日(Lagrange)插值和牛顿(Newton)插值 为代表的多项式插值最有特点,常用的插值还有 Hermit 插值,分段插值和样条插值. 1、插值:、插值:求近似函数的方法:由实验或测量的方法得到所求函数 y=f(x) 在互异点 x0 , x1, . , xn 处的值 y0 , y1 , , yn , 构造一个简单函数 (x) 作为函数 y=f(x) 的近似表达式 :y= f(x) (x) 使 (x0)=y0 , (x1)=y1 , , (xn)=yn ,(*) 这类问题称为插值问题。 f(x) 称为被插值函数,(x) 称为插值函数, x0 , x1, . , xn 称为插值节点。(*)式称为插值条件。 2、Lagrange 插值公式插值公式 njnjiij ijijnjnjjjjjjjnjjnyxxxyxxxxxxxxxxxxxxxPxxxxxx x00011101110)().()().()().()().()

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

最新文档


当前位置:首页 > 生活休闲 > 科普知识

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