Why the error occurs:
ValueError: setting an array element with a sequence
and how to fix it?
import math
import numpy
import matplotlib.pyplot as plt
from scipy.optimize import minimize
def f (x):
return math.sin (x / 5) * math.exp (x / 10) + 5 * math.exp (-x / 2)
f2 = numpy.vectorize (f)
x0 = [14., 16., 13., 15., 17.]
res = minimize (f2, x0)
print res
Answer 1, authority 100%
From the documentation :
x0: ndarray, shape (n,)
Initial guess. Array of real elements of size (n,), where ‘n’ is the number of independent variables .
Because f (x)
is a function of one variable, then x0
must also consist of one element.
Example:
In [255]: minimize (f, [14.])
Out [255]:
fun: -11.898894665981317
hess_inv: array ([[18.83373626]])
jac: array ([0.])
message: 'Optimization terminated successfully.'
nfev: 24
nit: 2
njev: 8
status: 0
success: True
x: array ([25.88019315])