正しいと思うコードが少しあります。ただし、値のベクトルを返す必要がありますが、代わりに単一の累積値を返します。
pExact = 0.8
pOvershoot = 0.1
pUndershoot = 0.1
def move(p, U):
q = []
for i in range(len(p)):
s = pExact * p[(i - U) % len(p)]
s = s + pOvershoot * p[(i - U - 1) % len(p)]
s = s + pUndershoot * p[(i - U + 1) % len(p)]
print i, s # check if calculations are corrects
q.append(s)
return q # should return a vector
p = [0, 1, 0, 0]
print move(p, 1) # prints only cumulated value
[0.10000000000000001]
ベクトルではなく1つの値しか出力しない理由を理解しようとしてい[0, 0.1, 0.8, 0.1]
ます。