Epsilon ist auf 0,1 gesetzt, aber es gibt mir Ergebnisse bis 1.2. Ich weiß nicht, was das verursacht. Kann jemand helfen?Python Epsilon falsche Berechnung
def evaluate_poly(poly, x):
total = 0.0
for i in range(len(poly)):
total += poly[i] * (x ** i)
return total
def compute_deriv(poly):
deriv = []
if len(poly) < 2:
return [0.0]
else:
for i in range(1, len(poly)):
deriv.append(float(poly[i] * i))
return deriv
def compute_root(poly, x_0, epsilon):
num = 0
root = x_0
while abs(evaluate_poly(poly, root)) >= epsilon:
root = root - evaluate_poly(poly, root)/evaluate_poly(compute_deriv(poly), root)
num += 1
return [root, num]
print(compute_root((1.0,-2.0,1.0), 14, 0.1))
Bitte zuerst angeben Ihr Problem : Was ist Epsilon, was wollen Sie berechnen, ... –
"Epsilon ist auf 1,1" festgelegt - Ihr Code scheint 0,1 zu verwenden. "Aber es gibt mir Ergebnisse bis 1.2." -- was bedeutet das überhaupt? Sie müssten mehr Details liefern, wenn Sie jemanden davon überzeugen wollen, dass das, was Sie sehen, etwas mehr ist als Gleitkomma-Rundungsfehler. –
@SergeBallesta Ich verstehe, dass (obwohl es mehr wie Newtons Methode aussieht), aber ihr Code verwendet Epsilon = 0,1, während in der Frage, sie sagten, dass sie Epsilon auf 1,1 gesetzt hatten. –