卡马克魔数的研究

来源:互联网 发布:linux退出vi模式 编辑:程序博客网 时间:2024/04/30 03:10

关于卡马克魔数,wiki上面有详细的介绍。这里我所关注的是,为什么数学上的最优解在迭代一次以后效果反而没有魔数要好?其实,作出y-1/x^2=0的图以后,会发现这样一个特征:对于给定的一个估计y和真实值1/sqrt(x)的误差e(y)=|y-1/sqrt(x)|,我们会惊奇的发现在真实值左侧的估计收敛速度要比右侧的要快,换句话说,在同等误差条件下,我们宁愿去低估而非高估。所以,数学的最优解虽然给出了误差最小的估计,但是有很大一部分点是被高估了的。


现在,进行这样一个猜想:我们试图把最优估计的sigma参数往上push非常小的一段距离,这样一些原来被高估的数就被低估了,那些数的收敛效果肯定是得到增益了,同样,那些原来被高估的很多的数,现在虽然依然是高估,但是程度减小了,所以收敛效果同样是被增益了。唯一被削弱的是那些已经被低估的数,这样做只能让它们离真实值越来越远。所以,如果这个push的距离非常非常小,那么这种削弱是可以忽略不计的,或者说,由于高估到低估带来的增益远远要大于这种削弱。那么push以后的估计效果,虽然没有数学最优估计的误差小,但是可以保证在一次迭代以后误差绝对比最优估计要小。最优估计仅仅是考虑了促使误差,但是并没有考虑迭代对误差的影响!通过数值解法,我确实可以在一定程度上证实这一猜想的正确性,但是我个人无法准确求出这个push的最优值的解析解是什么。


卡马克魔数被证实确实是在数学最优解的基础上往上push了极小的一段距离(大约0.002),但是,当时发明这个魔数的人并没有在整个浮点数区间上去进行数值模拟,所以,这个数虽然好,但是并不是最优的。后来,Loment在整个32位浮点数区间上进行了模拟,得到了更加准确的结果。但是,这个结果依然不是真正数学意义上的最优解,这个解目前依然是未解之谜。


为什么不能获得准确解呢?因为这个过程中必定涉及一个解超越方程的过程,超越方程是无解析解的。。。或许这个问题能有其他的优化方法,但是这就不得而知了,或许这就是一个新的尚待解决的数学猜想。。。

0 0
原创粉丝点击