使用自定义基础创建日志功能

时间:2011-07-12 05:23:03

标签: objective-c math logging

我有一个公式,这个公式使用带有自定义基数的日志函数,例如基数为b且值为x的日志。在objective-c中,我知道有一些日志函数可以在没有2或10的基数和基数的情况下计算。

是否有能够使用自定义/变量库计算日志函数的函数?或者可能有另一种方法来完成这个公式。

我的公式的基本思想是这个log(1 + 0.02)(1.26825)(1 + 0.02是基数)。这应该等于12.000。

3 个答案:

答案 0 :(得分:15)

像这样:

double logWithBase(double base, double x) {
    return log(x) / log(base);
}

答案 1 :(得分:2)

您可以使用logbx = logcx / logcb计算任意对数,其中c是更容易获得的基数之一,例如10e

对于您的特定示例,loge1.26825 = 0.237637997loge1.02 = 0.019802627。这是12.000(在我的计算器准确度范围内):0.237637997 / 0.019802627 = 12.000326876

事实上,1.0212实际上是1.268241795,如果你使用那个值,你会更接近12:

  • loge1.268241795 = 0.237631528
  • loge1.02 = 0.019802627
  • 0.237631528 / 0.019802627 = 12.000000197

答案 2 :(得分:1)

Ray是对的,但这是对它的Obj-C方法修改:

-(double) logWithBase:(double)base andNumber:(double)x {
    return log(x) / log(base);
}