Das folgende gibt Werte auf einer Parabel aus, die immer weiter Richtung minimum kommen.
Wie kann ich machen, dass die Dezimalpunkte jeweils schön übereinander sind??
Code: Alles auswählen
#!/usr/bin/env python
from random import random
#Initialization
nstep    = 100 
energies = []  
x0 = 2*(random() - 0.5)
print 'x0', x0
print
#Return the energy at a position d
#Value for k?
def getEnergy(d, k=1.0):
    return 0.5*k*d**2
#A new trial position
def move():
    return 2*(random() - 0.5)
x_temp      = x0
energy_temp = getEnergy(x_temp)
for i in range(nstep): 
    #Move
    x = move() 
    
    if getEnergy(x) < energy_temp: 
        print 'x', \
        str(round(x, 5)).rjust(10), \
        str(round(getEnergy(x), 6)).rjust(10),\
        '<'.rjust(4),\
        str(round(energy_temp,6)).rjust(10)    
        energies.append(getEnergy(x))
        energy_temp = getEnergy(x)
    
print energies
Code: Alles auswählen
x0 0.623974086044
x    0.57452   0.165037    <   0.194672
x   -0.14299   0.010223    <   0.165037
x   -0.08515   0.003626    <   0.010223
x    -0.0394   0.000776    <   0.003626
x    0.02846   0.000405    <   0.000776
x    0.00828    3.4e-05    <   0.000405
