数值计算尝试

时间:2015-12-29 23:14:04

标签: python ipython computer-science precision numerical-methods

我今天正在阅读Mathematics,我看到了this个问题。请看看问题和Brevan Ellefsen的回答。

问题是关于采用f(x)=x^(2*x^(3*x^(4*x^(5*x^(6*x^(7*x^(...)))))))的衍生物(看起来像SO不支持LaTeX)

Brevan Ellefsen并没有真正回答这个问题,但对这个功能进行了数值计算。从这个答案的动机,我试图在Python中实现该功能。我没有任何数值方法的经验,但我真的很喜欢这种编码。

所以这是我的代码:

# Precision is set to 50.
def f(k, x):
    if (k < 1):
        # First argument cannot be less than one.
        return -1
    try:
        temp = 1
        for i in xrange(k):
            temp = (k-i)*(x**temp)
        return temp
    except TypeError:
        # k should be an integer.
        return -1

现在我正在调用k = 4x = 0.5的函数,并且我将我的函数输出与WolframAlpha的输出进行比较。结果如下:

0.43854381197983005602480943707632832229137420654297 <-- My output
0.43854381197983004379857027951312617339018977615169 <-- WolframAlpha's output

正如您所看到的,在某一点之后,输出是非常不同的。这不是一个很大的区别,但仍足以让我好奇。

  • 为什么会这样? 对于这部分,this一个是有帮助的,我几个月前已经看过它,所以我很少知道浮动数字行为,但我不确定这是我的原因我在第一时间发布问题的情况。无论如何,我仍然需要帮助以下。
  • 我的功能不正常吗?
    • 如果是这样,我该如何解决?
    • 如果可以,哪个结果更准确?
    • 如何优化代码?

0 个答案:

没有答案