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

时间:2016-01-11 01:44:40

标签: python python-2.7

所以我试着编写一个在python

中进行这个简单计算的代码

enter image description here

我的代码:

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

输出:

T_iteration(3)
Out[292]: [1.0, 0.5, 0.33333333333333337, 0.2777777777777778]

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

2 个答案:

答案 0 :(得分:4)

简短的回答是表达式末尾有整数除法。

node --require

你应该:

  • 将其设为小数,或
  • return Ti(i-1)+(1.0/n)*((-2*Ti(i-1)) + (0.5*math.exp(-((i-1)/n)))) ^ HERE 导入division,并从早期__future__中删除小数,以保持一致性。

    1.0/n

答案 1 :(得分:2)

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