def sign(x): return (x > 0) - (x < 0) def f(x): return x * x * x * 5 + x * x * 2 + x * 3 + 4 def metoda_bisekcji(a, b, delta, epsilon): wartosc_a = f(a) wartosc_b = f(b) if(sign(wartosc_a) == sign(wartosc_b)): print('Funkcja nie ma miejsc zerowych') return dlugosc_przedzialu = b - a k = 1 while(True): dlugosc_przedzialu = dlugosc_przedzialu / 2.0 c = a + dlugosc_przedzialu w = f(c) if abs(dlugosc_przedzialu) < delta or abs(w) < epsilon: print("c :: " + str(c) + " f(c) :: " + str(w) + " kroki: " + str(k)) return if sign(w) != sign(wartosc_a): b = c wartosc_b = w else: a = c wartosc_a = w k += 1 if __name__ == '__main__': metoda_bisekcji(-10, 10, 0.1e-5, 0.1e-5) metoda_bisekcji(-10, 10, 0.1e-10, 0.1e-10)