問7
import math
def question7(f, df, x, e = 0.00001):
if (abs(f(x)) < e):
return x
else:
x2 = x - f(x)/df(x)
if x != 0: # ゼロ除算を防ぐ
if (min(abs(x2 - x), abs((x2 - x) / x), abs(f(x2) - f(x)) ) < e):
return x2
else:
return question7(f, df, x2, e = e)
else:
if (min(abs(x2 - x), abs(f(x2) - f(x)) ) < e):
return x2
else:
return question7(f, df, x2, e = e)
def f(x):
return math.exp(x) - 3*x
def df(x):
return math.exp(x) - 3
question7(f, df, 0)
0.6190612833553127
def g(x):
return math.exp(x) * math.sin(x) - 2*x
def dg(x):
return math.exp(x) * math.sin(x) + math.exp(x) * math.cos(x) - 2
question7(g, dg, 3)
2.7923116281704905