数值算法的稳定性
数值分析知识点总结

数值分析知识点总结数值分析是计算数值解的方法和理论,它研究的是如何利用计算机对数学问题进行数值计算和数值逼近。
数值分析包括了数值方法的设计、分析和实现,以及误差分析和计算复杂性分析等方面。
下面是数值分析的一些重要知识点的总结。
1.数值算法:数值算法是解决数学问题的计算方法,它由一系列具体的计算步骤组成。
常见的数值算法有插值、数值积分、数值微分、常微分方程数值解法等。
2.数值稳定性:数值稳定性是指数值算法在计算过程中对误差的敏感程度。
一个数值算法如果对输入数据的微小扰动具有较大的响应,就称为不稳定算法;反之,如果对输入数据的微小扰动具有较小的响应,就称为稳定算法。
3.四舍五入误差:在浮点数计算中,由于计算机表示的限制,涉及舍入运算的计算可能会引入误差。
四舍五入误差是指在进行舍入运算时,取最近的浮点数近似值所引入的误差。
4.条件数:条件数是用来衡量数值问题的不稳定性的一个指标。
它描述了输入数据的微小扰动在计算结果中的放大程度。
条件数的大小决定了数值算法的数值稳定性,通常越大表示问题越不稳定。
5.插值:插值是基于已知数据点,构造插值函数来近似未知数据点的方法。
常用的插值方法有线性插值、多项式插值和样条插值等。
6. 数值积分:数值积分是用数值方法进行积分计算的一种方法。
常见的数值积分方法有梯形法则、Simpson法则和Gauss-Legendre积分法等。
7.数值微分:数值微分是通过数值方法来计算函数的导数的一种方法。
常用的数值微分方法有中心差分法和前向差分法等。
8. 常微分方程数值解法:常微分方程数值解法用于求解常微分方程的近似解。
常用的常微分方程数值解法有Euler法、Runge-Kutta法和Adams法等。
9.误差分析:误差分析是对数值算法计算结果误差的研究。
可以通过理论分析或实验方法来估计误差,并找到减小误差的方法。
10.计算复杂性分析:计算复杂性分析是对数值算法运行时间和计算资源的需求进行评估的方法。
数值计算方法和应用

数值计算方法和应用数值计算方法是指将数学问题转化为计算机程序来求解的一种方法。
随着计算机技术的不断发展,数值计算方法已经成为解决各种实际问题的重要手段。
在这篇文章中,我们将介绍数值计算方法的基础知识和应用。
一、基础知识1.1 数值解数值解是指通过数值计算方法得到的近似解。
对于某些复杂的数学问题,很难得到精确解,这时就需要采用数值计算方法来求解。
数值解的精度取决于算法本身的精度以及所使用的计算机的精度。
1.2 常用数值计算方法常用的数值计算方法包括求解方程、插值和拟合、微积分等。
其中,求解方程是数值计算方法中应用最广泛的一种方法。
通过数值计算方法求解方程的思路是将方程转化为一个数值逼近问题,然后采用数值计算方法求解出近似解。
插值和拟合是另外一种常用的数值计算方法,它们主要用于分析和处理实验数据,用来预测未知变量的值。
1.3 数值稳定性在进行数值计算时,数值稳定性是非常重要的一方面。
数值稳定性指的是计算结果受到输入数据误差的影响程度。
如果计算结果对输入数据的微小变化非常敏感,那么该算法就是不稳定的。
否则,该算法就是稳定的。
在选择数值计算方法时,需要考虑计算结果的稳定性。
二、应用2.1 工程计算数值计算方法在工程计算中也得到了广泛的应用。
工程计算包括结构分析、流体力学等领域。
在这些领域中,需要对各种物理现象进行数值模拟和分析。
利用数值计算方法可以得到复杂系统的数值解,帮助工程师掌握系统的性能和行为规律,做出正确的决策。
2.2 金融计算金融计算是另外一种需要应用数值计算方法的领域。
金融计算通常涉及大量的金融数据,例如股票价格、汇率等。
利用数值计算方法可以对这些数据进行分析,预测未来的价格趋势,提高投资的成功率。
2.3 数据科学数据科学是近年来兴起的一种新兴领域。
数据科学利用大数据分析技术,对各种数据进行分析,预测未来的趋势,挖掘出隐藏在数据背后的信息。
数值计算方法是数据科学中最基础的方法之一,无论是数据采集、数据处理还是数据分析,都需要通过数值计算方法得到精确的数据结果。
稳定性分析在数值计算中的应用

稳定性分析在数值计算中的应用稳定性分析是一种在数值计算中广泛应用的评估方法,用于衡量数值计算算法或模型的稳定性和可靠性。
通过稳定性分析,我们可以了解到数值计算过程中的误差来源以及算法在不同条件下的表现,从而更好地选择适合的计算方法,提高计算结果的准确性和可信度。
一、稳定性分析的概念及意义稳定性分析是评估数值计算方法的可靠性和准确性的重要手段之一。
在数值计算中,我们常常需要求解一些复杂的数学问题,比如微分方程、积分问题等。
由于计算机表达数学运算时存在精度限制,以及计算误差、截断误差等因素的干扰,导致计算结果可能与真实值存在一定的差距。
稳定性分析的主要目的是评估数值计算算法在不同条件下的稳定性和可靠性。
通过将一些已知的数学问题进行稳定性分析,我们可以得到计算方法的误差来源,了解计算过程中潜在的问题,并做出相应的改进。
这有助于提高数值计算的准确性和可信度,保证计算结果的有效性。
二、稳定性分析的方法与技巧稳定性分析的方法和技巧各不相同,取决于具体的数值计算问题和算法。
下面以求解线性方程组为例,介绍一种常用的稳定性分析方法——条件数分析。
条件数是一个用于衡量线性方程组求解问题稳定性的指标。
条件数越大,说明问题的稳定性越差,计算结果的可靠性越低。
条件数分析的基本思想是通过计算线性方程组的条件数,评估求解过程中是否会引入大量的误差。
条件数分析的具体步骤如下:1. 将线性方程组表示为矩阵形式:A*x = b,其中A为系数矩阵,x为未知向量,b为常数向量。
2. 计算A的条件数:cond(A) = ||A|| * ||A^(-1)||,其中||.||表示矩阵的范数。
3. 判断条件数的大小:若cond(A)较大,则说明线性方程组求解的稳定性较差,计算结果的可靠性较低;若cond(A)较小,则求解过程相对稳定,计算结果较可靠。
通过条件数的分析,我们可以在求解线性方程组时选择合适的计算方法和算法,以提高计算结果的准确性和可靠性。
数值计算的基本概念

数值计算的基本概念数值计算是一种通过计算机程序进行数值操作和计算的过程。
它是数值分析领域的一个重要分支,用于解决科学和工程领域中的各种实际问题。
1.数值表示:计算机只能处理二进制数字,即0和1,所以需要一种方法将实际的数值转化为计算机可以理解的二进制形式。
数值表示包括整数表示和浮点数表示。
整数表示是将整数转换为二进制形式,而浮点数表示是将实数转换为二进制形式,并用一个符号位、指数位和尾数位来表示。
2.数值误差:数值计算中会出现一些误差,这些误差可以分为截断误差和舍入误差。
截断误差是由于计算中将无限的数值截断为有限位数而引入的误差,而舍入误差是由于计算中进行舍入而引入的误差。
数值误差会随着计算的进行而积累,可能导致最终结果的不准确性。
3.数值稳定性:数值计算中的算法可能会受到输入数据的微小变化而产生很大的输出差异。
数值稳定性指的是算法对于输入数据的微小变化具有较好的鲁棒性,即输出结果相对稳定,不会产生过大的误差。
4.数值精度:数值计算的精度指的是计算结果与实际值之间的差距。
数值精度可以通过数值计算的方法和所使用的计算机精度来确定。
计算机有限的存储空间和位数限制了数值计算的精度,因此需要权衡计算精度和计算速度之间的关系。
5.数值方法:数值计算中用于求解数值问题的具体算法和技术称为数值方法。
数值方法包括数值逼近、数值插值、数值积分、数值微分、线性代数问题的数值解法等。
数值方法的选择取决于具体的问题和计算要求。
在实际应用中,数值计算广泛应用于众多领域,如物理学、化学、工程学、金融学等。
通过数值计算,可以对复杂的数学模型和方程进行求解,预测和模拟实际情况,提供决策支持和优化设计。
然而,数值计算也存在着一些挑战和限制。
首先,数值计算可能会产生舍入误差和截断误差,从而引入不确定性和误差。
其次,数值计算需要计算机指令的执行,这需要时间和计算资源。
因此,对于大规模的数值计算问题,可能需要分布式计算或并行计算。
此外,数值计算也需要对问题进行合理的建模和参数设定,才能得到准确和可靠的结果。
由二次方程的求根公式谈中学数学中算法的稳定性

由二次方程的求根公式谈中学数学中算法的稳定性众所周知,对于一个数字系数的一元二次方程ax2+bx+c=0(a≠0),欲求其解,可通过著名的求根公式得到.当已知系数a、b、c是一些具有多位有效数字的近似数时,求二次方程根的其它技巧方法(比如因式分解方法)已不适用,只有借助于计算工具(计算机、计算器)或手算,按此求根公式求得近似根了.这在理论上是成熟的方法,应该说它是完美无缺的方法,但在实际应用中却完全不是那么回事.在实际应用中,我们当然希望计算所得的结果,保留尽量多的有效数字.出于这一考虑我们需要对此求根公式做一些技术处理,这主要是指当|ac|即对于b2甚小时,(1)式中的某一个右端分子将出现两个非常相近的数相减情况,得到一个很小的数,大大地损失掉已知数据中的宝贵的有效数字.其结果是使解答质量大打折扣,甚至严重失真,得不到我们所需要的信息.看如下例子:例1 我们以近似数x1=8.143947×107,x2=1.871211×11-7(x1、x2都具有7位有效数字)作为两根,构造一元二次方程:(x-8.143947×107)(x-1.871211×11-7)=0,整理得(计算中仍保留7位有效数字)x2-8.143947×107·x+15.239043=0.(2)下面我们利用求根公式重新计算这个构造出的方程的两根,计算中也保留7位有效数字,看看会发生什么情况,并做一些分析研究工作.由求根公式(1),得即得x1=8.143947×107,x2=0.这里x1的值相当不错,但x2的值已严重失真,可以说是面目全非了.实际上它已不满足原方程了.注意,我们构造二次方程(2)时,x2保留有7位有效数字,但由构造出的方程复原x2时,有效数字丧失殆尽!出现这种情况的原因,不难发现,是由于用求根公式(1)求x2时,分子出现了两个非常相近的数,8.143947×107与为了避免上述不利情形的出现,我们需要将求根公式(1)作一改动,成为按公式(3)计算x2可以有效地避免两个十分相近的数作减法,有效数字得以保存.公式(3)是将公式(1)的右端分子有理化所致.当然,在初等数学中,求根公式(3)不及公式(1)正规,或曰漂亮,因为在中学数学中,当一个题的答案分母中含有根式时,人们习惯于将分母有理化,使根式集中于分子.这里的求根公式(3)有些违背习惯.但正是这个(3)式,在应用上有其不容置疑的优点.比如,用它计算例1中的解x2,有=1.871211×10-7,它仍然保留了7位有效数字.如此,求根公式(3)具有非常明显的优点.注意,我们解方程(2)的数值解时,是用公式(1)的第一式计算x1,用公式(3)的第二式计算x2.正如不宜用公式(1)两式统一计算根一样,也不宜用公式(2)两式统一计算根.你瞧,用公式(3)第一式计算x1有x1之值不唯不精确,而且更糟糕,分母为0,计算成为不可能!总结我们的分析,对例1,一次项系数b为负值,求其两根的计算公式(求根公式)为对于一次项系数b为正值情况,求根公式应该取为实用中,选取公式(4)或(5)的原则是:尽量避免出现两个相近数相减,以保存尽可能多的有效数字位.善于观察的读者,一定会发现公式(4)、(5)与(1)、(3)相比无甚高明之处,它们只不过是在公式(1)、(3)的基础上用了一下韦达定理,即在x1求出的基础上按关系x2=1/x1计算x2而已.但正是这样一处变化,却解决了此类数值计算的“稳定性”问题,使之成为一个好算法.为了解决某个数值问题,需要选择一个算法.算法就是解题的公式、方法、程序系统.算法当然首先要有正确的理论基础与可行性,但除此之外还必须具有稳定性,即计算结果误差对于初始数据的微小变动(比如产生不可避免的误差)具有稳定性,后者的微小变动不至于使前者产生极大误差而失真.上面求例1根的算法,用公式(1)的就不是稳定的算法,而按公式(4)或(5)的算法就是稳定的,是足可放心的算法.有关算法稳定性的概念及应用,在中学数学中也多有涉及,这一内容虽不宜向中学生过早介绍,但作为一名数学教师,也是有必要了解一些的.例2 已知某直线l的方程y=ax+b,请在直角坐标系中绘出该直线.当然,两点之间可以确定一条直线,任意取两横坐标值x1、x2,由方程可计算出相应的纵坐标y1、y2,得直线上两点只P1(x1,y1)、P2(x2,y2).在直角坐标系中“点”出这两点,连结之,就得到所求作的直线l.但这应使P1、P2距离不至于过小,因为太小时,由于“点”的位置误差可给直线带来相当大的误差.图1中,由两点P1、P2确定的直线是l,但由于P2有误差到P2′点,确定的直线变到l1,有相当大的误差.图1中由P1、P3也可确定直线l,P1P3较大,P3虽有误差(与P2的相同)偏到P3′,但P1、P3′确定的直线l2,误差就相对小得多.设l1、l2分别为方程组之第1、2两方程代表的直线.图解法的解题思路是在直角坐标系下,绘出l1、l2的图形,找到它们的交点,图2中是点(x0,y0.), 此即为原方程组的解.但如果确定直线l1的两点取得太近,则作图误差就较大,l1偏离到l1′,同样绘出的直线l2也偏离到l2′位置,则题目最终得到的解是l1′、l2′的交点P0′(x0′、y0′)(在纸外,未画出).它与精确值偏离相当的远,可能对于实际问题而言,已经完全失去了使用价值,得不到我们所需要的信息.为了提高解答的精确度,当初在作出直线l1(及l2)时选择其上的两点应该足够地“远”.。
数值计算的数值稳定性

数值计算的数值稳定性数值计算在科学和工程领域中扮演着至关重要的角色。
无论是求解数学方程、数值模拟物理过程还是进行金融市场预测,我们都需要依赖数值计算来得到准确的结果。
然而,在进行数值计算时,我们必须关注数值稳定性的问题,以确保所得到的结果是可靠和精确的。
数值稳定性是指数值计算结果对输入数据的微小变化不敏感的性质。
换句话说,当输入数据发生微小变化时,如果数值计算结果也只发生微小的变化,那么我们可以说这个数值计算方法是数值稳定的。
而如果输入数据的微小变化导致计算结果的明显变化,那么我们就需要怀疑这个数值计算方法的稳定性。
为了更好地理解数值稳定性的重要性,我们可以通过一个简单的例子来说明。
假设我们需要计算一个方程的根,且该根相当接近1。
我们可以选择使用二分法来进行计算,即反复将区间一分为二,然后判断根是否位于其中某个子区间内。
然而,由于计算机的精度限制,我们不能无限地细分区间,而需要停止迭代的条件是区间长度小于一个给定的阈值。
如果我们选择的阈值过大,那么得到的根可能并不精确。
而如果我们选择的阈值过小,那么计算可能会陷入无限循环或者根本无法进行计算。
这就是一个数值稳定性的问题。
如果我们能够选择一个合适的阈值,使得所得到的根尽可能接近真实值,并且在输入数据稍作变动时,计算结果仍然保持稳定,那么我们就可以说我们的数值计算方法是稳定的。
在实际的数值计算中,数值稳定性问题存在于各个领域。
例如,在计算流体力学中,我们需要对流体的运动进行模拟。
但是由于流体运动的非线性特性以及不可避免的数值误差,我们必须谨慎选择计算方法,以保证结果的稳定性。
在金融市场中,对于一些复杂的金融模型,数值稳定性的问题更为显著。
微小的模型参数变动可能会导致预测结果的巨大差异,这对于投资者和决策者来说是不可接受的。
为了解决数值稳定性的问题,有许多方法和技术被提出。
一种常见的方法是增加计算的精度。
通常,计算机上使用的是有限的浮点数表示方法,精度由计算机的位数决定,例如单精度(32位)和双精度(64位)。
数学中的数值分析与近似算法

数学中的数值分析与近似算法数值分析是数学的一个分支,研究如何以数值的形式解决实际问题。
它广泛应用于科学、工程领域以及金融和经济学等各个领域。
数值分析的核心是近似算法,通过近似计算来获得问题的数值解。
本文将介绍数值分析及其在近似算法中的应用。
一、数值分析的基本概念数值分析是研究如何使用计算机对数学问题进行数值计算的科学。
其基本概念包括数值解、精度、稳定性和收敛性等。
1. 数值解:数值解是通过计算机进行近似计算得到的数学问题解。
由于实际问题通常很难或不可能精确求解,因此数值解在实际应用中具有重要意义。
2. 精度:精度是数值解与真实解之间的差距。
通常用相对误差和绝对误差来衡量。
相对误差是指数值解与真实解之差与真实解的比值,而绝对误差是指数值解与真实解之差的绝对值。
3. 稳定性:稳定性是指数值算法在输入数据中存在小扰动时,输出结果的变化情况。
一个数值算法是稳定的,当且仅当很小的输入扰动只引起相对较小的输出扰动。
4. 收敛性:收敛性是指数值解逐渐趋近于真实解的性质。
一个数值算法是收敛的,当以足够的步骤进行计算时,数值解可以逐渐接近真实解。
二、最小二乘法及其应用最小二乘法是数值分析中常用的一种近似算法。
它通过最小化误差的平方和来拟合数据。
最小二乘法在很多领域都有广泛的应用。
以线性回归为例,通过最小二乘法可以拟合出一个最佳的直线,使得散点与拟合直线之间的误差最小。
这在经济学中的回归分析、工程中的数据拟合等领域都非常常见。
三、插值与外推插值和外推是数值分析中用于估计数据或函数值的常见技术。
1. 插值:插值是指通过已知的数据点,构造出一个函数使得函数在这些点上的值与已知数据点的值完全一致。
常用的插值方法包括线性插值、拉格朗日插值和样条插值等。
2. 外推:外推是指通过已知的数据点,构造出一个函数使得函数在已知数据点的值之外的点上的值能够接近真实解。
外推在数值计算中常用于提高数值算法的稳定性和精度。
插值和外推在信号处理、图像处理等领域具有广泛应用。
高精度数值计算算法评估

高精度数值计算算法评估随着现代科技的不断进步,高精度数值计算成为许多应用领域中的重要需求。
从天气预报到金融建模,从工程设计到物理模拟,高精度数值计算都扮演着关键的角色。
为了满足这一需求,各种高精度数值计算算法被提出和发展,但在实际应用中,如何评估这些算法的性能和可靠性仍然是一个重要的问题。
评估高精度数值计算算法的一个基本要求是精度和稳定性。
精度是指算法计算结果与真实结果之间的偏差程度。
一般情况下,我们希望算法的精度尽可能地高,即计算结果与真实结果之间的偏差要尽可能地小。
稳定性是指算法对输入数据的敏感程度。
即使输入数据稍有变化,算法的计算结果也不应该发生较大的变化。
只有具备高精度和稳定性的算法才能在实际应用中获得可靠的结果。
评估高精度数值计算算法的方法有很多种,下面我将以常见的方法为例进行介绍。
一种常用的评估方法是与已知结果进行比较。
这种方法在数学问题的研究中被广泛应用。
首先,我们选取一些已知结果作为参考结果,例如通过解析方法得到的结果或实验数据获得的结果。
然后,我们使用待评估的算法计算相同的问题,并将计算结果与参考结果进行比较。
通过比较两者之间的差异,我们可以评估算法的精度和稳定性。
当然,为了提高评估的准确性,我们可以选取多个不同的参考结果进行比较。
另一种常用的评估方法是使用数值稳定性分析。
数值稳定性分析允许我们估计算法对舍入误差和输入数据误差的敏感程度。
在数值计算中,由于计算机的有限精度表示,舍入误差是不可避免的。
数值稳定性分析的目标是确定算法对于输入数据的微小变化如何传播到计算结果中。
稳定的算法应当对输入数据的微小变化具有相对较小的传播效应。
此外,性能评估也是评估高精度数值计算算法的重要方面。
性能评估主要关注算法的计算效率,即算法在给定时间内能够完成的计算量。
在实际应用中,高精度计算通常涉及大量的计算操作和复杂的数据结构,因此算法的计算效率是一个需要考虑的重要因素。
我们可以通过比较算法的运行时间和计算资源的使用情况来评估算法的性能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
结果只有一位有效数字,有效数字大量损失,造成相 对误差扩大。这是由两个比较接近的数相减造成的。
1 1 1 1 5 0.1734 10 759 760 759 760 0.5768 10 6
结果仍然有四位有效数字。这说明了算法设计的 重要性。
注:数值计算中要避免有效数字减少。
n 15
In
0.0105205
n 10
In
0.0153676
n 5
In
0.0284684
19
18
0.00825397
0.00887552
14
13
0.0112292
0.0120399
9
8
0.0169265
0.0933742
4
3
0.0343063
0.0431387
17
16
0.00933601
0.00989750
0.0147169
14
15
-0.395442
2.04388
19
20
1270.86
-6354.23
0.0284686 5 线性代数一 10 ④
16/32
而将公式变为
1 1 I n 1 I n (n m, m 1,...,2,1) 5 5n
然后取充分大的m对应的Im的一个估计值为计算初 值,再逐步用上式算出Im-1 ,Im-2 ,...,I1。 用上式计算 Im 可使计算的误差减少5倍,因而它对应 的算法是数值稳定的算法。
2.04388
19
20
1270.86
-6354.23
1 I n 5I n1 (n 1,2,...) n
舍入误差在计算过程迅速传播,每次扩大5倍. 所以此算法是不稳定的。
线性代数一④
1 而将公式变为 I n 5I n1 (n 1,2,...) n 1 1
I n 1 I n (n m, m 1,...,2,1) 5 5n
线性代数一④
有递推公式
在该例中,用上述公式计算积分的值,I0=ln6-ln5 ≈0.182322的舍入误差在计算过程迅速传播,每次扩大 5倍,致使I12= -0.32902110×10-2 严重失真,所以这一 公式是不稳定的。 n 1 In
0.0883922
1 I n 5I n1 (n 1,2,...) n
1 1 自n=20计算到n=1, I 20 6 21 5 21 0.00873061 2
线性代数一④
n 20
In
0.00873016 0.00825397 0.00887552 0.00933601 0.00989750
n 15
In
0.0105205 0.0112292 0.0120399 0.0129766 0.0140713
n 16
In
-10.1569
2
3
0.058038
0.0431387
7
8
0.0188109
0.0212378
12
13
-0.00329022
-0.0933742
17
18
50.8433
-2343063
0.0284686
9
10
0.0170566
0.0147169
14
15
-0.395442
12
11
0.0129766
0.0140713
7
6
0.0212326
0.0233250
2
1
0.0580389
0.0883922
最后得: I0=0.182322 与我们开始计算的I0≈0.182322是一样的
1 1 I n 1 I n (n m, m 1,...,2,1) 5 5n
绝对误差限,相对误差限
线性代数一④
2/32
|e| = |x* - x| , 称 为近似值x的绝对误差限,简称误差限或精度
e x * x | er || || | r x* x*
则称r 为近似值x的相对误差限。
线性代数一④
3/32
有效数字
近似数x=±0.a1a2…an×10m
如果|e| = |x* - x| 1/2 10m-n 称近似数x准确到小数点后第n位,从这小数点后 第n位数字直到最左边非零数字之间的所有数 字都称为有效数字. 有效数字越多,误差越小,计算结果越精确.
n 10
In
0.0153676 0.0169265 0.0933742 0.0212326 0.0233250
n 5
9/32 I n
0.0284684 0.0343063 0.0431387 0.0580389 0.0883922
19
18
14
13
9
8
4
3
17
16
12
11
7
6
2
1
最后得: I0=0.182322 与我们开始计算的I0≈0.182322是一样的
1/32
上节课内容回顾
设x*是准确数, x是x*的近似数,称e = x* - x 为近 似值x的绝对误差,简称误差。 ——反映是近似值与精确值的绝对差值
e x * x 称 er 为近似值x的相对误差 x* x*
——反映是近似值与精确值的近似程度
通常用百分数来表示,相对误差越小,近似程度越高
线性代数一④
4/32
相对误差与有效数字的关系如下: 定理1.1 设近似数x=±0.a1a2…an×10m有n位有效数字, 则其相对误差限为
1 n 1 r 10 , 2a1 10 ,
定理1.2 设近似数x=±0.a1a2…an×10m的相对误差限 为 1 n1
r
2(a1 1)
15/32
n 6
In
0.0243239
n 11
In
0.0173247
n 16
In
-10.1569
2
3
0.058038
0.0431387
7
8
0.0188109
0.0212378
12
13
-0.00329022
-0.0933742
17
18
50.8433
-2540161
4
0.0343063
9
0.0170566
x 1
x
化成
x 1
x
1 x 1 x
线性代数一④
11/32
例3:用四位浮点数计算 解:
1 1 759 760
1 1 759 760
1 1 0.1318 10 2 0.1316 10 2 0.2 10 5 759 760 1 1
759 760
1 1 I n 1 I n (n m, m 1,...,2,1) 5 5n
线性代数一④
该公式给 出的算法 就是稳定 的
下面通过例子给出算法数值稳定的几个原则:
10/32
控制误差传播的几个原则
一、防止相近的两数相减
(会耗失许多有效数字,可以用数学公式化简后再做)
例1: 各有五位有效数字的两个数23.034与22.993相减. 23.034-22.993=0.041 0.041只有两位有效数字,有效数字的耗失,说明准确度减 小,因此,在计算时需要加工计算公式,以免这种情况发生. 例2:当x较大时,计算
1 I n 5I n1 (n 1,2,...) n
14/32
1 1 I n 1 I n (n m, m 1,...,2,1) 5 5n
然后取充分大的m对应的Im的一个估计值为计算初 值,再逐步用上式算出Im-1 ,Im-2 ,...,I1。
用上式计算 Im 可使计算的误差减少5倍,因而它对 应的算法是数值稳定的算法。
19/32
计算量:一个算法所需的乘除运算总次数,单位是flop. 计算量也是衡量一个算法好坏的重要标准。
矩阵乘积AB的计算量分析
a a a …a a a a …a ...... … ... a a a …a
11 12 13 21 22 23 m1 m2 mm-1 1n 2n
mn
b b b … b b b b … b ...... … ... b b b … b
由:
1 1 (4) I n1 (n 1) 可取 6n 5n
1 1 I 20 6 21 5 21 0.00873061 自n=20计算到n=1, 2
线性代数一④
1 1 6(m 1) 5(m 1) Im (m 1) 2
17/32
n 20
In
0.00873016
例7:设A、B、C、D分别是1020、 2050、 501、 1100的 矩阵,试按不同的算法求矩阵乘积E=ABCD. 解:由矩阵乘法的结合律,可有如下算法 1. E=((AB)C)D. 计算量N1=11500flop 2. E=A(B(CD)). 计算量N2=125000flop 3. E=(A(BC))D. 计算量N3=2200flop 线性代数一④
然后取充分大的m对应的Im的一个估计值为计算初 值,再逐步用上式算出Im-1 ,Im-2 ,...,I1。
8/32
1 1 1 1 6(m 1) 5(m 1) In (n 1) 由: (4) 可取 I m 6n 1 5n 1 2
用上式计算 Im 可使计算的误差减少5倍,因而它对应 的算法是数值稳定的算法。
线性代数一④
12/32
二、防止大数吃小数 当两个绝对值相差很大的数进行加法或减法运算时,绝对 值小的数有可能被绝对值大的数"吃掉"从而引起计算结果 很不可靠. 例4:求一元二次方程x2-(109 +4)x+4×109=0 的实数根. 采用因式分解法 , 很容易得到两个根为 x1=109,x2=4. 如采用 字长为8位的计算机来计算 ,求得根为 x1=109 ,x2=0.(怎样 计算可得较好的结果?) 两者结果不同 , 因为计算机计算时做加减法要 “对 阶” ,“ 对阶”的结果使大数吃掉了小数 . 产生了误差 . 为了 避免由于上述原因引起的计算结果严重失真 , 可以根据一 些具体情况 , 有时需要把某些算式改写成另一种等价的形 式. 线性代数一④