2014-09-16 4 views
0

У меня есть цикл, который дает мне значения энергии. Я хотел бы знать, как я могу выполнять следующие задачи внутри цикла;для данных цикла, итерации и некоторых статистических расчетов в python

for i in range(1, 1000): 
    system = moves.move(system, 50, true) 
    print("%d: %s" % (i, system.energies())) 

1 Как я могу хранить значения выходной энергии в массиве или составлять список. например [E1, E2, E3, E4, E5, ... E1000].

2- Я хочу взять среднее из последних 10 значений хранимого массива [E991, E992 ... E1000]. Я назвал это как рассчитанное среднее.

3- Теперь программа проверки вычисленного среднего значения (из шага 2) и мой набор среднего значения в сценариях как этого

if calculated_mean <= set_mean 

тогда программа продолжит дальше.

, но если условие не выполняется, программа запускает еще 1000 шагов, которые будут от 1001 до 2000, начиная с 1000 в качестве начальной точки.

ответ

0
start = 0 
calculated_mean = float('inf') 
while calculated_mean > set_mean: 
    energies = [] 
    for i in range(start, start + 1000): 
     system = moves.move(system, 50, true) 
     energy = system.energies() 
     energies.append(energy) 
     print("%d: %s" % (i, energy)) 
    calculated_mean = sum(energies[-10:])/10 
+0

У меня возникла проблема с моей рассчитанной длиной линии из-за моих значений выходного напряжения. Я разместил здесь свою стену. Любая подсказка для этого? –

0

Примечание: диапазон (1, 1000), есть включительно слева, но не справа, так что ваша последняя величина будет 999, и длина списка будет 999:

>>> range(1,1000)[-1] 
999 
>>> len(range(1,1000)) 
999 

ли это то, что вы спрашивали, как это сделать?

def mean(vals): 
    return (sum(vals)/len(vals)) 

set_mean = *your desired value* 
calculated_mean = None 
energy = [] 

while (calculated_mean is None) or (calculated_mean <= set_mean): 
    for i in range(1, 1000): 
     system = moves.move(system, 50, true) 
     print("%d: %s" % (i, system.energies())) 
     energy.append(system.energies()) 
    calculated_mean = mean(energy[-10:]) 
+0

Это не имеет значения с 999 или 1000. Я хочу принять значение последних 10 полученных значений энергии из цикла. есть некоторые предположения. Сейчас я их пытаюсь. Я вернусь сюда, если найду какую-то проблему. Я очень благодарен всем моим товарищам за немедленный ответ. –

+0

У меня возникла проблема с моей рассчитанной длиной линии из-за моих выходных значений энергии. Я разместил здесь свою стену. Любая подсказка для этого? –

0

я получил ошибку при расчете calculated_mean. Я предполагаю, что это будет из-за моих выходных значений. Мои выходные энергии выглядят так, когда меня интересуют последние термины. E_ {total} == 4.74348e + 08}

здесь есть выборка для 3 этапов 96-97;

95: {E_ {box1_inter}^{CLJ} == 4.73813e + 08, E_ {box1_inter}^{LJ} == 4.73813e + 08, E_ {box1_inter}^{coulomb} == 26.3989, E_ {box1_intraclj}^{CLJ} == 274847 E_ {box1_intraclj}^{LJ} == 24780, E_ {box1_intraclj}^{coulomb} == 250067, E_ {box1_intra}^{1-4 [LJ]} == 0, E_ {box1_intra}^{1-4 [coulomb]} == 0 E_ {box1_intra}^{1-4} == 0, E_ {box1_intra}^{angle} == 119360, E_ {box1_intra}^{bend-bend} == 0, E_ {box1_intra}^{bond} == 78389.5 E_ {box1_intra}^{dihedral} == 61627.6, E_ {box1_intra}^{неправильный} == 0.250546, E_ {box1_intra}^{internal} == 259378, E_ {box1_intra}^{stretch-bend-torsion} == 0 E_ {box1_intra}^{stretch-bend} == 0, E_ {box1_intra}^{stretch-stretch} == 0 , E_ {box1_intra}^{urey-bradley} == 0, E_ {всего} == 4.74348e + 08}

96: {E_ {box1_inter}^{CLJ} == 4.73813e + 08, E_ {box1_inter}^{LJ} == 4.73813e + 08, E_ {box1_inter}^{coulomb} == 26.1315, E_ { box1_intraclj}^{CLJ} == 274847 E_ {box1_intraclj}^{LJ} == 24780, E_ {box1_intraclj}^{coulomb} == 250067, E_ {box1_intra}^{1-4 [LJ]} == 0 , E_ {box1_intra}^{1-4 [coulomb]} == 0 E_ {box1_intra}^{1-4} == 0, E_ {box1_intra}^{angle} == 119360, E_ {box1_intra}^{ bend-bend} == 0, E_ {box1_intra}^{bond} == 78389.5 E_ {box1_intra}^{dihedral} == 61627.6, E_ {box1_intra}^{неправильный} == 0.250546, E_ {box1_intra}^{ internal} == 259378, E_ {box1_intra}^{stretch-bend-torsion} == 0 E_ {box1_intra}^{stretch-bend} == 0, E_ {box1_intra}^{stretch-stretch} == 0, E_ {box1_intra}^{urey-bradley} == 0, E_ {total} == 4.74348e + 08}

97: {E_ {box1_inter}^{CLJ} == 4.73813e + 08, E_ {box1_inter}^{LJ} == 4.73813e + 08, E_ {box1_inter}^{coulomb} == 26.8793, E_ {box1_intraclj}^{CLJ} == 274847 E_ {box1_intraclj}^{LJ} == 24780, E_ {box1_intraclj}^{coulomb} == 250067, E_ {box1_intra}^{1-4 [LJ] } == 0, E_ {box1_intra}^{1-4 [coulomb]} == 0 E_ {box1_intra}^{1-4} == 0, E_ {box1_intra}^{angle} == 119360, E_ { box1_intra}^{bend-bend} == 0, E_ {box1_intra}^{bond} == 78389.5 E_ {box1_intra}^{dihedral} == 61627.6, E_ {box1_intra}^{неправильный} == 0.250546, E_ { box1_intra}^{internal} == 259378, E_ {box1_intra}^{stretch-bend-torsion} == 0 E_ {box1_intra}^{stretch-bend} == 0, E_ {box1_intra}^{stretch-stretch} == 0, E_ {box1_intra}^{urey-bradley} == 0, E_ {total} == 4.74348e + 08}

Любые подсказки для этого?

Смежные вопросы