以下是引用wp231957在2013-1-27 22:15:37的发言:
a的x次幂等于b 如果都是正整数 不用log也可以自己写一个函数
log函数自己能写吗 是否有模拟log的公式呢
你可以去查查 泰勒展式 的概念。对于没学过高数的人来说可能有点难理解,不过公式可以直接拿来用于编程。
ln(1+x) = x - x^2/2 + x^3/3 - x^4/4 + ... -1 < x < 1
其中 x 越接近 0,公式的精度越高。就是说只需计算很少的项数就可以达到很高的精度。
如果 1+x 大于 2 的话,要找一个 k 使得 2^k * y = 1+x 中的 y 尽量接近 1,从而 y = 1+x' 中的 x' 接近 0。
这是一个简单的问题:相当于判断 1+x 离 2 的几次方最近。
一旦找到这个 k 那么 ln(1+x) = ln(2^k * y) = kln2 + ln(1+x')。ln2 是常数,可以事先求好写在程序里,而后面那项可以施用之前提到的公式。
按上面的方法编程,计算效率就已经很高了。
如果还想让级数收敛的速度加快,方法是写出 ln(1-x) 的展式,和上面那个对比就是偶次项不变,奇次项符号相反。两式相加可以得到一个二阶收敛的级数。然后利用 ln(1-x) 和 ln(1+x) 的关系,解 ln(1+x) 和那个二阶收敛级数间的关系。具体过程我也记不清了。
[
本帖最后由 pangding 于 2013-1-29 09:11 编辑 ]