如何在Javascript中执行不同的基本对数函数?

时间:2011-12-13 16:17:19

标签: javascript node.js logarithm

这个问题是在考虑node.js服务器的时候提出来的,但是我把这个问题称为“javascript”,因为我也可能将同样的逻辑用于客户端脚本。

问题在于:给定一组x值,y需要以对数方式进行缩放。 Math对象执行自然日志[ln(x)],但不提供用于指定对数基数的接口。

对于一个具体的例子,我需要找到以下内容:

log[512](2)

哪个应该返回.1111~

但是,我没有看到允许我完成此操作的界面,我也无法找到公开日志基础选项的库。当然这是一个常见的问题并且有一个解决方案,但我的搜索只找到了解决不同/无关问题的方法。想法?

2 个答案:

答案 0 :(得分:15)

您可以使用logarithm base change formula

log[a](n) = log[b](n) / log[b](a)

因此,为了获得log(2)base 512,请使用:

function log(b, n) {
    return Math.log(n) / Math.log(b);
}

alert(log(2, 512));

请注意,上面的Math.log使用自然日志库;即,它将以数学方式写成ln

答案 1 :(得分:4)

我今天发现这个答案是谷歌的第一个结果,如果其他人也发现了这个,那就是一个小错误。正确的版本如下:

function log(b, n) {  
    return Math.log(n) / Math.log(b);  
}