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