1、12分析实际问题分析实际问题数值计算方法数值计算方法数学模型数学模型机器求解机器求解 数值分析研究的数值分析研究的核心:算法。核心:算法。构造算法的基本手段:构造算法的基本手段:近似近似研究算法的核心问题:近似对计算研究算法的核心问题:近似对计算的影响的影响误差分析误差分析3 特点特点u 构造性:构造性:u 递推性:递推性:u 离散化:离散化:u 近似替代:近似替代:计算离散点上的近似值;有可靠的理论分析;计算离散点上的近似值;有可靠的理论分析;算法理论主要是连续系统的离散化数值求解。算法理论主要是连续系统的离散化数值求解。方法的构造,解的存在唯一性的证明方法的构造,解的存在唯一性的证明复杂计
2、算过程转化成简单的计算过程的多复杂计算过程转化成简单的计算过程的多次重复(适合计算机计算)次重复(适合计算机计算)在误差允许的范围内,无限次的计算能用在误差允许的范围内,无限次的计算能用有限次计算替代。有限次计算替代。u 模拟仿真:模拟仿真:可通过计算机的仿真实验验证实际的工程计算可通过计算机的仿真实验验证实际的工程计算4一个物理量的真实值和我们算出的值往往不相等,一个物理量的真实值和我们算出的值往往不相等,其差称为其差称为误差误差。一、误差定义一、误差定义定义定义热门促销安卓智能手机推荐5分析实际问题分析实际问题数值计算方法数值计算方法数学模型数学模型机器求解机器求解二、误差种类与来源二、误
3、差种类与来源观测误差观测误差模型误差模型误差截断误差截断误差舍入误差舍入误差数据观测所引入的误差,如电数据观测所引入的误差,如电压、天体运行轨道。压、天体运行轨道。数学模型是实际问题的抽象和简数学模型是实际问题的抽象和简化,只是对客观现象的一种近似。化,只是对客观现象的一种近似。其间出现的误差。其间出现的误差。近似计算代替精确求解,如此误差近似计算代替精确求解,如此误差称为称为截断误差截断误差,本身固有,也称,本身固有,也称方方法误差法误差。例如圆周率,自然对数。例如圆周率,自然对数。计算机数系的有限字长,必须进计算机数系的有限字长,必须进行四舍五入,称为行四舍五入,称为舍入误差舍入误差。6
4、计算机在处理数据过程中存在计算误差。原因是机器计算机在处理数据过程中存在计算误差。原因是机器数系所致。这一数系的特点是数系所致。这一数系的特点是有限、离散、支离破碎有限、离散、支离破碎;这;这和数学上常用的实数系和数学上常用的实数系无限、稠密、连续的无限、稠密、连续的特点完全不同。特点完全不同。机器数的表示方法通常采用浮点数形式,即:机器数的表示方法通常采用浮点数形式,即:120.1 0mna aa其中其中 a10,且,且 a1,a2,an 都是整数都是整数09中的任一个数。中的任一个数。10m称为称为尾数尾数,尾数的位数,尾数的位数n是有限正整数;是有限正整数;m称为称为阶数阶数,阶数也是有
5、界的数。所以,机器数中有最大的数,也有最小阶数也是有界的数。所以,机器数中有最大的数,也有最小的数。用机器数表示实数时,很多情况下都带有误差的数。用机器数表示实数时,很多情况下都带有误差。附附:计算机数系的特点:计算机数系的特点7二、误差基本概念二、误差基本概念1.绝对误差绝对误差 绝对误差不是误差的绝对值,即绝对误差不是误差的绝对值,即 e(x)可正可负。可正可负。通常通常 x 是未知的,故是未知的,故 e(x)未知未知,但一般地,但一般地 已知。已知。*exx*exx称称 e 为近似值为近似值x*的的绝对值绝对值或或误差误差。定义定义若若例例3.14159263.1416(),e41()1
6、0.2e说明说明82.相对误差相对误差设某量的准确值为设某量的准确值为 x,x*是是 x 的近似值,称绝对误差的近似值,称绝对误差与准确值之比与准确值之比()()re xxxexxx称称为为x*的的相对误差限相对误差限。(),rxxexx为为x*的的相对误差。相对误差。定义定义若若9例例:设:设12121.234,0.002,1.233,0.001xxxx33111222()10()10,e xxxe xxx,33121010()0.81%()50%.1.2340.002rre xe x,估计近似数估计近似数x1,x2的绝对误差与相对误差。的绝对误差与相对误差。解:解:1x是是x1好的近似,好
7、的近似,2x不是不是x2好的近似。好的近似。近似数的相对误差是近似数精确度的基本度量,一近似数的相对误差是近似数精确度的基本度量,一个近似数个近似数x*的相对误差越小,则近似数越精确。的相对误差越小,则近似数越精确。10 er(x)是一个无量纲的数,且是一个无量纲的数,且 x一般是未知的,所以一般是未知的,所以er(x)难求。难求。考察量考察量()()re xxxe xxx()()re xxxe xxx*2*()()()()()()()()rre xe xx e xxe xexe xe xxxx xxxe x 较小时较小时)(xer 2*2*()()01()1()rre xxe xe xe x
8、x 通常将通常将 作为作为x*的相对误差。的相对误差。相对误差限相对误差限是未知的,但可以确定。是未知的,但可以确定。()()re xxxe xxx说明说明113.有效数字有效数字若近似值若近似值x*的误差限是某一位的半个单位,该位的误差限是某一位的半个单位,该位到第一位非零数字到第一位非零数字 共共n位,称近似值有位,称近似值有n位有效数位有效数字。字。设设 x 为准确值,为准确值,x*为为 x 的近似值且的近似值且x*表示为表示为 1(0.)10mnxaa*1102mnxx换言之,如果换言之,如果称称x*具有具有n位位有效数字。有效数字。定义定义12 一个十进制数近似值的有效数字,不受单位
9、制的影响。一个十进制数近似值的有效数字,不受单位制的影响。如如g*=9.81m/s2作为作为g 的近似值,与的近似值,与g*=0.00981km/s2,均,均 为为3位有效数字。位有效数字。在有效数意义下,不同的有效数位数的近似值的近似精在有效数意义下,不同的有效数位数的近似值的近似精度是不同的。如度是不同的。如10.4200的精度高于的精度高于10.42:前者的绝对误前者的绝对误差不超过:差不超过:后者的绝对误后者的绝对误差不超过:差不超过:4110221102有效数字与绝对误差有一定的关系。对于某量的近似有效数字与绝对误差有一定的关系。对于某量的近似值,如果有值,如果有n位有效数字,当位有
10、效数字,当m一定时,一定时,n越大则相对越大则相对误差越小。误差越小。结论结论13*121210(101010)mnnxaaa 设近似值设近似值x*表示为表示为若若x*具有具有n位有效数字,则其相对误差限为位有效数字,则其相对误差限为*(1)11102nrreexa反之,若反之,若x*的相对误差限的相对误差限*(1)111021nrea则则x*至少具有至少具有n位有效数字。位有效数字。141*11110(1)10mmaxa*(1)1*111101210102m nnrmxxaax*1(1)111(1)10102(1)mnrxxxaa11102m n 证明:证明:由由x*的表达式可得:的表达式可
11、得:又由定义可知又由定义可知1102m nxx有效数位越多,有效数位越多,相对误差越小相对误差越小所以所以反之,则有:反之,则有:因此,因此,x*具有具有n位有效数字。位有效数字。15为使为使 近似值的相对误差小于近似值的相对误差小于1%,问需要取多少位有,问需要取多少位有效数字?效数字?5解:解:5的近似值的首位数字的近似值的首位数字a1=2,于是由于是由11100.0122nre可解得可解得2.4n 因此,可取因此,可取 n=3 即即52.24例:例:16定义定义一个算法如果输入数据有误差,而在计算过程中一个算法如果输入数据有误差,而在计算过程中舍入误差舍入误差不增长,则称此算法是不增长,
12、则称此算法是数值稳定的数值稳定的,否,否则称此算法为则称此算法为不稳定的不稳定的。一、算法稳定性定义一、算法稳定性定义17计算下式并估计误差。计算下式并估计误差。1111001()1(1,2,)nxnnnxxe dxIexnnIen 1110010.6321xIee dxe 110(0,1,)nxnIex e dx n由分步积分公式,可得由分步积分公式,可得例例解:解:可以计算出下表:可以计算出下表:按递推关系按递推关系010.63211nnIInI18111110001011(min)(max)11xnxnnxxeeex dxIeex dxnn 1911010eI于是,取于是,取n=9,则有
13、,则有于是,取于是,取n=8,则有,则有18199eI8=-0.7180I9=7.552I而而191*9911()0.064842 1010eII现将递推公式改写为:现将递推公式改写为:,并且取,并且取因此,可得新的递推公式:因此,可得新的递推公式:*9*10.064841(1)nnIIIn11(1)nnIIn由上面的递推公式,可得到下面的计算结果:由上面的递推公式,可得到下面的计算结果:20 对于第二种方法,设对于第二种方法,设 ,有,有 第二种方法比第一种方法计算稳定。第二种方法比第一种方法计算稳定。对于第一种方法,设对于第一种方法,设 ,则有,则有分析:分析:nnnEII10(1)!nn
14、nEnEn E *nnnEII*11nnEEn因此,误差是逐次放大的。因此,误差是逐次放大的。因此,误差是逐次缩小的。因此,误差是逐次缩小的。*!(1),1,.,1,0!n kknkEEkn nn 21二、病态问题与条件数(针对问题本身)二、病态问题与条件数(针对问题本身)*()()()()()pxfxfxfxxCfxxfx输入数据的微小变动导致输出数据的较大误差,就输入数据的微小变动导致输出数据的较大误差,就被称为被称为病态问题病态问题。衡量是否病态的标准:衡量是否病态的标准:条件数条件数 不同的问题,条件数具体定义不同。不同的问题,条件数具体定义不同。对于函数值计算问题,条件数定义为:对于
15、函数值计算问题,条件数定义为:一般情况下,条件数大于一般情况下,条件数大于10,就认为问题病态。,就认为问题病态。设设 f(x)=xn,则,则Cp=n,即对于该函数,误差会被放大,即对于该函数,误差会被放大n倍倍通过构造特殊算法来解决通过构造特殊算法来解决定义定义22条件数和函数的误差估计条件数和函数的误差估计*1212*12121121()(,)(,)(,)(,)()(,)()nnnnniiiinniiie yyyf x xxf xxxf x xxdf x xxxxxf x xxe xxe*(y)=f(x*)f(x)e*(x)=x*x =f()(x*x)(中值定理中值定理)一元的情形:一元的
16、情形:绝对误差条件数绝对误差条件数23x*与与 x 非常接近时,可认为非常接近时,可认为 f()f(x*),则有:,则有:|e*(y)|f(x*)|e*(x)|即:即:x*产生的误差经过产生的误差经过 f 作用后被放大作用后被放大/缩小了缩小了|f(x*)|倍。倍。故称故称|f(x*)|为为放大因子放大因子 或或 绝对条件数绝对条件数.相对误差条件数相对误差条件数112112()()1()(ln)(,)()(,)niriinniriiine xe yfeydfdfyfxff x xxxe xxf x xx24*()|()|()()()()()()()rreyeyf xf xf xxxxxxf
17、xxxfxexf x*()|()|rexexx一元的情形一元的情形 f 的条件数在某一点是的条件数在某一点是小小大大,则称,则称 f 在该点是在该点是好条件的好条件的坏坏条件的条件的.2511123111234111345A例例(病态问题病态问题)设有方程组设有方程组AxbA已知系数已知系数b测量数据测量数据x待求数据待求数据其中其中4711 13,6 12 60Tb1231xxx如果测量数据不够精确,即测量数据仅保留了如果测量数据不够精确,即测量数据仅保留了2位有效数字,位有效数字,即即 ,计算结果为,计算结果为1.8 1.1 0.78Tb 0,6,3.6Tx 以上问题称为病态的问题,病态是
18、问题本身固有的。以上问题称为病态的问题,病态是问题本身固有的。那么很容易计算那么很容易计算若测量数据为准确数据,若测量数据为准确数据,即即26 运算方案能否控制误差的传播和积累以保证计算结运算方案能否控制误差的传播和积累以保证计算结果有足够的精度(数值稳定性)果有足够的精度(数值稳定性)27一、减少运算次数一、减少运算次数 不仅能提高计算精度,而且能减少误差的积累不仅能提高计算精度,而且能减少误差的积累1、对同一种计算方法,要选用计算量少的运算次序、对同一种计算方法,要选用计算量少的运算次序例例(),abacada bcd32axbxcxd(),axb xc xd例例:计算多项式:计算多项式
19、的值。的值。1110()nnnnnpxa xaxa xa28(b)利用秦九韶算法:利用秦九韶算法:11,(,1,.2,1)nnkkkSaSxSakn n0(),nSp x110()()nnnp xx xx a xaaa(1)(1)2 1;2n nnn 解解:(a)直接计算每一项再求和:直接计算每一项再求和:计算计算pn(x)的值只需做的值只需做n次乘法次乘法n次加法。次加法。则则计算计算pn(x)的递推公式:的递推公式:计算计算anxn需做需做n次乘法,次乘法,计算计算pn(x)的值需做乘法次数:的值需做乘法次数:加法次数:加法次数:n29(a)利用级数利用级数231ln(1)1(1)(1,1
20、)23nnxxxxxn 1111ln21123nnSn 71ln210,1nSn例例 计算计算 ln2 的近似值,要求误差小于的近似值,要求误差小于10 .解:解:取取x=1,有,有误差误差7101.n计算量太大计算量太大30(b)使用级数使用级数221ln2(1)(1)1321mxxxxxxm242131 11 1112ln21()()(),33 35 321 3mxm,241681111112ln21()()(),33353173S则,取则,取用前用前 9 项(即取项(即取 m=8)计算就能达到精度要求)计算就能达到精度要求:78ln 210.S得:得:31若若 用四位有效数字进行计算时:
21、用四位有效数字进行计算时:有理数的有限数集,即浮点有理数的有限数集,即浮点数集(参读教材数集(参读教材p22-29)一个好的算法必须是数值稳定的,一个好的算法必须是数值稳定的,否则结果不可否则结果不可靠,计算失败(数值不稳定)。靠,计算失败(数值不稳定)。1.注意计算机数系的运算特点注意计算机数系的运算特点例例 讨论在计算机数系中分别用公式讨论在计算机数系中分别用公式 和和 12abm22bama5.243,8.355ab 无误差时,必相等;有舍入误差时,可能不相等。无误差时,必相等;有舍入误差时,可能不相等。二、二、数值计算中要构造和使用数值稳定的方法数值计算中要构造和使用数值稳定的方法求求
22、a,b中点时所得结果是否相同。中点时所得结果是否相同。32例例 4位有效数字舍入运算:位有效数字舍入运算:1234+0.4+0.3+0.2+0.1=12340.4+0.3+0.2+0.1+1234=1235若出现若出现“溢出溢出”应立即中应立即中断断应避免出现应避免出现“大数吃小数大数吃小数”事先预防、事先预防、事后解决事后解决 例例 求求1222().ab解解:设设 则则 max,cab,12122222()()().ababccc可防溢出可防溢出针对计算机的计算特点,必须注意:针对计算机的计算特点,必须注意:解解:计算机算法设计时,必须作到:计算机算法设计时,必须作到:3321810.xx
23、 例例 求下列方程的根求下列方程的根解解:12980,980.xx(a)用用8位浮点数位浮点数(有效数字有效数字)计算计算800.89442719 1021120.17944272 10,0.55728091 10.xx 是因为求是因为求 的误差的误差(并不并不大大),),进行减法后导致不应忽视进行减法后导致不应忽视的后果的后果 80准确准确不稳定不稳定34两接近数相减两接近数相减损失了有效数字损失了有效数字(b)用用4位浮点数位浮点数(有效数字有效数字)计算计算800.8944 1021120.1794 10,0.5600 10.xx(c)数值稳定的方法数值稳定的方法121110.5574
24、10.980 xx改用公式改用公式仍用仍用4 位浮位浮点数计算点数计算xxxxlnlnln 1;xxx当当|x|1 时:时:21 cos2sin;2xx几种经验技巧几种经验技巧35前面有例题,计算前面有例题,计算110(0,1,)nxnIex e dx n 第二种方法比第一种方法计算稳定。第二种方法比第一种方法计算稳定。nnnEII1nnEnE*nnnEII*11nnEEn 对于第一种方法,设对于第一种方法,设,则有,则有因此,误差是逐次放大的。因此,误差是逐次放大的。对于第二种方法,设对于第二种方法,设,则有,则有因此,误差是逐次缩小的。因此,误差是逐次缩小的。(当时给出了两种方法当时给出了
25、两种方法)必须小心控制误差的传播必须小心控制误差的传播并估计误差。并估计误差。36引起引起函数的很大误差函数的很大误差病态问题病态问题病态问题一般要用高精度病态问题一般要用高精度(双精度双精度)计算或解病态问题计算或解病态问题的方法解决。的方法解决。输入的很小输入的很小 的误差的误差371.求求 的近似值的相对误差不超过的近似值的相对误差不超过0.1%,要取几位有效,要取几位有效数字?数字?作作 业业一、教材上的作业一、教材上的作业二、补充作业二、补充作业三、编程作业三、编程作业教材教材P.43 1.P.44 5.P.44 8.202.设设212Sgt,假定,假定g是准确的,而对是准确的,而对t的测量有的测量有0.1秒的误差,秒的误差,证明:当证明:当t增大时,增大时,S的绝对误差增大而相对误差却减小。的绝对误差增大而相对误差却减小。1.用用MATLAB编程实现编程实现P44.第第7题题(x=3 时时),写出相应代码。,写出相应代码。