关于java中对数的计算

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

最近为了计算文档间的相关性需要用到对数的计算,在网上找到下面的方法:

其中的关键是:1 java标准包提供了自然对数的计算方法,2 其他的对数计算可以转换为自然对数的计算。

下面是转贴:但不知道谁是原创作者。

后来搜索到这个连接:http://www.cs.utsa.edu/~wagner/laws/ALogs.html

还是人家有专业精神:

下面是他的描述:

Java supplies a function to calculate natural logs, base e = 2.718281828459045. To calculate logs to other bases, you need to multiply by a fixed constant: for a log base b multiply by 1/logeb

Sun的J2SE提供了一个计算自然对数方法——double java.lang.Math.log(double)。请看如下代码:

double x = Math.log(5);

等价于下面的数学方程:

x = ln 5

x = loge5

其中e是内皮尔数或自然数。

如果你想算底不同的对数又该如何做呢?很遗憾,我们还没有办法计算以10为底或以2为底的对数。

但是它们却是在计算对数时用的最多的。

要想解决这个问题,我们就要回想曾经在学校里学过的数学和对数方程:

logx(y) =loge(x) / loge(y)

这只需一段简单的Java程序来实现:

public class Logarithm {

static public double log(double value, double base) {

return Math.log(value) / Math.log(base);

}

}

计算100的以10为底的对数就变为非常简单了:

double log = Logarithm.log(100, 10); // log is 2.0

512的以2为底的对数是:

double log = Logarithm.log(512, 2); // log is 9.0

下面的两个简单的方法也都是很有用的:

static public double log2(double value) {

return log(value, 2.0);

}

static public double log10(double value) {

return log(value, 10.0);

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有  導航