import math
# ================== ЗДЕСЬ ЗАДАЁТСЯ УРАВНЕНИЕ ==================
def function(x):
return 2 * math.log(x) - x ** 2 + 5 # 2*ln(x) - x^2 + 5 = 0
# ==============================================================
EPSILON = 0.0001
# Отрезки, на каждом из которых по одному корню (найдены по таблице знаков)
segments = [(0.01, 0.1), (2, 3)]
for left, right in segments:
value_left = function(left)
value_right = function(right)
# Проверка знаков ДО цикла
if value_left * value_right > 0:
print(f"На отрезке [{left}; {right}] нет смены знака")
continue
previous_x = None
iterations = 0
while True:
x = (left + right) / 2
value_x = function(x)
iterations += 1
# Проверка 1: x - точный корень
if value_x == 0:
break
# Проверка 2: |x(n) - x(n-1)| < EPSILON
if previous_x is not None and abs(x - previous_x) < EPSILON:
break
# Выбор половины отрезка
if value_left * value_x < 0:
right = x
else:
left = x
value_left = value_x
previous_x = x
print(f"Корень: {x:.8f}, итераций: {iterations}")