Solutions
Learn about the solutions to the problems from the previous lesson.
Let’s see how to solve the exercises from the previous lessons.
Excercise 1: Extending binary search
In this case, we need to do two binary searches—one for each variable. That’s why it’s difficult to scale this algorithm to solve problems with many variables.
Let’s see the solution code:
Press + to interact
def f(x, y):return x + ydef constraint(x, y):return x + y > 1def binary_search(a1, b1, a2, b2, f, cons, tol):'''Now we need two intervals, one for each variable'''while a1 < b1 and abs(b1 - a1) > tol:m1 = (a1 + b1)/2while a2 < b2 and abs(b2 - a2) > tol:m2 = (a2 + b2)/2if cons(m1, m2):b2 = m2else:a2 = m2 + tolif cons(m1, b2):b1 = m1else:a1 = m1 + tolreturn b1, b2x, y = binary_search(-10, 10, -10, 10, f, constraint, 0.1)print(f"x = {x}, y = {y}")
Feel free to experiment with other functions and constraints.
In this case, the function should be monotonic with respect to each of the variables. That is, if we fix one of them, then the resulting function should be monotonic.
The constraint should divide the entire ...