初めてのポスターです。私の質問です:次の問題の背後にある一般的な数学の原理は何ですか?ループ指数の収束の原理は?
例えば、 [3,3,3,3,4,6,3,4,4,5]と、全てが第1のベクトルより小さい値で始まるループインデックスを表す別のベクトルとを含む。 [1,1,1,1,1,1,1,1,1,1]である。各ループインデックスが最初のベクトルの対応するインデックスと等しい場合は、それを1にリセットします。プログラムは、すべてのインデックスが1に等しいときに終了します。
これは整数分解のようですが、これを一般的にどのように表現するのか分かりません。ここではどのような原則が働いていますか?同じ結果を達成するための計算上効率的な方法は何ですか?
ありがとうございます。
import numpy as np
unityVec = np.ones((10), dtype=np.int) # create a vector of ones
counter = 1 # initialize counter
counterVec = np.ones((10), dtype=np.int) # initialize counter array
counterVec = counterVec + 1 # make counter array > ones array
littleVec = ([3, 3, 3, 3, 4, 6, 3, 4, 4, 5]) # loop reset values
while not (np.array_equal(unityVec, counterVec)): # compare counter to ones vector
counterVec = counterVec + 1
for i in range(10):
if counterVec[i] == littleVec[i]:
counterVec[i] = 1 # reset counterVec element to 1 once it hits limit
#print("Counter: ", counter, "\tIndex: ", i, "\tcounterVec: ", counterVec, "\tlittleVec: ", littleVec)
counter = counter + 1
print("Indices converged after", counter-1, "iterations!")
期待される結果:最初のベクトルの値の積に等しいかそれより小さい正の整数値。
実験結果:与えられたサンプル値を用いて、インデックスは59回のループ後に収束する。
59がlittleVecの最小公倍数よりも1小さいことに注意してください。 –
これはhttps://math.stackexchangeに適しています。comであるが、元の配列のすべての整数の中で最も一般的な倍数である。 –
あなたの簡潔な返答をPaulとAlexanderにありがとう。 –