new07浮点运算与数值运算.pdf

浮点运算与数值运算的误差 浮点运算的误差 为什么有 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 = 9.999999999999999e − 001 分析: MATLAB使用浮点数,而浮点数中没有0.1,只能用二进制中最接近0.1的数来近似表示. 结果必然有误差!  数值计算不是使用全部实数,也没有极限与无限等实数概念.  使用浮点算术体系(有限精度的有限数集合),计算中会产生: • 舍入(roundoff) • 下溢出(underflow) • 上溢出(overflow) • 机器最小精度(eps) • 非数(NaN) 双精度浮点数表示形式与存储方式: 11bit存e 浮点数用 ± 1 + · 2 64位(bit )=1字节(word) 正负号用1bit 52bit存f 浮点数的整个小数部分不是f, 而是1+f它占53位.然而首位的1并不需要存 储,这样IEEE格式便将65位的信息打包成64位的一个字节(word ). 浮点数表示中整数部份由2e (二进制)表示, 的取值限制整数的范围. 其中210=1024 ,用去10位(bit) ,再用1位(bit)表示指数,共用11位. e 的实际取值为-(210-2) = e =(210-1) ; 即-1022 = e =1023, 得最小数2-1022 ,最大数21023 e 的正负值取值范围不同,正值为1到+1023 ,所以不必存储e正负号. e=1024, f=0 表示无穷大(Inf),e=1024, f ≠0 表示非数(NaN ). e=-1024 时表示最小的规范数, e=-1023 时表示最小的非规范数. 浮点数的表示法 x = ± 1 + · 2 f 的取值限制数的精度. 0 ≤f ≤1; 2e ≤2e +f · 2e 2e+1 +1 52 −52 它表示利用 在[2 , 2 ] 之间等间隔插入的2 个数, 相邻小数的间隔为2 , 全部小数的取值为 · 2 = · 2−52 · 2 ,n= (0 ,1 ,2 ,3…, 252 -1) 例如当整数值为 二进制2e 2-1022 2-2 2-1 20 21 22 23 21023 十进制数 最小实数 ... 1/4 1/2 1 2 4 8 ... 最大实数 小数值为(以1与2之间插入的小数为例) 0 0 0 -52 0 -52 0 51 -52 1 2 (1+f) 2 =(1+0) 2 (1+2 ) 2 (1+2·2 ) ... 2 (1+2 ·2 ) 2 (1+0)=2 十进制数 1 1+2-52 = 1 1 1+2·2-52 ... 1+(252 -1)*2-52 2 45

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档