import numpy as npdef kok_bulma_ikiye_bolme(fonksiyon, aralikKucuk, aralikBuyuk, tolerans):'''https://pythonnumericalmethods.berkeley.edu/notebooks/chapter19.03-Bisection-Method.html '''# aralikKucuk ve aralikBuyuk kök mü?if np.sign(fonksiyon(aralikKucuk)) == np.sign(fonksiyon(aralikBuyuk)):raiseException("The scalars a and b do not bound a root")# Aralığın orta noktasını bul m = (aralikKucuk + aralikBuyuk)/2# Eğer orta nokta kök ise, kök orta noktadır.if np.abs(fonksiyon(m)) < tolerans:return m# Eğer kök aralik küçük ve orta nokta arasındaysa, aralığı küçültelif np.sign(fonksiyon(aralikKucuk)) == np.sign(fonksiyon(m)):return kok_bulma_ikiye_bolme(fonksiyon, m, aralikBuyuk, tolerans)# Eğer kök aralik büyük ve orta nokta arasındaysa, aralığı küçültelif np.sign(fonksiyon(aralikBuyuk)) == np.sign(fonksiyon(m)):return kok_bulma_ikiye_bolme(fonksiyon, aralikKucuk, m, tolerans)# Ornekdef f(x):return x**3-10.0*x**2+5.0a =0.0b =1.0tol =1e-4x = kok_bulma_ikiye_bolme(f, a, b, tol)print('x =', '{:6.6f}'.format(x))print('f(x-tol) =', '{:6.6f}'.format(f(x-tol)))print('f(x) =', '{:6.6f}'.format(f(x)))
import numpy as npdef kok_bulma_newton_raphson(fonksiyon, turevFonksiyon, baslangicNoktasi, tolerans):'''https://pythonnumericalmethods.berkeley.edu/notebooks/chapter19.04-Newton-Raphson-Method.html '''# Başlangıç noktası kök mü?if np.abs(fonksiyon(baslangicNoktasi)) < tolerans:return baslangicNoktasi# Başlangıç noktası kök değilse, yeni bir başlangıç noktası bulelse:return kok_bulma_newton_raphson(fonksiyon, turevFonksiyon, baslangicNoktasi - fonksiyon(baslangicNoktasi)/turevFonksiyon(baslangicNoktasi), tolerans)def f(x): return x**2-2def f_prime(x):return2*xestimate = kok_bulma_newton_raphson(f, f_prime, 1.5, 1e-6)print("estimate =", estimate)print("sqrt(2) =", np.sqrt(2))