我想获得Eigen::Array
的每个元素的基数为10的日志。
要获取自然日志,我只需根据文档执行array.log()
:http://eigen.tuxfamily.org/dox/classEigen_1_1Array.html
但我没有提到基数为10的日志。当然有一种方法可以在不写自己的情况下做到这一点吗?
目前我正在做类似array.unaryExpr(std::ptr_fun(std::log10))
的工作似乎工作得很好,但我希望能在不影响性能的情况下更好地整理 。
答案 0 :(得分:4)
使用math - 按自然日志(10)划分自然日志(数组)。这就是为什么许多计算器等不需要打扰实现每个基础。因为log_b(a) = ln(a)/ln(b).
我天真的计算科学猜测,无论如何,这将是计算它的最快方法,例如:因为e^x
的泰勒展开仅仅sum(x^n/n!)
超过n
,而对于其他基数,将会有另一个指数因子来计算(可能首先乘以x
)。 e
在实际分析中是一个优雅的数字,就像计算机科学中的优雅数字一样。