Brent’s method is an optimization algorithm that combines a bisecting algorithm (Dekker’s method) and inverse quadratic interpolation. It can be used for constrained and unconstrained univariate function optimization. The Brent-Dekker method is an extension of the bisection method. It is a root-finding algorithm that combines elements of the secant method and inverse quadratic interpolation. It has reliable and fast convergence properties, and it is the univariate optimization algorithm of choice in many popular numerical optimization packages.
from numpy import arange
from scipy.optimize import minimize_scalar
import matplotlib.pyplot as plt
def obj_fun(x):
return (x - 2.0) * x * (x + 2.0)**2.0
result = minimize_scalar(obj_fun, method='brent')
opt_x, opt_y = result['x'], result['fun']
print('Optimal x: %.6f' % opt_x)
print('Optimal y: %.6f' % opt_y)
print('Total Evaluations n: %d' % result['nfev'])
x_min, x_max = -3.0, 2.0
x = arange(x_min, x_max, 0.1)
y = [obj_fun(x) for x in x]
plt.plot(x, y)
plt.plot([opt_x], [opt_y], 'o', color='r')
plt.xlabel('x')
plt.ylabel('y')
plt.savefig("ex436.png", dpi=100)
plt.show()
Last Updated on 2024-07-18 by gantovnik

Recent Comments