so...hab das ganze heute nochmal überarbeitet und versucht eure anmerkungen umzusetzen
@BlackJack
wie gesagt ich bin anfänger mit Python. Selbstverständlich hab ich eine grundidee wie mein Programm arbeiten soll und versuch auch diese umzusetzen. aber wenn mir gesagt wird ich soll dazu time.clock() verwenden dann such ich infos zu dem modul und probiers dann eben aus was wann wie passiert...und wenn ich dabei einen fehler mach dann weiß ich nächstesmal immerhin wie es nicht geht...^^
Code: Alles auswählen
#!/usr/bin/python
import math
import matplotlib
import matplotlib.pyplot as pyplot
import time
step = 0
m=[]
def fib1(n):
if n <= 1: return 1
return fib1(n-1)+fib1(n-2)
n = 4
while len(m) < 14:
if n <= 17:
if n >= 4:
t1 = time.clock()
step = 0
while step < 10000:
g = fib1(n)
step = step + 1
t2 = time.clock()
tend = t2 - t1
m.append((n, tend))
n = n + 1
print m
bild = pyplot.figure()
graph_normal = bild.add_subplot(221, title="Rechenzeit")
graph_normal.plot()
graph_normal.set_xlim(4,17)
graph_normal.set_ylim(0.0000001 , 0.002 , 0.00001)
pyplot.show()
ausgabe:
Code: Alles auswählen
[(4, 0.030000000000000027), (5, 0.049999999999999989), (6, 0.07999999999999996), (7, 0.12), (8, 0.20000000000000007), (9, 0.32000000000000006), (10, 0.53999999999999981), (11, 0.85999999999999988), (12, 1.4400000000000004), (13, 2.3099999999999996), (14, 3.6899999999999995), (15, 5.8500000000000014), (16, 9.1699999999999982), (17, 14.739999999999998)]
als erklärung:
ich hab jetzt die def der funktion aus der schleife raus gezogen. über die Länge der Liste in der meine ergebnisse gespeichert werden setz ich dei grenze für meine schleife zum berechnen. Die funktion in der schleife berechnet die fib werte von 4 bis 17 jeweils 10000mal und misst jedesmal die zeit.
die zeit und der wert von n wird dann als tuppel in die Liste m gespeichert.
so die zeiten die da rauskommen erscheinen mir diesmal sehr viel realistischer als vorher^^
das ploten unten steht bis jetzt nur dran weils da sein muss...wie genau man das programiert damit es das tut es es tun soll find ich jetzt mal raus...^^