According to the SciPy documentation it is possible to minimize functions with multiple variables, yet it doesn’t tell how to optimize on such functions.
from scipy.optimize import minimize from math import * def f(c): return sqrt((sin(pi/2) + sin(0) + sin(c) - 2)**2 + (cos(pi/2) + cos(0) + cos(c) - 1)**2) print minimize(f, 3.14/2 + 3.14/7)
The above code does try to minimize the function f, but for my task I need to minimize with respect to three variables.
Simply introducing a second argument and adjusting minimize accordingly yields an error (TypeError: f() takes exactly 2 arguments (1 given)).
How does minimize work when minimizing with multiple variables.
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
Pack the multiple variables into a single array:
import scipy.optimize as optimize
def f(params):
# print(params) # <-- you'll see that params is a NumPy array
a, b, c = params # <-- for readability you may wish to assign names to the component variables
return a**2 + b**2 + c**2
initial_guess = [1, 1, 1]
result = optimize.minimize(f, initial_guess)
if result.success:
fitted_params = result.x
print(fitted_params)
else:
raise ValueError(result.message)
yields
[ -1.66705302e-08 -1.66705302e-08 -1.66705302e-08]
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0