Имеется вектор
действительных чисел длиной
.
. Можно дополнить условием
если это чем то поможет. Нужно придумать скалярную функцию
, монотонно убывающую когда компоненты вектора начинают сбиваться в кучки, число которых по всей видимости придется задавать. Например,
максимальна для вектора 5, 10, 15 , 20, 25, 30. Число кучек зададим две. Для 7, 10, 12.3 , 23, 25, 28 значение
уже меньше, поскольку значения сбиваются в две кучки. Для 10, 10, 10 , 24, 24, 24 значение
равно нулю. Как и для 11, 11, 20 , 20, 20, 20 и многих других вариантов. Я пробовал следующий вариант. Для простоты обозначу разницы соседних компонент буквами
Функция отлично работает для двух кучек. Для трех кучек нужно уже три умножения
и т.д. То есть, если
, для двух кучек число слагаемых равно
. Для трех куч число слагаемых равно
Проблема в том, что
у меня 100 а кучек 30. И число слагаемых будет приблизительно 70 в 30й степени.
Функция используется как стабилизирующий функционал в регуляризации Тихонова. Не знаю на сколько мой вариант удовлетворяет условию выпуклости, но работает как надо. Оптимизация выполняется градиентным методом, поэтому функция должна быть везде дифференцируема.