Project1

标题: 如果能有存储无限长浮点数的机器就好了 [打印本页]

作者: RyanBern    时间: 2015-3-13 18:53
标题: 如果能有存储无限长浮点数的机器就好了
本帖最后由 RyanBern 于 2015-3-14 21:10 编辑

人们要研究各种算法,这是为什么呢?因为人类的科技不够强大,不足以发明每秒钟能进行无穷此运算的机器。如果这一天真的来临,那么那些研究算法的人都可以下岗了(雾)。
人们要研究各种各样数值稳定的算法,这又是为什么呢?因为人类的科技不够强大,不足以发明能存储无限长浮点数的机器。(雾)

对第一个问题大家可能比较熟悉,效率低的渣算法可以让你的电脑卡机没商量。
第二个问题的印象就不那么直观了,因为浮点数总有误差,而误差的累积是致命的。

昨天做的一个题目就能很好反应这一点。

计算普通定积分In,求n=1,2,3,...,50的值:

不难证明,In有以下递推式(如果证不出来承认其是对的即可):


有了递推式,就可以写代码来算了:
RUBY 代码复制
  1. x = Math.log(1.2)
  2. (1..50).each do |i|
  3.   x = -5 * x + 1.0 / i
  4.   print sprintf("%d:  %f\n", i, x)
  5. end


结果是这样的:


感觉哪里不太对劲的样子……

实际上,n=17左右的数就已经不对了。

但是,如果换一个递推式,计算将会变得很准确:

虽然I50不取0,但是即便这样,仍然能够准确算出0~45的值!

不禁感叹要是能有存储任意长浮点数的计算机就好了。
作者: taroxd    时间: 2015-3-13 18:59
其实上次那个病态的线性方程组可以更好地说明这个问题
作者: 龙和许也    时间: 2015-3-13 22:07
我要花多长时间才能容入你萌程序的交流呢……早知道好好学书了……
作者: summer92    时间: 2015-3-13 22:51
虽然不知道LZ在说什么,但是感觉好厉害的样子
作者: guaneva    时间: 2015-3-14 09:00
我这个数学天才都看不懂啊~~~{:2_276:}
作者: chd114    时间: 2015-3-14 10:20
如果这一天真的来临,那么AI就可以把人类取而代之那些研究算法的人都可以下岗了

算法是个壳子吧···以后还会有新的算法呢?
作者: orochi2k    时间: 2015-3-14 19:53
开个动态BUFF区,随便存几位,只要操作系统不报警




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1