Files
sim-numerics/PREREG_flat_stick_2026-09-21.md

5.6 KiB
Raw Permalink Blame History

PREREG — плоский режим: залипающее деление в точке, выведенной из порядка

Составлено до кода и до прогона, ветка signfix-and-gates. Валерий: «если мы можем определить место плоских функций, мы можем там тоже делить на 2»; «а если делить не на 2, а на 2.5?»; «делай».

Основание (замерено, без нового прогона метода)

  • Потолок по готовому sweep_full.json: предложенный метод, у которого 20 плоских задач широких скобок (fun3–6) решены чистым делением пополам, дал бы на широких скобках 2441 — ровно Чандрупатла. Весь разрыв 3220 − 2441 сидит в плоских задачах.
  • Три флага (flat, flat2, flatcreep) давали под проекцией не больше −22: флаг заменял делением ОДИН шаг, после чего модель снова недолетала. Место узнавалось и тут же забывалось.
  • Деление в отношении 1 : k от конца с меньшим |f| (split_k.py, сервер): на плоских k = 2.5 — 749 против 1044 у деления пополам, потолок 2146; с противоположного конца хуже деления (1394). Выигрыш даёт суждение «какой конец больше похож на корень». Зависимость от k немонотонна (749 / 816 / 708 при 2.5 / 3 / 4), выбирать k нельзя — отношение нужно вывести.

Правило (новых констант нет)

Вход — тот же признак, что у flat: последний шаг был шагом модели, знак f не сменился и r = f/f_prev ≥ ¼. С этого момента и до конца прогона каждый шаг — деление скобки (режим залипает).

Порядок m — из самого несбывшегося обещания. У касательного шага на подходе порядка m остаток r = (1 − 1/m)^m; это обращается в m ≥ 2 однозначно (функция монотонна, r = ¼ ↔ m = 2). При r ≥ 1/e решения нет — m = ∞. m замеряется один раз, при входе.

Точка деления из m. Для |f| ∝ |x − r|^m концы скобки удалены от корня как dA : dB = |FA|^(1/m) : |FB|^(1/m), отсюда точка x = A + t(B − A), t = |FA|^(1/m) / (|FA|^(1/m) + |FB|^(1/m)). Она ближе к концу с меньшим |f|; m = ∞ даёт t = ½, т.е. деление пополам — правило само сходит в деление там, где порядок не прочитан. Выход точки из скобки или совпадение с прежней — середина (действующий запасной путь метода).

Режимы:

  • prestep="flatstick" — залипание + точка из m (проверяемое правило);
  • prestep="flatstickmid" — залипание + середина (абляция точки из m: разность двух режимов и есть вклад выведенного отношения).

Предохранитель (проекция и остальные) применяется к шагу как всегда — гарантия им и держится.

Проверка

Сразу полная сетка на сервере. Пары «без / flatstick / flatstickmid» для предложенного метода и для него же с Г2 (повтор рисунка шагов), все 7 предохранителей; девять функций без чтений.

# ПРОЙДЕНО, если
W1 широкие скобки ниже, чем без флага (3220; с Г2 — 3169)
W2 канонические задачи не выше, чем без флага (2806; с Г2 — 2782)
W3 гарантия: 0 нарушений в семействе, решено ≥ 193
W4 плоские fun3–6 дешевле
W5 сообщается: по задачам против Чандрупатлы на канонических; оба набора против 5228
W6 flatstick дешевле flatstickmid на плоских — иначе выведенное отношение не заслужено

Правило остановки: flatstick принимается, только если W1, W2, W3 выполнены одновременно. Утверждение «точка из порядка работает» — только при W6 сверх того.

Ожидаемый риск, записан заранее: ложный флаг на канонических задачах (21.6% шагов у flat) теперь залипает до конца прогона; на простом корне правило при m ≥ 2 делит в точке корня из |f| — линейная сходимость вместо модели. Если W2 провалится, это и будет причиной; выход из режима тогда — следующий вопрос, не подгонка этого.