数学パズル:2つの式をmax関数で1本にまとめよ
今回は、ちょっとした数学パズルを出題します。
次の 2つの式 を、1つの式 にまとめてみてください。
【問題】
次の2つの式をくっつけて1つの式にしなさい。
対象の式と条件は次のとおりです。
<式>
① $${y = -2x + 10 (0 ≦ x < 5)}$$
② $${y = 5x - 25 (x ≧ 5)}$$
つまり、
xが5未満なら①
xが5以上なら②
という 区間関数 です。
これを max関数を使って1つの式にまとめる のが今回の問題です。

<ヒント>
完成形は次の形になります。
$${y = -2x + 10 + [ ? ]}$$
この [ ? ] の部分を求めてください。
ただし次の条件があります。
max(0, x−5) を必ず使うこと。
※maxはカッコ内の候補のうち、最も大きい値を返す関数です。
例:
$${max(0,3) = 3}$$
$${max(0,-2) = 0}$$
(下にスクロールすると、正解があります)
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
【正解】
$${y = -2x + 10 + 7max(0,x-5)}$$
【解説】
ポイントは max(0,x−5) がスイッチになる ことです。
まずこの関数の動きを見てみます。
x < 5 のとき
$${x−5 < 0}$$ なので $${max(0,x−5) = 0}$$ になります。
すると式は、
$$
\begin{array}{}y &=& -2x + 10 + 7×0 \\ y &=& -2x + 10\end{array}
$$
つまり ①の式そのもの になります。
x ≧ 5 のとき
このとき $${x−5 ≧ 0}$$ なので $${max(0,x−5) = x−5}$$ になります。
式に代入すると
$${y = -2x + 10 + 7(x-5)}$$
これを整理すると
$$
\begin{array}{}y &=& -2x + 10 + 7x - 35 \\ y &=& 5x - 25\end{array}
$$
となり、②の式と一致します。
なぜ「7」をかけるのか
ここが一番のポイントです。
元の2つの式の 傾き を比べてみます。
① $${y = -2x + 10}$$ → 傾きは -2
② $${y = 5x - 25}$$ → 傾きは 5
差は $${5 - (-2) = 7}$$ です。
つまり 傾きの差を max(0,x-5) にかける ことで、
x<5では影響なし
x≧5で傾きが変化
という仕組みを作っています。
まとめ
区間関数
x<a の式
x≧a の式
は、
$${基準の式 + (傾きの差)max(0,x-a)}$$
という形で 1本の式にまとめることができます。
このテクニックは
数学パズル
プログラミング
ゲームの数式設計
などでもよく使われる便利な考え方です。
