数值分析笔记(3)——数值计算中的原则

摘要:
目录数值计算的原理是避免两个相似的数字相减,以防止大数字“吃掉”小数点绝对值太小的数字。注意简化计算程序,减少计算次数,选择数值稳定性好的算法。数值计算的原理是避免两个相似的数字相减,如上图所示。因为和非常相似,(x-y)位于分母中,这将导致非常大的误差。注意简化计算程序,减少计算次数。计算的每一步都可能出现舍入误差,因此过多的步骤可能会导致过多的误差。

目录

数值计算中的原则

数值分析笔记(3)——数值计算中的原则第1张

避免两个相近的数相减

数值分析笔记(3)——数值计算中的原则第2张

如上图所示,因为(x)(y)非常相近,所以(x-y << 0),而(x - y)又位于分母,所以会导致误差变得非常大。要避免的另一方面的原因是,会导致有效数字位数大量减少,而我们要尽量保证有效数字多。

数值分析笔记(3)——数值计算中的原则第3张

数值分析笔记(3)——数值计算中的原则第4张

数值分析笔记(3)——数值计算中的原则第5张

例题:

数值分析笔记(3)——数值计算中的原则第6张

可以看到第二个解有效数字太少,那么就需要改变算法:

数值分析笔记(3)——数值计算中的原则第7张

这里“根与系数”的关系指的是:

[x_1 + x_2 = -frac{b}{a}\ x_1 imes x_2 = frac{c}{a} ]

数值分析笔记(3)——数值计算中的原则第8张

防止大数“吃掉”小数

数值分析笔记(3)——数值计算中的原则第9张

吃掉即,与小数的计算过程对最终结果不起作用。

例子:

数值分析笔记(3)——数值计算中的原则第10张

这是因为这里的变量使用了8位来储存,因为在转换到同一个量级的时候,两个小数都要被转换成9位,导致最后一位溢出,最终变成(0.0 imes 10^8),从而导致结果出错,小数被“吃掉”。这个问题是由计算机的存储数据的方式造成的。

解决方法:

数值分析笔记(3)——数值计算中的原则第11张

绝对值太小的数不宜作除数

数值分析笔记(3)——数值计算中的原则第12张

如果商特别大,下面继续加减乘除运算的时候可能会出现“大数吃掉小数”。

数值分析笔记(3)——数值计算中的原则第13张

例如,如果这里的y恰好就是那个很小的数,那么就可能导致商绝对误差很大。

注意简化计算程序,减少计算次数

数值分析笔记(3)——数值计算中的原则第14张

数值分析笔记(3)——数值计算中的原则第15张

数值分析笔记(3)——数值计算中的原则第16张

每一步计算都可能出现舍入误差,所以步骤太多的话可能会导致误差过大。

数值分析笔记(3)——数值计算中的原则第17张

可以转换成下图公式:

数值分析笔记(3)——数值计算中的原则第18张

选用数值稳定性好的算法

数值分析笔记(3)——数值计算中的原则第19张

例题:求积分

数值分析笔记(3)——数值计算中的原则第20张

可以看到第一步就出现了舍入误差,接着积累下去:

数值分析笔记(3)——数值计算中的原则第21张

数值分析笔记(3)——数值计算中的原则第22张

数值分析笔记(3)——数值计算中的原则第23张

数值分析笔记(3)——数值计算中的原则第24张

免责声明:文章转载自《数值分析笔记(3)——数值计算中的原则》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇用groovy脚本进行每日工作的自动化【groovy】js保持div悬浮,不随页面向下滚动而被覆盖下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

sqlserver 保留小数方法

1. 使用 Round() 函数,如 Round(@num,2)  参数 2 表示 保留两位有效数字。 2. 更好的方法是使用 Convert(decimal(18,2),@num) 实现转换,decimal(18,2) 指定要保留的有效数字。 最好使用第二种,比如:convert(decimal(18,1),单价) 其中1表示保存1位小数,如果是0则表示...

MATLAB数值计算——0

目录 MATLAB数值计算 1.solve() 2.fzero() 3.fsolve() MATLAB数值计算 MATLAB中文论坛基础板块常见问题归纳(出处: MATLAB中文论坛)登录http:www.mathworks.com/moler 获取NCM文件,注册账户,下载Toolbox格式,点击安装——在MATLAB中输入ncmgui出现图...

Oracle 中Number的长度定义

Number可以通过如下格式来指定:Field_NAME Number(precision ,scale),其中precision指Number可以存储的最大数字长度(不包括左右两边的0),scale指在小数点右边的最大数字长度(包括左侧0)。也就是说, 1 p是总长度,s是小数,整数部分长度是p-s 2 3 例如: 4 Number(8,2)表示...