Кусочно-линейные функции

Для удобства будем считать, что все $$$a_i \ge 0$$$. Если $$$a_i < 0$$$, то можно заменить знак у $$$a_i$$$ и $$$b_i$$$ на противоположный, и значение $$$|a_i x + b_i|$$$ не поменяется.

Введём обозначение $$$$$$c_i = -{\frac {b_i} {a_i}}.$$$$$$

Выражение с модулем $$$|a_i x + b_i|$$$ можно записать как $$$|a_i(x - c_i)|$$$. Если $$$x \ge c_i$$$, то модуль раскроется как $$$a_i \cdot x - a_i \cdot c_i$$$, иначе — как $$$-a_i \cdot x + a_i \cdot c_i$$$.

Пока забудем про свободные члены $$$\pm a_i \cdot c_i$$$ и посмотрим на коэффициент при $$$x$$$. На отрезке между $$$x_i$$$ и $$$x_{i + 1}$$$ коэффициент при $$$x$$$ должен быть равен $$$$$${\frac {y_i - y_{i + 1}} {x_i - x_{i + 1}}}.$$$$$$

Давайте создадим $$$n - 1$$$ слагаемых $$$\pm|a_i(x - c_i)|$$$, в качестве $$$c_i$$$ взяв значения $$$x_1, x_2, \ldots, x_{n - 1}$$$. Раскроем все модули. Тогда на отрезке $$$x \in [x_1, x_2]$$$ только первое выражение $$$|a_1(x - c_1)|$$$ раскроется с плюсом, а остальные — с минусом. На отрезке $$$x \in [x_2, x_3]$$$ первые два выражения $$$|a_1(x - c_1)|$$$ и $$$|a_2(x - c_2)|$$$ раскроются с плюсом, а остальные — с минусом. Продолжим это, и получим систему уравнений относительно коэффициентов при $$$x$$$: $$$$$$a_1 - a_2 - a_3 - \ldots - a_{n - 1} = {\frac {y_1 - y_2} {x_1 - x_2}},$$$$$$ $$$$$$a_1 + a_2 - a_3 - \ldots - a_{n - 1} = {\frac {y_2 - y_3} {x_2 - x_3}},$$$$$$ $$$$$$a_1 + a_2 + a_3 - \ldots - a_{n - 1} = {\frac {y_3 - y_4} {x_3 - x_4}},$$$$$$ $$$$$$\ldots$$$$$$ $$$$$$a_1 + a_2 + a_3 + \ldots + a_{n - 1} = {\frac {y_{n - 1} - y_n} {x_{n - 1} - x_n}}.$$$$$$

Нужно найти из этой системы все значения $$$a_i$$$. Это нетрудно сделать для $$$a_2, \ldots, a_{n - 1}$$$, посмотрев на разности соседних строчек. Например, вычтя из второй строки первую, получим $$$$$$2a_2 = {\frac {y_2 - y_3} {x_2 - x_3}} - {\frac {y_1 - y_2} {x_1 - x_2}}.$$$$$$

Это позволит нам явно найти все значения $$$a_i$$$, кроме $$$a_1$$$. Подставив их в одно из уравнений, можно выразить $$$a_1$$$.

В процессе мы можем получить отрицательные значения $$$a_i$$$. Но в начале мы договорились, что все $$$a_i \ge 0$$$. Вместо того, чтобы использовать отрицательное $$$a_i$$$, возьмём выражение $$$-|a_i(x - c_i)|$$$ со знаком минус. Тогда $$$a_i$$$ раскроется с противоположным знаком.

Итак, мы получили модульную функцию, которая имеет те же коэффициенты при $$$x$$$, что и кусочно-линейная функция, на всех подотрезках $$$[x_i, x_{i + 1}]$$$. Это значит, что текущая функция отличается от искомой на константу. Можно явно посчитать значение в одной точке, затем прибавить последнее слагаемое $$$|0x + b_n|$$$ или $$$-|0x + b_n|$$$, чтобы завершить решение.

Альтернативное решение

Пусть $$$f(x)$$$ — данная нам кусочно-линейная функция, $$$g(x)$$$ — модульная функция, которую мы строим, $$$h(x) = f(x) - g(x)$$$. Давайте постепенно строить $$$g(x)$$$ с целью сделать $$$h(x)$$$ тождественно равной нулю.

Посмотрим на производные кусочно-линейной функции $$$f(x)$$$ на её отрезках. Имеется $$$n - 1$$$ отрезков непрерывности, обозначим производные на них как $$$k_1, k_2, \ldots, k_{n - 1}$$$. Аналогично предыдущему решению, получим формулу

$$$$$$k_i = {\frac{y_i - y_{i + 1}} {x_i - x_{i + 1}}}.$$$$$$

Посмотрим на точку излома $$$x_i$$$, $$$2 \le i \le n - 1$$$. В окрестности слева от неё производная равна $$$k_{i - 1}$$$, справа — $$$k_i$$$. Мы хотим создать такой же излом в функции $$$g(x)$$$. Это не всегда можно сделать с помощью одного слагаемого, но мы может обеспечить скачок производной на величину $$$k_i - k_{i - 1}$$$. Если $$$k_i \ge k_{i - 1}$$$, добавим в $$$g(x)$$$ слагаемое $$$$$$|0.5(k_i - k_{i - 1}) \cdot (x - x_i)|,$$$$$$ а если $$$k_i < k_{i - 1}$$$, то добавим слагаемое $$$$$$-|0.5(k_i - k_{i - 1}) \cdot (x - x_i)|.$$$$$$

После добавления всех $$$n - 2$$$ таких слагаемых, получим следующее: $$$g(x)$$$ до $$$x_1$$$ имеет какие-то значения и какую-то производную, это нами не учтено. Но в каждой точке излома $$$x_2, x_3, \ldots, x_{n - 1}$$$ производная функций $$$f(x)$$$ и $$$g(x)$$$ изменяется на одно и то же значение. Из этого следует, что на данный момент функция $$$h(x) = f(x) - g(x)$$$ является линейной на отрезке $$$[x_1, x_n]$$$.

Осталось добавить к $$$g(x)$$$ два слагаемых, который будут тождественно равны $$$h(x)$$$ на отрезке $$$[x_1, x_n]$$$. Точное значение $$$h(x)$$$ можно узнать, явно посчитав $$$f(x) - g(x)$$$ в точках $$$x_1$$$ и $$$x_n$$$. Теперь нужно с помощью двух слагаемых $$$\pm|a_{n - 1} x + b_{n - 1}|\pm|a_n x + b_n|$$$ построить произвольную линейную функцию на отрезке $$$[x_1, x_n]$$$. Это можно сделать, например, слагаемыми вида $$$$$$\pm|a_{n - 1}(x - x_1)|\pm|0x + b_n|.$$$$$$

Подробности мы оставляем на раздумье читателям.