近似一个值数值时,记住,使用的精度浮点结果可以敏感。同时,浮点结果容易舍入错误。下面的方法可以帮助你识别和避免不正确的结果。
执行计算象征性地建议因为准确的符号计算不容易舍入错误。例如,标准的数学常数有自己的符号表征符号数学工具箱™:
π信谊(π)
答答=π= 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])
利用数值解算器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
现在,考虑相同的功能,但稍微增加真正的一部分,
。根据黎曼假设,这个函数没有任何实际价值的零y。如果你使用vpasolve
10个重要的小数位数,解算器发现以下(nonexisting)零ζ函数:
老=数字;数字(10)vpasolve(泽塔(1000000001/2000000000 + i * y), y, 15)
ans = 14.13472514
增加数字显示结果的数量是不正确的。ζ函数 没有任何实际价值的零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日)