实验一误差传与算法稳定性
数值分析实验指导书
数值分析课程实验指导书应用科学学院数学系目录前言 (1)第一部分数值实验报告格式 (1)第二部分数值实验报告范例 (2)第三部分数值实验 (6)数值实验一 (6)数值实验二 (8)数值实验三 (10)数值实验四 (12)数值实验五 (13)数值实验六 (16)数值实验七 (17)第四部分MATLAB入门 (19)前言该实验指导书是《数值分析》课程的配套数值实验教材。
《数值分析》是理工科大学本科生与硕士研究生的必修课程,学习本课程的最终目的,是用计算机解决科学和工程实际中的数值计算问题,因此熟练地在计算机上实现算法是必备的基本技能。
数值实验是数值分析课程中不可缺少的部分,利用计算机进行数值实验,以消化巩固所学的内容,增加对算法的可靠性、收敛性、稳定性及效率的感性认识,体会和重视算法在计算机上实验时可能出现的问题。
学生通过选择算法、编写程序、分析数值结果、写数值实验报告等环节的综合训练,逐步掌握数值实验的方法和技巧,获得各方面的数值计算经验,培养学生运用所学算法解决实际问题和进行理论分析的能力。
该实验指导书由王希云、刘素梅、王欣洁、李晓峰等老师编写。
第一部分数值实验报告格式一个完整的实验,应包括数据准备、理论基础、实验内容及方法,最终对实验结果进行分析,以达到对理论知识的感性认识,进一步加深对相关算法的理解,数值实验以实验报告形式完成,实验报告格式如下:一、实验名称实验者可根据报告形式需要适当写出。
二、实验目的及要求首先要求做实验者明确,为什么要做某个实验,实验目的是什么,做完该实验应达到什么结果,在实验过程中的注意事项,实验方法对结果的影响也可以以实验目的的形式列出。
三、算法描述(实验原理与基础理论)数值实验本身就是为了加深对基础理论及方法的理解而设置的,所以要求将实验涉及到的理论基础,算法原理详尽列出。
四、实验内容实验内容主要包括实验的实施方案、步骤、实验数据准备、实验的算法以及可能用到的仪器设备。
计算方法实验指导书
第一章 绪论一、主要要求通过实验,认真理解和体会数值计算的稳定性、精确性与步长的关系。
二、主要结果回顾:1、算法:电子计算机实质上只会做加、减、乘、除等算术运算和一些逻辑运算,由这些基本运算及运算顺序规定构成的解题步骤,称为算法.它可以用框图、算法语言、数学语言或自然语言来描述。
用计算机算法语言描述的算法称为计算机程序。
(如c —语言程序,c++语言程序,Matlab 语言程序等)。
2、最有效的算法:应该运算量少,应用范围广,需用存储单元少,逻辑结构简单,便于编写计算机程序,而且计算结果可靠。
3、算法的稳定性:一个算法如果输入数据有误差,而在计算过程中舍入误差不增长,则称此算法是数值稳定的,否则称此算法为不稳定的。
换句话说:若误差传播是可控制的,则称此算法是数值稳定的,否则称此算法为不稳定的。
4、控制误差传播的几个原则: 1)防止相近的两数相减; 2)防止大数吃小数;3)防止接近零的数做除数;4)要控制舍入误差的累积和传播;5)简化计算步骤,减小运算次数,避免误差积累。
三、数值计算实验(以下实验都需利用Matlab 软件来完成) 实验1.1(体会数值计算精度与步长关系的实验)实验目的:数值计算中误差是不可避免的,要求通过本实验初步认识数值分析中两个重要概念:截断误差和舍入误差,并认真体会误差对计算结果的影响。
问题提出:设一元函数f :R →R ,则f 在x 0的导数定义为:hx f h x f x f h )()(lim)('0000-+=→实验内容:根据不同的步长可设计两种算法,计算f 在x 0处的导数。
计算一阶导数的算法有两种:hx f h x f x f )()()('000-+≈(1)hh x f h x f x f 2)()()('000--+≈(2)请给出几个计算高阶导数的近似算法,并完成如下工作: 1、对同样的h ,比较(1)式和(2)式的计算结果;2、针对计算高阶导数的算法,比较h 取不同值时(1)式和(2)式的计算结果。
数值计算基础实验报告(3篇)
第1篇一、实验目的1. 理解数值计算的基本概念和常用算法;2. 掌握Python编程语言进行数值计算的基本操作;3. 熟悉科学计算库NumPy和SciPy的使用;4. 分析算法的数值稳定性和误差分析。
二、实验内容1. 实验环境操作系统:Windows 10编程语言:Python 3.8科学计算库:NumPy 1.19.2,SciPy 1.5.02. 实验步骤(1)Python编程基础1)变量与数据类型2)运算符与表达式3)控制流4)函数与模块(2)NumPy库1)数组的创建与操作2)数组运算3)矩阵运算(3)SciPy库1)求解线性方程组2)插值与拟合3)数值积分(4)误差分析1)舍入误差2)截断误差3)数值稳定性三、实验结果与分析1. 实验一:Python编程基础(1)变量与数据类型通过实验,掌握了Python中变量与数据类型的定义方法,包括整数、浮点数、字符串、列表、元组、字典和集合等。
(2)运算符与表达式实验验证了Python中的算术运算、关系运算、逻辑运算等运算符,并学习了如何使用表达式进行计算。
(3)控制流实验学习了if-else、for、while等控制流语句,掌握了条件判断、循环控制等编程技巧。
(4)函数与模块实验介绍了Python中函数的定义、调用、参数传递和返回值,并学习了如何使用模块进行代码复用。
2. 实验二:NumPy库(1)数组的创建与操作通过实验,掌握了NumPy数组的基本操作,包括创建数组、索引、切片、排序等。
(2)数组运算实验验证了NumPy数组在数学运算方面的优势,包括加、减、乘、除、幂运算等。
(3)矩阵运算实验学习了NumPy中矩阵的创建、操作和运算,包括矩阵乘法、求逆、行列式等。
3. 实验三:SciPy库(1)求解线性方程组实验使用了SciPy库中的线性代数模块,通过高斯消元法、LU分解等方法求解线性方程组。
(2)插值与拟合实验使用了SciPy库中的插值和拟合模块,实现了对数据的插值和拟合,并分析了拟合效果。
计算方法与计算 实验一误差分析
% 输出的量--每次迭代次数k和迭代值xk,
%
--每次迭代的绝对误差juecha和相对误差xiangcha,
误差分析
误差问题是数值分析的基础,又是数值分析中一个困难的课题。在实际计算 中,如果选用了不同的算法,由于舍入误差的影响,将会得到截然不同的结果。 因此,选取算法时注重分析舍入误差的影响,在实际计算中是十分重要的。同时, 由于在数值求解过程中用有限的过程代替无限的过程会产生截断误差,因此算法 的好坏会影响到数值结果的精度。 一、实验目的
因为运行后输出结果为: y 1.370 762 168 154 49, yˆ =1.370 744 664 189
38, R 1.750 396 510 491 47e-005, WU= 1.782 679 830 970 664e-005 104 . 所
以, yˆ 的绝对误差为 10 4 ,故 y
③ 运行后输出计算结果列入表 1–1 和表 1-2 中。
④ 将算法 2 的 MATLAB 调用函数程序的函数分别用 y1=15-2*x^2 和
y1=x-(2*x^2+x-15)/(4*x+1)代替,得到算法 1 和算法 3 的调用函数程序,将其保
存,运行后将三种算法的前 8 个迭代值 x1, x2 ,, x8 列在一起(见表 1-1),进行
的精确解 x* 2.5 比较,观察误差的传播.
算法 1 将已知方程化为同解方程 x 15 2x2 .取初值 x0 2 ,按迭代公式
xk1 15 2xk2
数值分析实验报告总结
一、实验背景数值分析是研究数值计算方法及其理论的学科,是计算机科学、数学、物理学等领域的重要基础。
为了提高自身对数值分析理论和方法的理解,我们进行了数值分析实验,通过实验加深对理论知识的掌握,提高实际操作能力。
二、实验目的1. 理解数值分析的基本理论和方法;2. 掌握数值分析实验的基本步骤和技巧;3. 培养实验设计和数据分析能力;4. 提高编程和计算能力。
三、实验内容本次实验主要分为以下几个部分:1. 线性方程组求解实验:通过高斯消元法、LU分解法等求解线性方程组,并分析算法的稳定性和误差;2. 矩阵特征值问题计算实验:利用幂法、逆幂法等计算矩阵的特征值和特征向量,分析算法的收敛性和精度;3. 非线性方程求根实验:运用二分法、牛顿法、不动点迭代法等求解非线性方程的根,比较不同算法的优缺点;4. 函数插值实验:运用拉格朗日插值、牛顿插值等方法对给定的函数进行插值,分析插值误差;5. 常微分方程初值问题数值解法实验:运用欧拉法、改进的欧拉法、龙格-库塔法等求解常微分方程初值问题,比较不同算法的稳定性和精度。
四、实验过程1. 线性方程组求解实验:首先,编写程序实现高斯消元法、LU分解法等算法;然后,对给定的线性方程组进行求解,记录计算结果;最后,分析算法的稳定性和误差。
2. 矩阵特征值问题计算实验:编写程序实现幂法、逆幂法等算法;然后,对给定的矩阵进行特征值和特征向量的计算,记录计算结果;最后,分析算法的收敛性和精度。
3. 非线性方程求根实验:编写程序实现二分法、牛顿法、不动点迭代法等算法;然后,对给定的非线性方程进行求根,记录计算结果;最后,比较不同算法的优缺点。
4. 函数插值实验:编写程序实现拉格朗日插值、牛顿插值等方法;然后,对给定的函数进行插值,记录计算结果;最后,分析插值误差。
5. 常微分方程初值问题数值解法实验:编写程序实现欧拉法、改进的欧拉法、龙格-库塔法等算法;然后,对给定的常微分方程初值问题进行求解,记录计算结果;最后,比较不同算法的稳定性和精度。
3.3多步法3.4误差与稳定性分析3.5数值积分法的选择与计算步长的确定
最大误差
0.001
0.00797
0.01
0.00078
0.02
0.00038
0.05
0.00001
0.1
0.00104
0.2
0.01501
0.5
0.59470
1.0
0.48049
(R=0)
最大误差 0.00104 0.00010 0.00005 0.00001 0.00003 0.00107 0.01645 0.79498
5 12
h y ( ),
3 (3)
系统仿真
a.Adams显示公式
当k=3时,可得四阶Adams显式公式:
yn1 yn
h 24
55 f n 59 f n1 37 f n2 9 f n3
h y ( ),
5 (5)
其局部截断误差
Rn
251 720
(tn1, tn )
式中:
ek 1 y(tk 1 ) yk 1 ——整体截断误差
k 1 yk 1 yk 1
系统仿真
——舍入误差
17
(a)截断误差
截断误差
局部截断误差
• 假定前k步为微分方程精确解的误差
整体截断误差
• 从初值开始,每步均有局部截断误差
假定前一步得到的结果yn是准确的,则用泰级数展
h p yn (9 f n1 19 f n 5 f n 1 f n 2 ) 24
y n1
c
是一个四步法,具有四阶精度。
除了初始值yo以外,其前三步的值y1,y2,y3 往往用RK4法计算,其余的y4,y5转向预估-校正 求解
计算方法实验报告
实验一:误差传播与算法稳定性实验目的:体会稳定性在选择算法中的地位。
实验内容:考虑一个简单的由积分定义的序列10I ,0,1,10nn x dx n a x==+⎰其中a 为参数,分别对0.05a =及15a =按下列两种方法计算。
方案1:用递推公式11,1,2,,10n n I aI n n-=-+= 递推初值可由积分直接得01lna I a+= 方案2:用递推公式111(),,1,,1n n I I n N N a n-=-+=-根据估计式当1n a n ≥+时,11(1)(1)(1)n I a n a n <<+++或当01n a n ≤<+时,11(1)(1)n I a n n<≤++ 取递推初值 当1n a n ≥+时, 11121()2(1)(1)(1)2(1)(1)N N a I I a N a N a a N +≈+=+++++ 当01n a n ≤<+时,111()2(1)(1)N N I I a N N≈+++ 实验要求:列出结果,并对其稳定性进行分析比较,说明原因。
实验二:非线性方程数值解法实验目的:探讨不同方法的计算效果和各自特点 实验内容:应用算法(1)牛顿法;(2)割线法 实验要求:(1)用上述各种方法,分别计算下面的两个例子。
在达到精度相同的前提下,比较其迭代次数。
(I )31080x x +-=,取00x =;(II) 2281(0.1)sin 1.060x x x -+++=,取00x =;(2) 取其它的初值0x ,结果如何?反复选取不同的初值,比较其结果; (3) 总结归纳你的实验结果,试说明各种方法的特点。
实验三:选主元高斯消去法----主元的选取与算法的稳定性问题提出:Gauss 消去法是我们在线性代数中已经熟悉的。
但由于计算机的数值运算是在一个有限的浮点数集合上进行的,如何才能确保Gauss 消去法作为数值算法的稳定性呢?Gauss 消去法从理论算法到数值算法,其关键是主元的选择。
误差原理第三章误差的传递与合成
误差原理第三章误差的传递与合成误差的传递是指在实验过程中,由于不同的测量步骤和计算过程引入误差,这些误差会通过物理关系或者数学计算传递到最终结果中。
在实验中,每一个测量仪器都有其特定的精确度和不确定度。
当我们进行复杂的测量或计算时,这些误差会相互作用并积累,从而影响到最终结果的精确度。
为了定量描述误差的传递,我们需要引入误差传递公式。
对于其中一个物理量x,假设它是由一系列测量结果a、b、c等通过其中一种物理关系或者数学计算得到的,则误差传递公式可以写为:Δx=√((∂x/∂a)²Δa²+(∂x/∂b)²Δb²+(∂x/∂c)²Δc²+...)其中Δx表示x的不确定度,∂x/∂a、∂x/∂b等表示物理关系或者计算公式对于变量a、b的导数,Δa、Δb等表示变量a、b的不确定度。
这个公式表明了误差是通过导数的平方和来传递的。
最大值法是指将每个测量结果的不确定度取最大值,作为最终结果的不确定度。
这种方法适用于误差独立且不相关的情况。
例如,在实验中测量一些物理量时,我们使用了不同型号的仪器进行多次测量,那么每个测量结果的不确定度可以认为是不相关的,这时可以采用最大值法。
平方和法是指将每个测量结果的不确定度的平方相加并开方,作为最终结果的不确定度。
这种方法适用于误差相互关联的情况。
例如,在实验中测量一些物理量时,多个测量结果的不确定度具有一定的相关性,这时可以采用平方和法。
实际应用中,误差的传递和合成在实验设计和数据处理中起着关键的作用。
在实验设计中,我们可以通过分析物理关系和计算过程,确定哪些因素会对实验结果产生较大的影响,从而优化实验方案以降低不确定度。
在数据处理中,我们可以根据误差的传递公式和合成方法,对实验结果进行误差分析,得到对最终结果的不确定度的估计,以提高实验结果的可靠性和可信度。
总之,误差的传递和合成是误差原理的核心内容,它描述了实验结果的不确定性和误差如何从测量仪器传递到最终的物理量中。
数值计算中的误差
p( x) a0 xn a1xn an1x an
an1 ) x an
p( x) (((a0 x a1 ) x a2 ) x
内江师范学院数学与信息科学学院 吴开腾 制作
二、误差的种类及其来源
过失误差或疏忽误差 模型误差
非过失误差 观测误差 截断误差
*
例如 3.14159265 的五、六位有 效数字分别为:
1 3.1416 , 2 3.14159
•数字的规格化形式
一般说,设有一个数 x ,其近似值 x 的规格化形式
*
x 0.1 2 n 10
*
m
(5)
1 , 2 ,, n 都是0,1,2,3,4,5,6,7,8,9中的一个数 式中: 字, 1 0 ;n是正整数;m是整数。
内江师范学院数学与信息科学学院 吴开腾 制作
(7)
计算题
绝对误差和相对误差的计算以及有效数字?
例1 当用 3.1416 来表示 它的相对误差是多少?
的近似值时,
3 ,由(7)有
1 解: 3.1416 具有五位有效数字,
* r
1 1 51 4 ( x) 10 10 23 6
内江师范学院数学与信息科学学院 吴开腾 制作
五、防止误差传播的若干方法
应选用数值稳定的计算算法,避开不稳定的算式; 注意简化计算步骤,减少运算次数; 大数“淹没”小数的现象发生;
应避免两相近数相减(变换);
绝对值太小的数不宜作为除数;
注意计算过程中误差的传播与积累。
内江师范学院数学与信息科学学院 吴开腾 制作
1 x 99 70 2
6
实验一误差传与算法稳定性
实验一:误差传播与算法稳定性一:实验内容考虑一个简单由积分概念的序列: 显然0,1,2,.n I n >=当n=1时,11101/x I xe dx e -==⎰。
而对于2n ≥时,利用分步积分易患:1111111101,2,3,n x n x n x n n I x e dx x e nx e dx nI n -----==-=-=⎰⎰另一方面,咱们有11101/(1)n x n n I x e dx x dx n -=≤=+⎰⎰。
由以上递推关系,咱们可以取得计算序列{}n I 的两种方式。
(Ⅰ) 11/I e =,111/,n 1,2,3,..n n I I -=-=⋯ (Ⅱ) 0N E =, 11,,1,2,,3,2nn E E n N N N n--==--二:实验要求及实验结果(1) 别离用算法(Ⅰ)、(Ⅱ)计算,而且在计算机中别离采用5位、6位和7位有效数字,请判断哪一种算法能给出更精准的结果。
实验进程:ⅰ)编写MA TLAB 程序如下:a= input ('请输入有效位数a:'); %设定有效数字位数 syms n InIn=vpa((exp(-1)),a) %vpa 设定结果有效数字 for n=2:10; In=vpa((1-n*In),a) %循环计算End运行文件,输入有效数字a 别离为5位、6位和7位,取得运算结果如下表格所示:function In=NO1Bb= input ('请输入有效位数b:'); syms n En En=vpa(0,b) for n=10:-1:2;En=vpa(((1-En)/n),b) End由以上两种算法所取得的数据可知,对算法11/I e =,111/,n 1,2,3,..n n I I -=-=⋯从8I 开始,结果变得无规律,各个有效位数计算结果都不一样,这是因为随着计算的n 增大,误差会愈来愈大。
数值计算中的数值误差与稳定性分析
数值计算中的数值误差与稳定性分析在数值计算领域,数值误差和稳定性是两个重要的概念。
数值误差是指数值计算结果与真实值之间的差异,而稳定性则关注计算方法对初始条件的敏感程度。
本文将就数值误差和稳定性进行分析,并探讨它们在数值计算中的应用。
一、数值误差1.1 精度误差精度误差是由计算机的有限位数表示数字所引起的误差。
在计算过程中,无法无限精确地表示实数,因此会出现舍入误差。
例如,计算π时,无论使用多少位的近似值,都无法精确表示π的真实值。
1.2 截断误差截断误差是指在数值计算过程中,为了减少计算量而对计算结果进行截断或舍入所引起的误差。
当我们对无限级数或函数进行近似计算时,往往只截取有限项或使用有限阶的多项式进行计算,从而引入截断误差。
1.3 累积误差累积误差是指在多次计算中,由于前一步计算的误差被传递到后一步而导致误差不断累积的情况。
当我们进行复杂的数值计算时,每一步的误差都会进一步影响后续的计算,从而导致累积误差的出现。
二、稳定性分析2.1 稳定性定义在数值计算中,稳定性是指计算方法对初始条件的敏感程度。
一个稳定的计算方法应该在输入条件有轻微变动时,计算结果不会发生剧烈的改变。
相反,如果计算方法对初始条件非常敏感,那么它就是不稳定的。
2.2 条件数条件数是衡量问题条件对计算结果影响程度的度量。
条件数越大,计算结果对输入条件的变动越敏感,稳定性越差。
条件数的计算方法因具体问题而异,但一般来说,条件数越大,计算问题就越病态,数值解的稳定性越差。
2.3 稳定性与算法选择在实际的数值计算中,选择合适的算法和计算方法对于保证计算结果的稳定性至关重要。
对于特定的数值计算问题,我们应该选择恰当的数值方法,避免不稳定的计算。
例如,在求解线性方程组时,若矩阵的条件数较大,我们应该选择稳定的求解方法,以避免结果的不确定性。
三、数值误差与稳定性的应用数值误差和稳定性的分析对于各个领域的数值计算都具有重要的应用价值。
以下是一些具体应用的例子:3.1 科学计算在科学计算中,例如天气预报、结构力学分析等,准确的数值计算结果对于判断问题的性质和做出决策至关重要。
数值分析matlab数值试验
实验一:误差传播及算法稳定性实验1.21、试验程序:function charpt1_2% 误差传播及算法稳定性实验clc;clear all;promps={'请选择递推关系式,若选E1=1/e,En=1-nEn-1,请输入1,若选EN=0,En-1=(1-En)/n,请输入2:'};I=1;while Iresult=inputdlg(promps,'charpt1_2',1,{'1'});Nb=str2num(char(result));if ((Nb~=1)|(Nb~=2))I=0;endend%%%%%%%%%%%%%%%%%I=1;while Iresult=inputdlg('请输入递推步数 n>=1:','charpt1_2',1,{'10'});steps=str2num(char(result));if (steps>0)&(steps==fix(steps)) %% 如果steps大于0且为整数I=0;endend%%%%%%%%%%%%%%%%%result=inputdlg('请输入计算中所采用的有效数字位数n:','charpt1_2',1,{'5'});Sd=str2num(char(result));format long %% 设置显示精度result=zeros(1,steps); %% 存储计算结果err=result; %% 存储计算的绝对误差值func=result; %% 存储用quadl计算的近似值%%%%%%%%%%%%%%%%%%% 用quadl计算积分近似值for n=1:stepsfun=@(x) x.^n.*exp(x-1);func(n)= quadl(fun,0,1);end%%%%%%%%%%%%%%%%%%% 用自定义算法计算if(Nb==1)digits(Sd);result(1)=subs(vpa(1/exp(1)));for n=2:stepsresult(n)=subs(vpa(1-n*result(n-1)));enderr=abs(result-func);elseif(Nb==2)digits(Sd);result(steps)=0;for n=(steps-1):-1:1result(n)=subs(vpa((1-result(n+1))/(n+1)));enderr=abs(result-func);end%%%%%%%%%%%%%%%%%%% 输出结果数值及图像clf;disp('库函数计算值:');disp(sprintf('%e ',func));disp('递推值:');disp(sprintf('%e ',result));disp('误差值:');disp(sprintf('%e ',err));if(Nb==1)plot([1:steps],result,'-rs',[1:steps],func,':k*',[1:steps],err,'-.bo' );elseif(Nb==2)plot([steps:-1:1],result,'-rs',[steps:-1:1],func,':k*',[steps:-1:1],e rr,'-.bo');endxlabel('第n步');ylabel('计算值');legend('自定义算法结果','库函数计算结果','误差值');grid on2、试验结果:选择递推关系式1,递推步数为10,有效数字为5位,计算结果如下:库函数计算值:3.678794e-001 2.642411e-001 2.072766e-001 1.708934e-001 1.455329e-0011.268024e-001 1.123836e-001 1.009323e-001 9.161229e-002 8.387707e-002递推值:3.678800e-001 2.642400e-001 2.072800e-001 1.708800e-001 1.456000e-0011.264000e-001 1.152000e-001 7.840000e-0022.944000e-001 -1.944000e+000误差值:5.588280e-007 1.117662e-006 3.352927e-006 1.341222e-0056.705713e-005 4.023702e-004 2.816427e-003 2.253226e-002 2.027877e-001 2.027877e+00012345678910第n 步计算值选择递推关系式2,递推步数为10,有效数字为5位,计算结果如下: 库函数计算值:3.678794e-001 2.642411e-001 2.072766e-001 1.708934e-001 1.455329e-001 1.268024e-001 1.123836e-001 1.009323e-001 9.161229e-002 8.387707e-002 递推值:3.678800e-001 2.642400e-001 2.072800e-001 1.708900e-001 1.455300e-001 1.267900e-001 1.125000e-001 1.000000e-001 1.000000e-001 0.000000e+000 误差值:5.588280e-007 1.117662e-006 3.352927e-006 3.412224e-006 2.942873e-006 1.237016e-005 1.164270e-004 9.322618e-004 8.387707e-003 8.387707e-002第n 步计算值选择递推关系式1,递推步数为10,有效数字为6位,计算结果如下: 库函数计算值:3.678794e-001 2.642411e-001 2.072766e-001 1.708934e-001 1.455329e-001 1.268024e-001 1.123836e-001 1.009323e-001 9.161229e-002 8.387707e-002 递推值:3.678790e-001 2.642420e-001 2.072740e-001 1.709040e-001 1.454800e-001 1.271200e-001 1.101600e-001 1.187200e-001 -6.848000e-002 1.684800e+000 误差值:4.411720e-007 8.823378e-007 2.647073e-006 1.058778e-0055.294287e-005 3.176298e-004 2.223573e-003 1.778774e-002 1.600923e-001 1.600923e+00012345678910第n 步计算值选择递推关系式2,递推步数为10,有效数字为6位,计算结果如下: 库函数计算值:3.678794e-001 2.642411e-001 2.072766e-001 1.708934e-001 1.455329e-001 1.268024e-001 1.123836e-001 1.009323e-001 9.161229e-002 8.387707e-002 递推值:3.678800e-001 2.642410e-001 2.072770e-001 1.708930e-001 1.455360e-001 1.267860e-001 1.125000e-001 1.000000e-001 1.000000e-001 0.000000e+000 误差值:5.588280e-007 1.176622e-007 3.529274e-007 4.122239e-007 3.057127e-006 1.637016e-005 1.164270e-004 9.322618e-004 8.387707e-003 8.387707e-002第n 步计算值3、结果分析:很明显第二种递推式结果要比第一种好,式1在第七步后有明显误差,而式2在第三步后基本与近似解一致。
数值分析实验报告
《数值分析》实验报告学院:计算机科学与软件学院姓名:XXX班级:计算机XX班学号:XXXXXX实验一:舍入误差与数值稳定性实验目的:1、 通过上机编程,复习巩固以前所学程序设计语言;2、 通过上机计算,了解舍入误差所引起的数值不稳定性。
3、 通过上机计算,了解运算次序对计算结果的影响,从而尽量避免大数吃小数的现象。
实验内容:用两种不同的顺序计算644834.11000012≈∑=-n n ,分析其误差的变化。
实验流程图:实验源程序:#include <stdio.h>#include <math.h>void main(){ int i;float s1=0,s2=0,d1,d2;for (i=1;i<=10000;i++)s1=s1+1.0f/(i*i);for (i=10000;i>=1;i--)s2=s2+1.0f/(i*i);d1=(float)(fabs(1.644834-s1));d2=(float)(fabs(1.644834-s2));printf("正向求和结果为%f\n 误差为%f\n\n",s1,d1);printf("反向求和结果为%f\n 误差为%f\n\n",s2,d2);if(d1<d2)printf("正向求和误差小于负向求和误差\n");else if(d1==d2)printf("正向求和误差等于负向求和误差\n"); elseprintf("正向求和误差大于负向求和误差\n");}实验结果:实验分析:第一次做数值实验,又一次使用C语言编程,没有了刚学习C语言的艰难,能够将实验步骤转换成流程图并编写出完整的实验代码,在经过多次调试、改正后得到正确的程序和结果。
这个实验较简单,计算误差时如果输入数据有误差,而在计算过程中舍入误差不增长,则称此算法是稳定的,否则称此算法是数值不稳定的,减少运算次数可以减小舍入误差。
计算方法 第一章 误差
五、误差的传播与估计
1.误差估计的一般公式:(略) 2.误差在算术运算中的传播:大小相近的同号
数相减、乘数的绝对值很大以及除数接近于0 等,在数值计算中应设法避免。 3.前例的误差分析:从相对误差来看,前两种 算法比后两种大许多。
六、算法的数值稳定性
▪ 定义:凡一种算法的计算结果受舍入误差的 影响小者称它为数值稳定的算法。
y=1000的相对误差限分别为
r
(
x)
Байду номын сангаас
1 10
0.1,
r
(
y)
5 1000
0.005
r (x) r (y)
故y的精度比x高得多。
四、有效数字
★定义:若近似值x 的绝对误差限是某一位上 的半个单位,且该位直到 x的第一位非零数 字一共有n位,则称近似值 x有n位有效数字, 或说 精确x到该位。
※用四舍五入法得到的近似数都是准确到末位 的有效数字。
第一章 误差
一、误差的种类及其来源 二、绝对误差和绝对误差限 三、相对误差和相对误差限 四、有效数字 五、误差的传播与估计 六、算法的数值稳定性
一、误差的种类及其来源
1.描述误差:也称环境误差或模型误差 将复杂的物理现象抽象、归结为数学
模型,往往只得忽略一些次要的因素,从 而造成误差。 2.观测误差:也称初值误差
实际使用的初始数据往往都是通过人 们实际观察测量得来的,这些测得的数据 都只能是近似的,称为参数误差。
3.截断误差:
计算时只能完成有限次运算,需要对一些 无穷计算过程(如微分、积分、无穷级数求 和等)进行截断,即仅保留无穷过程的前段 有限序列而舍弃它的后段。
4.舍入误差:四舍五入所造成的误差。 ※前两种为非过失误差,无法避免;后两种为
差分方法稳定性介绍
03
多尺度问题的求解
多尺度问题广泛存在于科学和工程领 域,对差分方法的稳定性提出更高要 求。未来研究中,将更加注重多尺度 问题的求解方法和技术研究。
THANKS
感谢观看
差分方法稳定性介绍
• 引言 • 差分方法的基本原理 • 差分方法的稳定性分析 • 差分方法的误差分析 • 提高差分方法稳定性的措施 • 差分方法稳定性的应用案例 • 总结与展望
01
引言
差分方法的概念
差分方法
差分方法是一种数值计算方法,用于求解微分方程的近似解。它通过构造差分 格式来逼近微分方程的导数,从而将微分方程转化为代数方程进行求解。
差分方法的稳定性分析
稳定性定义
数值稳定性
差分方法在数值计算过程中,对于初 始条件和边界条件的小扰动,解的变 化能够保持有界,即不会因计算步数 的增加而无限放大。
渐近稳定性
当计算步数趋于无穷时,差分方法的 解能够收敛到真实解,即误差能够逐 渐减小并趋于零。
稳定性判据
要点一
Lax-Richtmyer稳定性判据
对于线性偏微分方程,如果差分格式能够保持离散能量不 增长,则该格式是稳定的。该判据提供了判断差分格式稳 定性的一个充分条件。
要点二
Courant-Friedrichs-Lewy (CFL…
对于显式差分格式,为了保证计算的稳定性,时间步长与 空间步长之间需要满足一定的关系,即CFL条件。该条件 给出了时间步长的上限。
边界条件的处理
Dirichlet边界条件
直接给出边界上的函数值,处理简单。
Neumann边界条件
给出边界上的法向导数值,需要通过差分 近似进行处理。
Robin边界条件
周期边界条件
计算方法综合实践
计算方法综合实践1.应用自己熟悉的算法语言编写程序,使之尽可能具有通用性。
2.上机前充分准备,复习有关算法,写出计算步骤,反复检查,调试程序。
(注:在练习本上写,不上交)3.完成计算后写出实验报告,内容包括:算法步骤叙述,变量说明,程序清单,输出计算结果,结构分析和小结等。
(注:具体题目具体分析,并不是所有的题目的实验报告都包含上述内容!)4.独立完成,如有雷同,一律判为零分!5.上机期间不允许做其他任何与课程设计无关的事情,否则被发现一次扣10分,被发现三次判为不及格!非特殊情况,不能请假。
旷课3个半天及以上者,直接判为不及格。
目录一、基本技能训练 (4)1、误差分析 (4)2、求解非线性方程 (4)3、插值 .......................... 错误!未定义书签。
4、数值积分 (10)二、提高技能训练 (13)1、 (13)2、 (13)三、本课程设计的心得体会(500字左右) (15)一、基本技能训练1、误差分析实验 1.2 误差传播与算法稳定性实验目的:体会稳定性在选择算法中的地位。
误差扩张的算法是不稳定的,是我们所不期望的;误差衰减的算法是稳定的,是我们努力寻求的,这是贯穿本课程的目标。
问题提出:考虑一个简单的由积分定义的序列110,1,2,3,n x n I x e dx n -==⎰显然0,1,2,3,n I n >=。
当1n =时,11101.x I xe dx e -==⎰而对于2n ≥时,利用分部积分易得11111110100|1,2,3,n x n x n x n n I x e dx x e nx e dx nI n -----==-=-=⎰⎰另一方面,我们有1110011n x n n I x e dx x dx n -=≤=+⎰⎰ 实验内容:由以上递推关系,我们可得到计算序列{}n I 的两种方法。
(I )111,1,2,3,n n I I nI n e-==-= (II )110,,,1,2,,3,2N N n E E E n N N N n --===--syms n In5 In6 In7;In5=vpa((exp(-1)),5);In6=vpa((exp(-1)),6);In7=vpa((exp(-1)),7);fprintf('%.5f %.6f %.7f\n',eval(In5),eval(In6),eval(In7));for n=2:10m = length(xh);x = x(:);y = y(:);xh = xh(:);yh = zeros(m,1);c1 = ones(1,n-1);c2 = ones(m,1);for i=1:n,xp = x([1:i-1 i+1:n]);yh = yh + y(i) * prod((xh*c1-c2*xp')./(c2*(x(i)*c1-xp')),2);endtocx=[0 0.1 0.2 0.3 0.4];y=[0.5000 0.5398 0.5793 0.6179 0.7554];xh=[0.13 0.36];lagrange(x,y,xh)时间已过 0.026678 秒。
实验一 误差分析
实验一 误差分析实验1.1(病态问题)实验目的:算法有“优”与“劣”之分,问题也有“好”与“坏”之别。
对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题。
通过本实验可获得一个初步体会。
数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。
病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。
问题提出:考虑一个高次的代数多项式)1.1()()20()2)(1()(201∏=-=---=k k x x x x x p显然该多项式的全部根为1,2,…,20共计20个,且每个根都是单重的。
现考虑该多项式的一个扰动)2.1(0)(19=+x x p ε其中ε是一个非常小的数。
这相当于是对(1.1)中19x 的系数作一个小的扰动。
我们希望比较(1.1)和(1.2)根的差别,从而分析方程(1.1)的解对扰动的敏感性。
实验内容:为了实现方便,我们先介绍两个MATLAB 函数:“roots ”和“poly ”。
roots(a)u =其中若变量a 存储n+1维的向量,则该函数的输出u 为一个n 维的向量。
设a 的元素依次为121,,,+n a a a ,则输出u 的各分量是多项式方程01121=+++++-n n n n a x a x a x a的全部根;而函数p o l y (vb = 的输出b 是一个n+1维向量,它是以n 维向量v 的各分量为根的多项式的系数。
可见“roots ”和“poly ”是两个互逆的运算函数。
))20:1((;)2();21,1(;000000001.0ve poly roots ess ve zeros ve ess +===上述简单的MATLAB 程序便得到(1.2)的全部根,程序中的“ess ”即是(1.2)中的ε。
实验要求:(1)选择充分小的ess ,反复进行上述实验,记录结果的变化并分析它们。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一:误差传播与算法稳定性
一:实验内容
考虑一个简单由积分定义的序列: 显然0,1,2,.n I n >=L 当n=1时,1
110
1/x I xe dx e -==⎰。
而对于2n ≥时,利用分步积分
易得:
另一方面,我们有1
1
1
1/(1)n x n n I x e dx x dx n -=
≤=+⎰
⎰。
由以上递推关系,我们可以得到计算序列{}n I 的两种方法。
(Ⅰ) 11/I e =,111/,n 1,2,3,..n n I I -=-=⋯ (Ⅱ) 0N E =, 11,,1,2,,3,2n
n E E n N N N n
--=
=--L 二:实验要求及实验结果
(1) 分别用算法(Ⅰ)、(Ⅱ)计算,并且在计算机中分别采用5位、6位和7位有效数字,
请判断哪种算法能给出更精确的结果。
实验过程:
ⅰ)编写MA TLAB 程序如下:
a= input ('请输入有效位数a:'); %设定有效数字位数 syms n In
In=vpa((exp(-1)),a) %vpa 设定结果有效数字 for n=2:10; In=vpa((1-n*In),a) %循环计算
End
运行文件,输入有效数字a 分别为5位、6位和7位,得到运算结果如下表格所示:
ⅱ)编写MA TLAB 程序如下: function In=NO1B
b= input ('请输入有效位数b:'); syms n En
En=vpa(0,b) for n=10:-1:2;
En=vpa(((1-En)/n),b) End
由以上两种算法所得到的数据可知,对算法11/I e =,111/,n 1,2,3,..n n I I -=-=⋯从8I 开始,结果变得无规律,各个有效位数计算结果都不一样,这是因为随着计算的n 增大,误差会越来越大。
而对0N E =, 11,,1,2,,3,2n
n E E n N N N n
--=
=--L ,5位、6位和7位结果相近,随着有效数字位数的增加,结果越来越精确。
(2) 两种算法的优劣,与你第一感觉是否吻合。
请从理论上证明你的实验得出的结果,
解释实验得到的结果,算法(Ⅰ)中的计算误差为1e ,由1I 递推计算N I 的误差为n e ;算法(Ⅱ)中的N I 计算误差为N ε,由N I 向前递推计算n I (n N <)的误差为n ε。
如果在上述两算法中都假定后面的计算不再引入其它误差,试给出n e 与1e 的关系和
n ε与N ε的关系。
ⅰ)**
11|||||(1)(1)|n n n n n e I I nI nI --=-=---11(1)!||n n |e |n e -===-L 。
ⅱ)因为*
1111||(1)(1)||N N N N I I N N N
εε-=
---=由此类推,对n<N 有:1
||||(1) (1)
N N n εε=
-+n N 。
(3) 算法(Ⅰ)中的1e 会很小,当n 增大时,n e 的变化趋势如何?算法(Ⅱ)中N ε通常相对
较大,当n 减小时,误差n ε又是如何传播的?也就是说比较一下上述两个算法,当某一步产生误差后,该误差对后面的影响是衰减还是扩张的。
ⅰ)算法(Ⅰ)中,**
11|||||(1)(1)|n n n n n e I I nI nI --=-=---11(1)!||n n |e |n e -===-L 。
当1e 很小时,随着n 的增大,n e 以阶乘为系数迅速增大。
所以当某一步产生误差后,该误差最后面的影响是扩张的。
ⅱ)算法(Ⅱ)中1
||||(1) (1)
N N n εε=
-+n N ,虽然开始N ε很大,但是随着n 的增大,
n ε以阶乘为除数迅速减小。
所以当某一步产生误差后,该误差最后面的影响是衰减的。
(4) 通过理论分析与计算实验,针对(Ⅰ)和(Ⅱ)的稳定性给出你的结论。
ⅰ)算法(Ⅰ)中,**
11|||||(1)(1)|n n n n n e I I nI nI --=-=---11(1)!||n n |e |n e -===-L 。
当某一步产生误差后,该误差最后面的影响是扩张的,所以该算法是不稳定的。
ⅱ)算法(Ⅱ)中1
||||(1) (1)
N N n εε=
-+n N ,虽当某一步产生误差后,该误差最后面
的影响是衰减的,所以该算法是稳定的。