我想解决的问题是以下函数的无限和:
![enter image description here](https://i.stack.imgur.com/UgFtA.gif)
对于总和,我使用 FTOL 确定标准。整个术语不会产生任何问题,直到z
变得非常大。我期望的最大值z
大约 220。正如您所看到的,第一项在阶乘 (221) 附近具有最大值,因此必须在阶乘 (500) 附近移动,直到达到确定标准。发现这个问题后,我不想更改整个代码(因为它只是一小部分)并尝试使用library('Rmpfr')
and library('gmp')
。问题是我没有得到我想要的。虽然乘法通常有效,但对于更高的值,减法会失败:
这有效
> factorialZ(22)-factorial(22)
Big Integer ('bigz') :
[1] 0
但这失败了:
> factorialZ(50)-factorial(50)
Big Integer ('bigz') :
[1] 359073645150499628823711419759505502520867983196160
我尝试的另一种方法:
> gamma(as(10,"mpfr"))-factorial(9)
1 'mpfr' number of precision 128 bits
[1] 0
> gamma(as(40,"mpfr"))-factorial(39)
1 'mpfr' number of precision 128 bits
[1] 1770811808798664813196481658880
一定有什么我不太明白的地方。有人对这个问题有更好的解决方案吗?或者有人可以帮助我解决上述问题吗?
我认为你错误地理解了优先事项factorialZ(x)-factorial(x)
。第二个学期,factorial(x)
被计算before它被转换为bigz
与第一项结合起来。
您必须使用 2^64(或其他,取决于您的机器)范围之外的任何整数bigz
- 兼容功能。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)