import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import root_scalar, minimize_scalar
def f(x):
return x**3 + 0.205*x**2 - 10.880*x - 1.469
# 1. Таблица значений
for x in np.arange(-5, 5, 0.5):
print(f'{x:0.3f} {f(x):0.3f}')
# 2. Предварительный график
xs = np.linspace(-5, 5, 100)
plt.plot(xs, f(xs))
plt.grid(1)
# 3. Корни через np.roots
xn = np.roots([1, 0.205, -10.880, -1.469])
print('Корни через np.roots:\n', xn)
# 4. Корни через root_scalar (для проверки)
r1 = root_scalar(f, bracket=[-3.5, -3.2], method='bisect').root
r2 = root_scalar(f, bracket=[-0.2, -0.1], method='bisect').root
r3 = root_scalar(f, bracket=[3.2, 3.3], method='bisect').root
print('Корни через root_scalar:', r1, r2, r3)
# 5. Экстремумы через minimize_scalar
min_res = minimize_scalar(f, bounds=[1.5, 2.2], method='bounded')
max_res = minimize_scalar(lambda x: -f(x), bounds=[-2.2, -1.7], method='bounded')
print(f'Минимум: x={min_res.x:.6f}, f={min_res.fun:.6f}')
print(f'Максимум: x={max_res.x:.6f}, f={-max_res.fun:.6f}')
# Отображаем точки на графике
plt.plot(r1, f(r1), 'ro')
plt.plot(r2, f(r2), 'ro')
plt.plot(r3, f(r3), 'ro')
plt.plot(min_res.x, min_res.fun, 'g^')
plt.plot(max_res.x, -max_res.fun, 'mv')
plt.show()