chi*_*ash 1 php algorithm math
我正在寻找一种可以在PHP中实现的算法,以使用任意精度数学来获取整数的自然log()。我受到GMP库的PHP覆盖库的限制(有关PHP 中可用的GMP函数,请参见http://php.net/manual/zh/ref.gmp.php。)
如果您知道可以转换为PHP的通用算法,那也将是一个有用的起点。
我知道,PHP支持本机log()函数,但是我希望能够使用任意精度来解决这个问题。
密切相关的是获取exp()函数。如果我的男生数学对我来说是正确的,得到一个可以导致另一个。
好吧,您将拥有泰勒级数,可以对其进行重写以实现更好的收敛

要将等式转化为算法,您必须了解收敛级数的工作原理:每个项越来越小。这种下降发生得足够快,因此总和是一个有限值:ln(y)。
由于实数具有很好的属性,因此您可以考虑将序列收敛到ln(y):
.. 等等。
显然,计算此序列的算法很简单:
x = (y-1)/(y+1);
z = x * x;
L = 0;
k = 0;
for(k=1; x > epsilon; k+=2)
{
L += 2 * x / k;
x *= z;
}
Run Code Online (Sandbox Code Playgroud)
在某个时候,您的x会变得如此之小,以至于它不再会影响L的有趣数字,而只会修改更小的数字。如果这些修改对于您的目的而言太微不足道了,您可以停止。
因此,如果要达到1e ^ -20的精度,请将epsilon设置为比该值小得多,那么就可以了。
如果可以的话,请不要忘记在日志中进行分解。例如,如果它是一个理想的正方形,则ln(a²)= 2 ln(a)实际上,当(y-1)/(y + 1)较小时,该级数将收敛得更快,因此,当y较小时(或更确切地说,更近)到1,但是如果您打算使用整数,则该值应该相等。