124 lines
12 KiB
Markdown
124 lines
12 KiB
Markdown
# PREREG — логарифмическая замена переменной для широких скобок
|
||
|
||
Составлено **до** любой правки метода. Основание — `NEXT_PAPER_logarithmic.md` (записан 2026-08-24),
|
||
где уже названы цель, четыре оплаченных замерами запрета и два условия допуска. Здесь это доводится
|
||
до пред-регистрации: что считаем успехом, что провалом, и в каком порядке.
|
||
|
||
**Протокол этого проекта, который здесь обязателен:** конфигурация фиксируется **выводом, ДО того как
|
||
смотрят в рейтинг**. Числа берутся только с **Linux** (libm расходится в последнем знаке: та же SciPy
|
||
даёт TOMS 748 = 2819 на Windows против 2820 на Linux). Метод правится **добавлением режима**, ничего
|
||
из опубликованного тракта не переписывается.
|
||
|
||
---
|
||
|
||
## 1. Задача
|
||
|
||
Аддитивный шаг `|f|/|f'|` задан локальным наклоном и ничего не знает о том, сколько декад осталось до
|
||
корня. На семействах Чандрупатлы `fun3/fun4/fun5` скобка шириной до 10¹² при корне |x| ≤ 3, то есть
|
||
надо пройти двенадцать порядков. Замерено: кубический корень бьёт наше правило на всех пяти членах
|
||
`fun4` в 2.6 раза (32/32/40/47/59 против 89/93/113/125/153) — не потому, что это «другая похожесть», а
|
||
потому что его шаг есть фиксированная **доля** скобки: он марширует геометрически.
|
||
|
||
## 2. Предложение
|
||
|
||
Работать в `u = sign(x−c)·log(1 + |x−c|/s)`. Аддитивный шаг в `u` — мультипликативный в `x`, поэтому
|
||
та же похожесть, та же выведенная шкала и та же проекция-сторож дают геометрический марш **без новой
|
||
константы**, а показатель марша (который `cbrt` случайно зафиксировал на 1/3) перестаёт быть свободной
|
||
величиной.
|
||
|
||
**Вывод `c` и `s` — часть работы, а не подбор.** Они обязаны читаться из того, что метод уже считает:
|
||
концов скобки, значений `f` на них и выведенной шкалы σ. Объявленный до прогона кандидат вывода:
|
||
|
||
- `c` = конец скобки с меньшим |f| (сторона, к которой корень ближе);
|
||
- `s` = ньютоновская длина в этой точке, `|f(c)|/|f'(c)|`, оценённая секущей по концам скобки.
|
||
|
||
Если вывод даст иные `c`, `s` — фиксируются те, что следуют из вывода, **до** прогона рейтинга; выбор
|
||
«какой из вариантов лучше на наборе» запрещён (это ровно тот фолт, который проект уже оплатил в п. 1
|
||
запретов ниже).
|
||
|
||
## 3. Два условия допуска (гейты, проверяются тестами ДО рейтинга)
|
||
|
||
| # | Условие | Как проверяется |
|
||
|---|---|---|
|
||
| **G1** | преобразование **беспараметрическое**: `c` и `s` вычисляются из скобки и значений `f`, ни одной выбранной константы | грепом по реализации и тестом, что при подмене любого «магического» числа тест падает |
|
||
| **G2** | на узких скобках преобразование **тождественно с точностью до округления** | тест: при `w/s → 0` шаг в `u` совпадает со шагом в `x` до 1e-12, и на APS-154 число вызовов не меняется ни на одной задаче |
|
||
|
||
Не прошёл G1 → линия закрывается (так же закрылся фазовый детектор).
|
||
Не прошёл G2 → закрывается: широкие скобки куплены ценой канонического набора, а это трейд, на котором
|
||
провалились все прежние попытки.
|
||
|
||
## 3a. ПОПРАВКА 1 (2026-09-20, решение Валерия: вариант B)
|
||
|
||
**Что произошло:** строгий G2 («шаг в `u` совпадает со шагом в `x` до 1e-12») провален **выводом**, без
|
||
прогона, и не для одного кандидата, а для всех доступных беспараметрических единиц — марш требует
|
||
ОТНОШЕНИЯ расстояний, тождественность требует АБСОЛЮТНОЙ шкалы (разбор в `FINDINGS_logarithmic.md` §1).
|
||
|
||
**Решение (Валерий, вариант B):** строгое чтение G2 заменяется его же **измеримым** чтением, которое
|
||
уже стоит в этой пред-регистрации как L2:
|
||
|
||
> **G2′:** на APS-154 суммарная цена не растёт; ни одна задача канонического набора не становится
|
||
> дороже по вызовам `f`.
|
||
|
||
Это **ослабление** пред-регистрированного критерия после его провала — записано как ослабление, а не
|
||
как «уточнение», и принято решением, а не молча.
|
||
|
||
**Единица `s` фиксируется ВЫВОДОМ здесь и не выбирается по рейтингу:**
|
||
|
||
> `c` = конец скобки с меньшим |f| (сторона, к которой корень ближе);
|
||
> **`s` = `xtol`**.
|
||
|
||
Обоснование, а не удобство: задача преобразования — считать **декады, оставшиеся до различимости**.
|
||
Единственная длина в задаче, говорящая «ниже этого различий нет», — это `xtol`, и она приходит от
|
||
вызывающего наравне с `a`, `b`, `f`, то есть не является нашей константой. При таком выборе `u`
|
||
покрывает ровно `log(w/xtol)` единиц — ту самую величину, в которой сформулирована гарантия метода
|
||
`2⌈log₂(w/xtol)⌉+3`, так что марш становится линейным в мере собственной гарантии. Вырождения нет:
|
||
`xtol > 0` всегда, и `|x−c| = 0` даёт `u = 0`, а не деление на ноль.
|
||
|
||
Отвергнутая альтернатива (для протокола): самомасштабируемая `s = |x−c|` вырождается на первом шаге,
|
||
потому что итерат стартует в конце с меньшим |f|, то есть ровно в `c`.
|
||
|
||
**Режим требует выведенной шкалы:** `space="log"` допустим только при `scale ∈ {derived, derived3}` —
|
||
в log-пространстве нужен наклон; при прочих шкалах вызов обязан падать, а не считать молча.
|
||
|
||
## 4. Цели (записаны в `NEXT_PAPER_logarithmic.md` заранее, не подгонялись)
|
||
|
||
| величина | цель | где сейчас |
|
||
|---|---|---|
|
||
| вызовов `f` на двух наборах (APS-154 + Chandrupatla-45) | **< 6026** | 6026 |
|
||
| решённых задач | **≥ 193 из 199** | 193/199 |
|
||
| гарантия `2⌈log₂(w/xtol)⌉+3` | **не нарушена ни на одном решённом прогоне** | не нарушена |
|
||
| Chandrupatla-45 отдельно | **≤ 2857** (уровень ITP) | 3220 |
|
||
|
||
## 5. Предсказания и фальсификаторы
|
||
|
||
| # | Предсказание | ФАЛЬСИФИКАТОР → вывод |
|
||
|---|---|---|
|
||
| **L1** | на `fun3/fun4/fun5` логарифмический режим сокращает вызовы не менее чем вдвое | <1.5× → механизм не в мультипликативности шага, гипотеза неверна |
|
||
| **L2** | на APS-154 суммарная цена **не растёт** (G2) | растёт → закрытие, трейд не принимается |
|
||
| **L3** | Chandrupatla-45 ≤ 2857 | >2857 → цель ITP не достигнута; результат публикуем как отрицательный |
|
||
| **L4** | гарантия не нарушена ни на одном решённом прогоне | нарушена → закрытие немедленно, без торга |
|
||
|
||
## 6. Запреты — уже оплачены замерами, не повторять
|
||
|
||
1. Переключаться на `cbrt` по набору: 6905 против 6026 — **хуже**; `cbrt` берёт семейства `fun` и
|
||
теряет остальную Чандрупатлу (4099 против 3220).
|
||
2. Детектировать режим по отношению значений `rho = 1 − |f_n|/|f_{n−1}|`: порядок 2.000 → 0.904, цена
|
||
на канонических задачах 84 → 161.
|
||
3. Детектировать по локальному порядку `f` (`p = L/(L−ln m)`, `m = 1/(1−θ)`): вывод верен, оценщик не
|
||
резок — 27.9 % ложных против 35.8 %, это не разделение, цена +273 вызова.
|
||
4. Разделять режимы по ширине скобки: победители полностью перекрываются (наша шкала выигрывает при
|
||
ширинах от 10⁰ до 10¹²).
|
||
|
||
## 7. Порядок исполнения
|
||
|
||
1. Воспроизвести артефакт: 490 тестов + `verify_article.py` (все 72 числа статьи) — **на Linux**.
|
||
Не сошлось → сначала это, метод не трогать.
|
||
2. Реализовать режим (новый файл/режим в `simroot/`, опубликованный тракт не переписывать), написать
|
||
тесты гейтов G1 и G2 **до** прогона рейтинга.
|
||
3. Прогнать `sweep_full.py` на сервере, затем `report_sweep.py`, затем `verify_article.py`.
|
||
4. Сверить с целями §4 и предсказаниями §5. Любой исход — в `FINDINGS`-запись проекта и в коммит.
|
||
|
||
**Дисциплина:** git заведён 2026-09-20 (базовый коммит `4a23aac`); аудит после каждой правки и до
|
||
запуска; смоук ×2; тяжёлое — на сервер `setsid nohup` с логом; загрузка общего сервера мерится до и
|
||
после; числа показываются немедленно, до аудита и коммита.
|