24 янв. 2020 г.

О гладких и ступенчатых функциях

Добрый день!

Как известно, 2020 год объявлен годом гладких функций в России (к сожалению, нет). Конечно, мы не будем требовать непрерывности производных всех порядков, но хотя бы первый порядок же часто можно обеспечить.

О чём вообще речь? Наша жизнь наполнена ступенчатыми функциями. Само по себе это, возможно, не так уж и плохо, но ведь это контринтуитивно, это сбивает с толку, это часто похоже на обман или злую хитрость. Тоже замечаете это? Тогда сообщите об этом в комментариях, пожалуйста (я хочу понять, насколько моё психическое расстройство распространено).

О чём речь? Самый простой пример: в ближайшем ко мне продовольственном магазине при чеке выше 1000 рублей автоматически применяется скидка 15%. Хорошо? Да, наверное. Но если вдруг в корзине прямо сейчас товаров на 950 рублей, то выгоднее добавить какую-нибудь шоколадку за 50 р. (и тогда товаров будет на 1000 рублей, но со скидкой 15% получится 850 рублей (ситуация настолько банальная, что из этого хорошую задачку, наверное, придумать не удастся)). Мотивацию магазина я понимаю: он стимулирует покупать сразу много (не всегда нужного), разгружает кассы (очереди должны быть меньше, если люди реже ищут в кошельке карту/мелочь) и т.д., но комфорт человека страдает, по-моему.

Впрочем, «поломанной аддитивностью» (за большее количество товаров можно заплатить меньше) человека удивить сложно. В известном эксперименте Листа удалось показать следующее: «при совокупной оценке бо́льшие наборы оценивались выше маленьких, а при одиночной — ниже. С точки зрения экономической теории результат вызывает тревогу: экономическая ценность набора посуды или бейсбольных карточек — суммоподобная переменная. Добавление в набор элемента с положительной ценой может ее лишь увеличить». Но объяснение тут, конечно, совсем другое.

Мне неприятно от того, что вокруг так много ступенчатых функций: в страховании, на таможне, в банках и т.д. Взять тот же автомобильный налог (ниже данные по легковым автомобилям в Московской области в 2019 году):
- До 100 лошадиных сил ставка 10 р. за каждую лошадь.
- От 100 до 150 лошадиных сил ставка 34 р. за каждую лошадь.
- От 150 до 200 лошадиных сил ставка 49 р. за каждую лошадь.
И т.д. К чему это приводит? Давайте сравним налог для автомобилей с мощностью двигателя 99-101, 149-151, 199-201 лошадиных сил. Получаем следующие суммы:
- 10*99 = 990 и 34*101 = 3434 рубля (разница в три раза из-за двух лошадиных сил),
- 34*149 = 5066 и 49*151 = 7399 рублей (отличие в полтора раза из-за тех же двух лошадиных сил),
- 49*199 = 9751 и 65*201 = 13065 рублей (то же самое).
А вокруг 250 л.с. прыжок ещё сильнее: с 75 до 150 рублей.

Коряво же! Рассказывать о том, что это не главная проблема, что это мелочи, что есть куча всего серьёзного, я и сам могу. Но ведь всё равно коряво! А ведь можно было сделать нормально: первые 100 лошадиных сил по 10 рублей, а следующие уже по 34, затем по 49 р., потом по 75 и так далее. Я понимаю, что это чуть сложнее считать будет. Но плюс в том, что совершенно уйдёт необходимость переживать о том, что написано в ПТС (99 или 101, например).

По-моему, так можно сделать почти всегда при вычислении суммы/налога/штрафа и т.д. Сейчас всюду компьютеры считают, поэтому выдумывать ничтожные упрощения считающему не надо, ведь это приводит к усложнениям у многих других. Допустим, банк берёт 1% за переводы в другие банки суммы до 100 т.р., но 2% за переводы свыше 100 т.р. Получается, что перевод 99 и 101 т.р. отличается по цене примерно в два раза. Ну нелогично же! Тут же тоже напрашивается правило «1% до 100 т.р., а оставшаяся сумма по 2%» (я не одобряю такие тарифы, привёл их для примера).

Вот если ситуация не предполагает гладкости (например, если законом запретили квадрокоптеры тяжелее 250 г., то логично, что тут же производители сделали устройства весом 249 г.), то не о чем и говорить. Или, например, с льготами/доплатами при разном количестве детей тоже понятно — тут явная ступенчатая функция без вариантов. Но в остальных-то ситуациях можно добавить гладкости, чтобы не спотыкаться зря на ступеньках.

Надеюсь, вы хорошо повидались с близкими в новогодние праздники! Здоровья вам, родным и друзьям!

И хорошего завершения недели!

10 комментариев:

  1. Анонимный24.01.2020, 12:25

    Даже если меня эти принципы бесят, что с этим сделаешь? Как можно сформулировать закон, который бы способствовал гладкости расходов при медленном изменении параметров?

    ОтветитьУдалить
    Ответы
    1. По-моему, начинать надо не с жёсткого закона, а с мягких и обоснованных рекомендаций для авторов законов. Если рекомендации будут достаточно простыми в реализации, то постепенно можно будет внедрить эту практику "повсеместной гладкости и непрерывности" в некоторые законы. А потом к этому и привыкнуть все успеют - тогда без специальных регламентов хорошо будет.

      Удалить
  2. Конечно, бесят!
    Взять хотя-бы номера автобусов. Сел вместо 17 на 18, ошибся всего лишь на единичку, а оказался на другом краю Барнаула. Неправильно всё это!

    ОтветитьУдалить
    Ответы
    1. Вот номера телефонов - реальная проблема :) В одной цифре ошибся - всё поменялось: фамилия, имя, отчество, возраст...

      Удалить
  3. Анонимный24.01.2020, 20:37

    Про маткап и другие доплаты за детей есть возражение, кстати. Вот не дело это, что 31 декабря ещё нет поддержки, а 1 января уже есть. Надо было линейно наращивать до 1 июня. Тогда людям не было бы так обидно, что они случайно на один-два дня раньше родили.

    ОтветитьУдалить
    Ответы
    1. Да! Эту тему я собирался в следующей заметке обсудить, но давайте сейчас начнём.

      Часто вступление закона в силу с такого-то числа происходит резко:
      - Родился 31 декабря - пенсионный возраст не поменялся, а родился на день позже 1 января - поменялся.
      - Пошёл оформлять дачу 30 июня - дикие очереди, а пришёл 1 июля - никаких очередей, потому что с 1 июля новые правила.
      и т.д.

      С материнским капиталом, доплатами за рождение ребёнка, выходом на пенсию и т.д. вроде бы старались сделать ступеньки поменьше, но всё равно выглядит жёстко. А ведь кажется, что так легко было сделать простые линейные функции. Тогда +/- один день почти не влияет.

      В таких законах, которые серьёзно влияют на большое количество граждан, минимальная гладкость добавила бы ощущения справедливости. Поэтому я считаю этот момент важным.

      Удалить
  4. Люто-бешено плюсую! Пост подобный этому уже давно собирался написать. Вот только вы не все проблемы решаете, производную функций тоже хорошо бы иметь гладкой. То есть в моём идеальном воображаемом мире налог на автомобиль считался бы примерно так: (мощность^1.7)*(МРОТ/300)

    ОтветитьУдалить
    Ответы
    1. Спасибо за подтверждение, что это не только меня задевает!

      Про гладкость производной: да, можно сделать более сложные формулировки законов, но точно ли это надо?

      Насколько я понимаю, в авиастроении гладкость производной важна (мы про поверхности крыльев), а вот в автомобилестроении влияние внешнего вида на цену куда значительнее, чем оптимальная аэродинамика, поэтому за этим можно не гоняться.

      В нашем же случае понятность схемы куда важнее внутренней красоты. И вот с линейными графиками люди справятся куда лучше: там и площадь под графиком считать проще, и оценки типа "в самом деле, ничего страшного, что ребёнок родился 30 декабря, не дотянув 2 дня до следующего года" легче делать.

      Поэтому я сперва предлагаю выработать предельно простую модель, потом научиться обосновывать её ответственным чиновникам (надо показать, как скорректировать коэффициенты, чтобы сборы налогов не слишком упали, а выплаты субсидий не слишком выросли), а уже потом думать о красоте.

      Удалить
  5. Анонимный28.01.2020, 06:52

    Да, жутко бесит! Моя кредитная карта ВТБ имеет такой глюк -- если я в месяц потратил меньше 5000 рублей, то накладывается штраф 250 рублей. И это верно, даже если я потратил 4999 рублей. Здоровому человеку должно быть очевидно, что в диапазоне от 4750 до 5000 штраф должен быть таким, чтобы сумма трат и штрафа равнялась 5000.

    ОтветитьУдалить
    Ответы
    1. Логика понятная, но и ответ на это тоже понятен: банк даёт Вам бесплатно кредитную карту лишь по одной причине - какой-то процент людей не умеет пользоваться кредитками. Если бы все пользовались аккуратно, то таких сладких условий бы не было. Фактически, кредитная карта является одним из механизмов перераспределения денег от менее аккуратных людей к более аккуратным. И ни о какой гладкости расходов банк думать не будет, пока не появится успешный конкурент (т.е. он должен явно на гладкости зарабатывать).

      Другими словами, если появится банк, который сделает все свои тарифы гладкими, а не ступенчатыми, а люди массово проголосуют за него, принеся свои деньги, тогда и другие банки задумаются о таком подходе.

      Удалить

Понравилась заметка? Подпишитесь на RSS-feed или email-рассылку.

Хотите поделиться ссылкой с другими? Добавьте в закладки:



Есть вопросы или предложения? Пишите письма на адрес mytribune АТ yandex.ru.

С уважением,
      Илья Весенний