【问题标题】:How can I calculate the number of identical bits between my approximation of pi (π) and its real value?如何计算 pi (π) 的近似值与其实际值之间的相同位数?
【发布时间】:2016-09-21 23:40:47
【问题描述】:

我使用辛普森法则来近似 pi 的值。现在我想确定我计算的近似值与 pi 的实际值之间有多少位相同。

这是我近似 pi 值的方法:

function simpson(f, n, a, b) {
    var h = (b - a) / n;
    var sum = f(a) + f(b);

    for (var i = 1; i <= n; i += 2)
        sum += 4 * f(a + i * h);

    for(var i = 2; i <= n - 1; i += 2)
        sum += 2 * f(a + i * h);

    return h * sum / 3.0;
}

【问题讨论】:

  • 请选择一种语言,除非您需要与语言无关的算法。
  • 您可以XOR 相同的两位和位归零。困难,从你的两个值制作定点数。我是否可以建议查看 pi 与您的近似值之间差异的 log base 2。整数部分将是与二进制点(类似于小数点)相差的位数。 float bits = log( pi - approximation)/log(2);
  • 我假设“pi 的实际值”是指“在特定浮点表示中最接近的 pi”。
  • 想一想你最好做那个log( abs( pi - approximation )/ log( 2 );

标签: javascript java c# c++ algorithm


【解决方案1】:

对精确值和计算值执行 XOR 运算,然后计算最终结果中零的数量。

还计算从精确值的 MSB + 1 开始计数的第一位的索引 - 这是数字中冗余填充零的数量。把它从之前的结果中去掉。

当然,这取决于所用数据结构的精度。此外,我确信这适用于您从 JS 标记为 apart 的所有语言。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-04
    • 1970-01-01
    • 2021-11-18
    • 1970-01-01
    • 2011-02-28
    • 2012-07-18
    • 1970-01-01
    相关资源
    最近更新 更多