在不损失精度的情况下有效逼近第n项

Efficient approximation of nth term without losing accuracy

提问人:v78 提问时间:9/5/2015 更新时间:9/5/2015 访问量:65

问:

探针给定 gn 的递归关系为

g0 = c,其中是连续双精度。
g n = f( gn-1 ) ,其中 f 是线性函数

然后找到另一个递归的值,由下式给出

h n = g n/exp(n

约束:1 <= n <= 10^9

从数学上讲,g(n) 的值可以在 log(n) 时间内计算,然后 h(n) 可以很容易地计算,但问题是双精度数据类型的溢出。因此,上述策略仅适用于 1000 左右的 n,而不适用于更大的 n。请注意,h(n) 的值可以在双精度范围内

实际问题是我们试图从 g(n) 计算 h(n)。我的问题是,有没有好方法可以直接计算 h(n) 而不会溢出双精度。

算法 浮动精度 离散数学 递归

评论

1赞 David Eisenstat 9/5/2015
将 f(x) 替换为 k(x) = f(x) / exp(1)?

答:

1赞 user1196549 9/5/2015 #1
G0=c
G1=ac+b
G2=a²c+ab+b
G3=a³c+a²b+ab+b
...
Gn=a^nc+b(a^n-1)/(a-1)

然后

Hn = (a/e)^nc+b((a/e)^n-1/e^n)/(a-1) ~ (a/e)^n (c + b/(a-1))