主要内容

识别和避免舍入错误

近似一个值数值时,记住,使用的精度浮点结果可以敏感。同时,浮点结果容易舍入错误。下面的方法可以帮助你识别和避免不正确的结果。

在可能的情况下使用象征性的计算

执行计算象征性地建议因为准确的符号计算不容易舍入错误。例如,标准的数学常数有自己的符号表征符号数学工具箱™:

π信谊(π)
答答=π= 3.1416

避免不必要的使用数值近似。浮点数近似于一个常数;它不是常数。使用这个近似,可以得到不正确的结果。例如,亥维赛特殊的正弦函数返回不同的结果信谊(π)和数值近似正弦的π:

亥维赛(sin(信谊(π)))亥维赛(sin (pi))
= 1/2岁= 1

执行计算与精度

黎曼假设状态,所有重要的黎曼ζ函数的零ζ(z)有相同的实部吗ℜ(z)= 1/2。来定位可能的零ζ函数,它的绝对值|ζ(1/2 +iy)|。下面的图显示了前三个重要的ζ函数的根|ζ(1/2 +iy)|

信谊yfplot (abs(泽塔(1/2 + i * y)), 30 [0])

图包含一个坐标轴对象。坐标轴functionline类型的对象包含一个对象。

利用数值解算器vpasolve近似的前三个零ζ函数:

vpasolve(泽塔(1/2 + i * y), y, 15) vpasolve(泽塔(1/2 + i * y), y, 20) vpasolve(泽塔(1/2 + i * y), y, 25)
ans = 14.134725141734693790457251983562 = 21.022039638771554992628479593897岁= 25.010857580145688763213790992563

现在,考虑相同的功能,但稍微增加真正的一部分, ζ ( 1000000001 2000000000 + y ) 。根据黎曼假设,这个函数没有任何实际价值的零y。如果你使用vpasolve10个重要的小数位数,解算器发现以下(nonexisting)零ζ函数:

老=数字;数字(10)vpasolve(泽塔(1000000001/2000000000 + i * y), y, 15)
ans = 14.13472514

增加数字显示结果的数量是不正确的。ζ函数 ζ ( 1000000001 2000000000 + y ) 没有任何实际价值的零14 <y< 15:

数字(15)vpasolve(泽塔(1000000001/2000000000 + i * y), y, 15)数字(旧)
我答= 14.1347251417347 + 0.000000000499989207306345

为进一步计算,恢复默认的数字:

数字(旧)

比较符号和数值结果

贝塞尔函数和半整数指数返回准确的符号表达式。由浮点数逼近这些表达式可以产生非常不稳定的结果。例如,下面的贝塞尔函数的符号表达式是:

B = besselj(53/2信谊(π))
B =(351 * 2 ^(1/2) *(119409675 /π^ 4 - 20300 /π^ 2 - 315241542000 /π^ 6……+ 445475704038750 /π^ 8 - 445475704038750 /π^ 10 +……182947881139051297500 /π^ 12 - 182947881139051297500 /π^ 14…+ 10174148683695239020903125 /π^ 16 - 10174148683695239020903125 /π^ 18…+ 57306695683177936040949028125 / 20 - 1331871030107060331702688875000 /ππ^ ^ 22……+ 8490677816932509614604641578125 / 24 + 1)/ππ^ ^ 2

使用vpa与10位数精度近似表达式:

vpa (B, 10)
ans = -2854.225191

现在,叫浮点的贝塞尔函数参数。显著区别这两个近似表明一个或两个结果不正确:

besselj(53/2π)
ans = 6.9001 e-23

增加数字工作精度来获得一个更精确的近似B:

vpa (B, 50)
ans = 0.000000000000000000000069001456069172842068862232841396473796597233761161

绘制函数或表达式

策划的结果可以帮助你识别不正确的近似。例如,下面的贝塞尔函数返回的数值近似:

B = besselj (53/2 sym (pi));vpa (B, 10)
ans = -2854.225191

情节的贝塞尔函数的值x周围53/2。函数图表明,近似是不正确的:

信谊xfplot (besselj (x,信谊(π)),[26]27日)

图包含一个坐标轴对象。坐标轴functionline类型的对象包含一个对象。