当数值近似的值,请记住,浮点结果可以是所使用的精度是敏感的。此外,浮点结果倾向于舍入误差。下面的方法可以帮助你识别和避免不正确的结果。
表演象征性的计算建议因为确切的符号计算不容易舍入误差。例如,标准的数学常数有符号数学工具箱™自己的符号表示:
PI符号(PI)
ANS = 3.1416 ANS = PI
避免数值近似的不必要的使用。甲浮点数近似于常数;它不是常量本身。使用这种近似,可以得到不正确的结果。例如,亥
特殊函数返回的正弦不同的结果符号(PI)
和数值近似正弦波PI
:
希维赛德(SIN(符号(PI)))希维赛德(SIN(PI))
ANS = 1/2 ANS = 1
黎曼假设指出,黎曼ζ函数的所有非平凡零点ζ(ž)具有相同的实部ℜ(ž)= 1/2。要找到Zeta函数的零点可能,绘制其绝对值|ζ(1/2 +IY)|。下图显示了Zeta函数的前三个平凡的根|ζ(1/2 +IY)|。
SYMSÿfplot(ABS(ζ电(1/2 + I * Y)),[0 30])
使用数字求解vpasolve
逼近这个Zeta函数的前三个零:
vpasolve(ζ电(1/2 + I * Y)中,Y,15)vpasolve(ζ电(1/2 + I * Y)中,Y,20)vpasolve(ζ电(1/2 + I * Y)中,Y,25)
ANS = 14.134725141734693790457251983562 ANS = 21.022039638771554992628479593897 ANS = 25.010857580145688763213790992563
现在,考虑相同的功能,但略有增加的实部,
。据黎曼猜想,这个功能不具有零对任何真正的价值ÿ。如果您使用vpasolve
与10个显著十进制数字,解算器发现(不存在的)以下的Zeta函数的零:
旧=数字;数字(10)vpasolve(ζ电(2000000000分之1000000001+ I * Y)中,Y,15)
ANS = 14.13472514
增加的数字显示的数字,结果不正确。该Zeta函数 没有任何实际价值为零14 <ÿ<15:
数字(15)vpasolve(ζ电(2000000000分之1000000001+ I * Y)中,Y,15)的数字(旧)
ANS = 14.1347251417347 + 0.000000000499989207306345i
对于进一步的计算,恢复数字的默认号码:
数字(旧)
与半整数指数的贝塞尔函数返回精确的符号表达式。这些近似表达式用浮点数会产生非常不稳定的结果。例如,对于下面的贝塞尔函数的精确符号表达式为:
B = BESSELJ(53/2,符号(PI))
B =(351 * 2 ^(1/2)*(119409675 / PI ^ 4 - 20300 / PI ^ 2 - 315241542000 / PI ^ 6 ... + 445475704038750 / PI ^ 8 - 366812794263762000 / PI ^ 10 + ...182947881139051297500 / PI ^ 12 - 55720697512636766610000 / PI ^ 14 ... + 10174148683695239020903125 / PI ^ 16 - 1060253389142977540073062500 / PI ^ 18 ... + 57306695683177936040949028125 / PI ^ 20 - 1331871030107060331702688875000 / PI ^ 22 ... + 8490677816932509614604641578125 / PI ^ 24+ 1))/ PI ^ 2
用VPA
近似与10位的精度此表达式:
VPA(B,10)
ANS = -2854.225191
现在,调用带有浮点参数贝塞尔函数。这两个近似之间显著差异表明一个或两个结果不正确:
BESSELJ(53/2,PI)
ANS = 6.9001e-23
增加数字加工精度,从而获得了更准确的近似乙
:
VPA(B,50)
ANS = 0.000000000000000000000069001456069172842068862232841396473796597233761161
绘制的结果可以帮助你认识不正确的近似值。例如,下面的贝塞尔函数返回的数字近似值:
B = BESSELJ(53/2,符号(PI));VPA(B,10)
ANS = -2854.225191
绘制此贝塞尔函数的值X
周围53/2
。该函数曲线表明近似是不正确:
SYMSXfplot(BESSELJ(X,符号(PI)),[26 27])