2
$\begingroup$

How do you solve equations that involve the $\max$ function? For example: $\max(8-x, 0) + \max(272-x, 0) + \max(-100-x, 0) = 180$

In this case, I can work out in my head that $x = 92.$ But what is the general procedure to use when the number of $\max$ terms are arbitrary? Thanks for the help, here is a Python solution for the problem if anyone is interested.

def solve_max(y, a):     y = sorted(y)     for idx, y1 in enumerate(y):         y_left = y[idx:]         y_sum = sum(y_left)         x = (y_sum - a) / len(y_left)         if x <= y1:             return x print solve_max([8, 272, -100], 180) 

4 Answers 4

4

Check each of the possible cases. In your equations the "critical" points (i. e. the points where one of the max's switches) are $8$, $272$ and $-100$. For $x \le -100$ your equation reads \[ 8-x + 272 - x + (-100-x) = 180 \iff 180 - 3x = 180 \] which doesn't have a solution in $(-\infty, -100]$.

For $-100 \le x \le 8$, we have \[ 8-x + 272 - x = 180 \iff 280 - 2x = 180 \] and the only solution $50\not\in [-100, 8]$.

For $8 \le x \le 272$ we have \[ 272-x = 180 \iff x = 92 \] so here we have a solution.

And finally for $x \ge 272$ the equation reads \[ 0 = 180 \] so no more solutions.

2

Hint: You can think of $max(8-x,0)$ as a piecewise defined function. $ max(8-x,0) = \begin{cases} 0 \text{ if $ x\geq 8$} &\\ 8-x \text{ if $x \lt 8$} \end{cases} $ Apply this idea to other $max$ functions as well.

2

Here is the general solution for your max function. For example: $ \max(a_1 - b_1*x, c_1) + \max(a_2 - b_2*x, c_2) + \max(a_3 - b_3*x, c_3) = d $ solution steps(you can easily turn these into any programming language):
1. Calculate ratio threshhold for each max block. $ a_1 - b_1*x = c_1 \Rightarrow r_1 = \frac{a_1-c_1}{b_1} $ 2. Sort these ratios from small to large. suppose $r_1 \leq r_2 \leq r_3$
3. Initialize variables $a = \sum_{i=1}^3a_i, b=\sum_{i=1}^3b_i, a_0 = 0, b_0 =0,c_0 =0$
4. Iterate form $j = 0 \to 2$
$a = a - a_j, b = b - b_j, d = d - c_j$
$x = \frac{a-d}{b}$
if $x \leq r_{i+1}$ break, we get the answer
else $j = j+1$

1

In different domains, the max function will yield different values (of course!). Therefore, you can turn the max function into a piecewise function over the different domains, and then compute the zeros of a (potentially extensive) piecewise function.

For instance, you can write $\max(8-x,0)$ as $f(x) = \left\{\begin{array}{cc} 0, & x \ge 8, \\ 8-x, & x < 8. \end{array}\right.$

  • 0
    Beaten to the punch!2012-05-15