2016-11-28 9 views
-2

配列の最小値を探して印刷しようとしています。簡単?どうやらない。私のコード:配列の出力時に予期しない出力が発生する

array = generateAtoms(num) 
arrayPoints, vArraySum = moveMolecule(array, numSteps=steps) 
plotSetUp(arrayPoints) 
#print vArraySum 
print min(vArraySum), " kJ/mol is the minimum potential achieved" 

私の答えは-0.19の範囲にあると思います。上記の印刷文を印刷しないと、出力は約9,000,000kJ/molです。私がそれを印刷すると、私のprintステートメントは期待通りです。 (私は、印刷を実行した場合)ここで

vArraySumの例である:私は(プリントを使用して)それを「観察」するとき

[88824.74221919772, 18198.301666484836, 3531.2537391848105, 3531.2537391848105, 
3531.2537391848105, 16.432760713742276, -0.09559319207145775, -0.09559319207145775, 
-0.19379982167330503, -0.19379982167330503, -0.19379982167330503, -0.19379982167330503, 
-0.19379982167330503, -0.19379982167330503, -0.19379982167330503, -0.19379982167330503, 
-0.19379982167330503, -0.19379982167330503, -0.19379982167330503, -0.19379982167330503] 

どのように出力が変化していますか?私は完全に迷っています。追加するには、900万の数字は毎回同じ数字ではありませんが、毎回約900万です。

EDIT2:

def moveMolecule(array, numSteps): 
# Moves molecules in random directions by adding random array 
# Will not move points if potential of system increases 
points = [] 
vArray = [] 
vArraySum = [] 
progress = 0 

points.append(array) 
for i in range(numSteps): 
    addArray = np.random.uniform(low=-0.2, high=0.2, size=(num,3)) 
    if sumV(np.add(array, addArray)) < sumV(array): 
     array = np.add(array, addArray) 
    else: 
     array = array 
    points.append(array) 
    vArray.append(vArrays(array)) 
    vArraySum.append(sumV(array)) 

    # Updates progress bar 
    progress = updateProgressBar(progress, i, numSteps) 

plotV(points, vArray) 

return points, vArraySum 

EDIT3:

def functionV(r): 
# Function to calculate LJ potential 
return ((4 * _e) * (((_d/r) ** 12) - ((_d/r) ** 6))) 


def sumV(array): 
# Uses NN search to calculate sum of potential of system 
V = [] 

# Performs NN search to collect nearby radii 
points = NNSearchSetUp(array) 

radius = NNSearch(points) 

# Calculate potential for NNs 
for r in radius: 
    V.append(functionV(r)) 
return sum(V) 
+0

コードの後ろにある入​​力とロジックについての情報を追加できますか?実際に私はあなたのコードに間違って何も表示されません。 –

+0

再生できません。 – TigerhawkT3

+1

「追加したい情報があればお知らせください。」コードで使用する関数はどうですか? 'generateAtoms()'、 'moveMolecule'や' plotSetUp'が、あなたがそれらの定義を秘密にしておくときに期待どおりに動作しないのを誰が知っていると思いますか? [mcve]を挙げてください。 –

答えて

0

はそれを考え出しました。 vArraySumはnumpyの配列です。 minでうまくやってはいけませんか?ありがとう@ジョン。配列を浮動小数点形式にキャストすると問題が解決しました

+0

'numpy'には' np.min() 'と呼ばれる関数もあります。私はそれがうまくいかなければならないと思うので、 'min()'の問題がどうなっているのかよく分かりません。 –

関連する問題