不好意思,我找不到更好的标题。请看这个超级简单的Python程序:
x = start = 1.0
target = 0.1
coeff = 0.999
for c in range(100000):
print('{:5d} {:f}'.format(c, x))
if abs(target - x) < abs((x - start) * 0.01):
break
x = x * coeff + target * (1 - coeff)
简要说明:该程序通过迭代计算
x
和target
的加权平均值,以coeff
作为权重,将x
移向target
。当x
到达初始差异的1%时,程序停止。无论
x
和target
的初始值是什么,迭代次数都保持不变。我该如何设置
coeff
以预测迭代会进行多少次?非常感谢。
start
、target
和coeff
的值,这需要解决一个不等式多项式,形式为k0 * start * coeff^n + target * (k1 * coeff^n + k2 * coeff^(n-1) + ... + kn) < k
。 - fferrix
的值由以下公式给出:x_val = lambda n: start*(coeff**n) + target*(1-coeff)*(sum(coeff**i for i in range(n)))
。您需要找到解决条件的最小n值。 - pault