-1

I am trying to use scipy to find the minimum value for a variable that satisfies a condition in a simple volume = length * width * height example. I am trying to find the height which produces a volume of 1300 given a length of 10 and a width of 10. The answer should be 13, but scipy is telling me x: 1.0000044152960563

from scipy.optimize import minimize_scalar

def objective_function(x):
    target = 1300
    length = 10
    width = 10
    (length * width * x) - target
    return x

res = minimize_scalar(objective_function, method='bounded', bounds=(1, 100))
res
print(x)

Can I use the x value produced outside the function?

Progman
  • 16,827
  • 6
  • 33
  • 48

1 Answers1

0

I figured out what I was doing wrong. I needed to square the result to get a positive number, then take the square root.

from scipy.optimize import minimize_scalar
import math

def objective_function(x):
    target = 1300
    length = 10
    width = 10
    return (math.sqrt(((length * width * x) - target) ** 2))

res = minimize_scalar(objective_function, method='bounded', bounds=(1, 100))
res.x