Ich hab ein kleines Skript zur Berechnung einer Nullstelle geschrieben:
Code: Alles auswählen
import math
def F(x):
f = math.exp(x) + x
df = math.exp(x) + 1
return (f, df)
def zero(F, x0 = 0, eps = 1.0e-08, n = 2000):
return x0 - F[0]/F[1]
if __name__ == '__main__':
#Smallest deviation.
eps = 1.0e-08
#"x0" starting value.
x = 0
print("Iteration Nr.: ", "Root value: ", "Value of f(x):")
for i in range(20000):
if F(x)[0] < eps:
break
x = zero(F(x), x)
print(("I " + str(i).rjust(3) + ": " + "%-3.8f" + ", " + "%-3.8f")% (x, F(x)[0]))
print("**********************")
#I absolutly dont understand, why x has two different values here!!!
print("Start value: %d" % x)
print("Final value: " + str(x))
print("**********************")
Iteration Nr.: Root value: Value of f(x):
I 0: -0.50000000, 0.10653066
I 1: -0.56631100, 0.00130451
I 2: -0.56714317, 0.00000020
I 3: -0.56714329, 0.00000000
**********************
Start value: 0
Final value: -0.56714329041
**********************
Was ich allerdings überhaupt nicht seh, ist wieso 'x' am Schluss für zwei verschiedene Werte stehen kann!?! Zusätzlich: Wenn ich in der Ausgabe am Schluss das zweite print-statement als
Code: Alles auswählen
print("Final value: %d" %x)