所以我试着编写一个在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
输出:
T_iteration(3)
Out[292]: [1.0, 0.5, 0.33333333333333337, 0.2777777777777778]
为什么我的输出与问题中的示例不同?我做错了什么?
答案 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 会失去精确度。