Matlab计算与仿真技术 第十六讲:数值计算I ittp: //human-robot sysu. edu. cn/course 王国利 http://human-robot.sysu.edu.cn 信息科学与技术学院 中山大学
王国利 信息科学与技术学院 中山大学 http://human-robot.sysu.edu.cn Matlab计算与仿真技术 第十六讲: 数值计算-I http://human-robot.sysu.edu.cn/course
Matlab计算与仿真 第十六讲提纲 ■数值计算I 误差 中山火學
Matlab计算与仿真 ◼ 数值计算-I - 误差 第十六讲提纲
Matlab计算与仿真 数值分析-I 误差 小误差的自然引入 >>format long e display lots of digits >2.6+0.2 ans 2. 800000000000000e+00 >ans+0.2 ans 3.000000000000000e+00 中山火學
Matlab计算与仿真 数值分析-I ◼ 误差 - 小误差的自然引入 >>format long e % display lots of digits >> 2.6 + 0.2 ans = 2.800000000000000e+00 >> ans + 0.2 ans = 3.000000000000000e+00
Matlab计算与仿真 数值计算(续) 小误差的自然引入(续) >ans+0.2 ans 3.200000000000001e+00 (为什么会出现最后一位非零数字呢?) >>2.6+0.6 ans 3.200000000000000e+00 中山火學
Matlab计算与仿真 数值计算 (续) - 小误差的自然引入(续) >> ans + 0.2 ans = 3.200000000000001e+00 (为什么会出现最后一位非零数字呢?) >> 2.6 + 0.6 ans = 3.200000000000000e+00
Matlab计算与仿真 数值计算(续) 整数的存储 base 10 conversion base 2(8bits 1=2^0 00000001 1248 2=2^1 00000010 4=2^2 00000100 8=2^3 00001000 9 8+1=2^3+2^0 00001001 10 8+2=2^3+2~1 00001010 (bbb.b)2=b^(n-1)+b^(n-2)+,+b^0 ( uint8/int16/int32指定存储方式 中山火學
Matlab计算与仿真 数值计算 (续) 整数的存储 base 10 conversion base 2 (8bits) 1 1 = 2^0 0000 0001 2 2 = 2^1 0000 0010 4 4 = 2^2 0000 0100 8 8 = 2^3 0000 1000 9 8 + 1 = 2^3 + 2^0 0000 1001 10 8 + 2 = 2^3 + 2^1 0000 1010 (bbbbb...b)_2=b^(n-1)+b^(n-2)+...+b^0 (u)int8/int16/int32 指定存储方式
Matlab计算与仿真 数值计算(续) 浮点数的存储 122792=(符号)0.123792(尾数)10^2(幂次 精度尾数比特数幂次比特数 single 23 8 double 53 11 b(sign)bb.bbb(52 bits )bbbbbbbbbbb(11 bits) 尾数的比特数决定精度 幂次的比特数决定范围 中山火學
Matlab计算与仿真 数值计算 (续) 浮点数的存储 12.2792 =(符号) 0.123792(尾数)x10^2(幂次) 精 度 尾数比特数 幂次比特数 single 23 8 double 53 11 b(sign)bb...bbb(52 bits)bbbbbbbbbbb(11 bits) 尾数的比特数决定精度 幂次的比特数决定范围
Matlab计算与仿真 数值计算(续) 尾数可以表示成2-k 2^(-0)=1,2^(-1)=0.5,2^(-2)=0.25,2(-3)=0125 尾数的二进制转换算法 for k=1.2 eIse ifrk1>=2^(-k) rk =rK-1 k endif TK= rk-1-2"(-k) endfor 中山火學
Matlab计算与仿真 数值计算 (续) 尾数可以表示成2-k 2^(-0)=1, 2^(-1)=0.5, 2^(-2)=0.25, 2^(-3)=0.125... 尾数的二进制转换算法 r0= x for k=1,2,...,m if rk-1 >= 2^(-k) bk = 1 rk = rk-1-2^(-k) else bk = 0 rk = rk-1 endif endfor
Matlab计算与仿真 数值计算(续) 转换算法执行示例 输入:x=0.8215 2-K rk= rk-i- bk 2-k k01234 NA NA 0.8125 0.5 0.3125 0.25 0.0625 0.1250 0.0625 0.06251 0.0000 输出:×=(1101)2 中山火學
Matlab计算与仿真 数值计算 (续) 转换算法执行示例 输入: x=0.8215 k 2-k bk rk = rk-1 - bk 2-k 0 NA NA 0.8125 1 0.5 1 0.3125 2 0.25 1 0.0625 3 0.125 0 0.0625 4 0.0625 1 0.0000 输出: x=(1101)2
Matlab计算与仿真 数值计算(续) 输入:x=0.1 2-k b 2-k k-k-1 Dk NA 0.1 0.5 0.1 0.25 0.1 123456789 0.125 0.1 0.0625 0.0375 0.03125 0.00625 0015625 0.00625 0.0078125 000110011 0.00625 0.00390625 0.00234375 0.001953125 0.000390625 10 0.00097656250 0.000390625 中山火學
Matlab计算与仿真 数值计算 (续) 输入: x=0.1 k 2-k bk rk = rk-1 - bk 2-k 0 NA NA 0.1 1 0.5 0 0.1 2 0.25 0 0.1 3 0.125 0 0.1 4 0.0625 1 0.0375 5 0.03125 1 0.00625 6 0.015625 0 0.00625 7 0.0078125 0 0.00625 8 0.00390625 1 0.00234375 9 0.001953125 1 0.000390625 10 0.0009765625 0 0.000390625
Matlab计算与仿真 数值计算(续) 输出:X=(000110011.)2但是 denorma under- under- fle flow overflow usable range usable range overflow 10+308 10-308010-308 10+308 realmax realmin realmin realmax HHHHH 0.1无法用有限 zoom-In viev 比特数表示出来 中山火學
Matlab计算与仿真 数值计算 (续) 输出: x=(00011 0011 . . .)2, 但是 0.1无法用有限 比特数表示出来