Python 为什么我在这个简单的计算中得到了错误的答案

Python 为什么我在这个简单的计算中得到了错误的答案,python,python-2.7,Python,Python 2.7,因此,我试图编写一个代码,用python进行这个简单的计算 我的代码: T0 = 1.0 def T_iteration(n): def Ti(i): if i<=0: return T0 else: return Ti(i-1)+(1.0/n)*((-2*Ti(i-1)) + (0.5*math.exp(-((i-1)/n)))) T_list = [] for i in rang

因此,我试图编写一个代码,用python进行这个简单的计算

我的代码:

T0 = 1.0

def T_iteration(n):
    def Ti(i):
        if i<=0:
            return T0
        else:
            return Ti(i-1)+(1.0/n)*((-2*Ti(i-1)) + (0.5*math.exp(-((i-1)/n))))
    T_list = []
    for i in range(0, n+1):
        T_list.append(Ti(i))
    return T_list

为什么我的输出与问题中的示例不同?我做错了什么?

(0.5*math.exp((I-1)/n))应该改为(0.5*math.exp((I-1.0)/n)),因为(I-1)/n会失去精度。

简单的答案是,表达式末尾有整数除法

return Ti(i-1)+(1.0/n)*((-2*Ti(i-1)) + (0.5*math.exp(-((i-1)/n))))
                                                            ^
                                                           HERE
你应该:

  • 将其设为十进制,或
  • \uuuuu future\uuuu
    导入
    除法
    ,并从较早的
    1.0/n
    中删除小数点,以保持一致性

    from __future__ import division
    import math
    

只是猜测这是一个类型错误。检查最后的
math.exp
参数。这就是整数运算,对吗?您可能希望它执行浮点运算,以便
1/3
返回0.3333。。。不是0<代码>(i-1)*1.0/n可能会奏效。就是这样。谢谢乔纳森
from __future__ import division
import math