擅长:python、mysql、java
<pre><code>import numpy as np
import math
def maclurin_exp(x, power):
res = np.zeros_like(x)
for i in range(power):
res += x ** i / np.float(math.factorial(i))
return res
def maclurin_test():
arr = np.array([[120.0, 24.0, 12.0], [14.0, 28.0, 43.0]])
arr = arr / 255.0
# arr = np.array([0, 1, 2], dtype=np.float)
power = 10
mc_result = maclurin_exp(arr, power)
exp_result = np.exp(arr)
diff = np.abs(mc_result - exp_result)
return diff
if __name__ == "__main__":
print(maclurin_test())
</code></pre>
<p>输出:</p>
<blockquote>
<p>[[1.53308255e-10 2.22044605e-16 2.22044605e-16] [4.44089210e-16
2.22044605e-16 5.32907052e-15]]</p>
</blockquote>
<p>意味着小的非零差异
您的主要问题是没有强制转换阶乘,因此导致整数除法</p>