text: # optimize convex objective function
  from numpy import arange
  from scipy.optimize import minimize_scalar
  from matplotlib import pyplot
  
  # objective function
  def objective(x):
  	return (5.0 + x)**2.0
  
  # minimize the function
  result = minimize_scalar(objective, method='brent')
  # summarize the result
  opt_x, opt_y = result['x'], result['fun']
  print('Optimal Input x: %.6f' % opt_x)
  print('Optimal Output f(x): %.6f' % opt_y)
  print('Total Evaluations n: %d' % result['nfev'])
  # define the range
  r_min, r_max = -10.0, 10.0
  # prepare inputs
  inputs = arange(r_min, r_max, 0.1)
  # compute targets
  targets = [objective(x) for x in inputs]
  # plot inputs vs target
  pyplot.plot(inputs, targets, '--')
  # plot the optima
  pyplot.plot([opt_x], [opt_y], 's', color='r')
  # show the plot
  pyplot.show()
  