import numpy as np
def f(x):
# Коэффициенты варианта 6: B = -3.327, C = -7.204, D = 11.442
# Уравнение: x^3 - B*x^2 + C*x - D = 0
# f(x) = x^3 + 3.327*x^2 - 7.204*x - 11.442
return x**3 + 3.327*x**2 - 7.204*x - 11.442
def find_min_quadrisection(f, a, b, e=0.001, max_iter=1000):
"""
Поиск минимума функции f на отрезке [a, b] методом квадрисекции.
"""
for i in range(max_iter):
length = b - a
if length <= e:
return (a + b) / 2
x1 = a + length / 4
x2 = a + length / 2
x3 = a + 3 * length / 4
f1, f2, f3 = f(x1), f(x2), f(x3)
if f1 <= f2 and f1 <= f3:
b = x2 # минимум в [a, x2]
elif f2 <= f1 and f2 <= f3:
a = x1
b = x3 # минимум в [x1, x3]
else:
a = x2 # минимум в [x2, b]
return (a + b) / 2
# Поиск минимума на отрезке, содержащем точку минимума (≈0.7967)
a, b = 0.0, 2.0
min_x = find_min_quadrisection(f, a, b)
print("Метод квадрисекции (минимум) для варианта 6:")
print(f"Точка минимума: {min_x:.8f}")
print(f"Значение функции в минимуме: {f(min_x):.8f}")