Загрузка данных


import numpy as np
import matplotlib.pyplot as plt

# Коэффициенты для варианта 6
# B = -3.327, C = -7.204, D = 11.442
# Уравнение: x^3 - B*x^2 + C*x - D = x^3 + 3.327*x^2 - 7.204*x - 11.442
def f(x):
    return x**3 + 3.327*x**2 - 7.204*x - 11.442

# Метод золотого сечения для поиска максимума
def golden_max(a, b, eps=1e-6):
    gr = (np.sqrt(5) - 1) / 2          # золотое сечение
    x1 = b - gr * (b - a)
    x2 = a + gr * (b - a)
    f1 = f(x1)
    f2 = f(x2)

    while (b - a) > eps:
        if f1 > f2:
            b = x2
            x2 = x1
            f2 = f1
            x1 = b - gr * (b - a)
            f1 = f(x1)
        else:
            a = x1
            x1 = x2
            f1 = f2
            x2 = a + gr * (b - a)
            f2 = f(x2)

    return (a + b) / 2

# Поиск максимума на отрезке [-3.2, -2.7] (максимум около -3.014)
x_max = golden_max(-3.2, -2.7)
y_max = f(x_max)

print("Метод золотого сечения (максимум) для варианта 6:")
print(f"x_max = {x_max:.8f}")
print(f"f(x_max) = {y_max:.8f}")

# Построение графика
xs = np.linspace(-5, 5, 500)
plt.plot(xs, f(xs), 'b-', label='f(x)')
plt.plot(x_max, y_max, 'ro', markersize=8, label='Найденный максимум')
plt.grid(True)
plt.title(f"f(x) = x³ + 3.327x² - 7.204x - 11.442")
plt.xlabel('x')
plt.ylabel('f(x)')
plt.legend()
plt.show()