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

3.2 KiB
Raw Permalink Blame History

PREREG — третий независимый корпус: набор GSL и прикладные уравнения

Составлено до прогона, ветка signfix-and-gates. Валерий: «давай ещё найдём корпус для теста, для статьи это будет только плюс».

Корпус (corpus_applied.py, закоммичен до прогона)

  • G — тестовый набор модуля поиска корней GNU Scientific Library (roots/test.c, test_funcs.c, зеркало github.com/ampl/gsl): все 10 задач со скобкой, как в оригинале.
  • P — 122 уравнения из физики и инженерии на стандартных сетках параметров, заданных до прогона: уравнение Кеплера (35: e ∈ {0.1, 0.5, 0.9, 0.99, 0.999} × 7 значений M), Колбрука–Уайта (36: Re × шероховатость), W-функция Ламберта (7), закон смещения Вина/Планка (7), Ван-дер-Ваальс для CO₂ (20: T × P, включая околокритическую T = 304 K), внутренняя норма доходности (12), конечная квантовая яма (5). Все 132 имеют разные знаки на концах.
  • Успех — смена знака в пределах 10⁻⁶ от ответа (как в PREREG_roots_jl). XTOL 10⁻¹², MAXFEV 200, неудача = 200; гарантия ≤ 2⌈log₂(w/xtol)⌉ + 4.

Сетки выбраны мной — корпус не так независим, как опубликованный, поэтому часть G (опубликованная) сообщается отдельно, а по части P — разбивка по уравнениям.

Варианты и критерии — те же

A = Г2 + contra+flatanalogmempt+exp+half; B = defect+flatanalogmempt+exp; справочно — предложенный метод без добавок; соперники — библиотечные Чандрупатла, Брент, TOMS748.

# ПРОЙДЕНО, если (все 132)
T1 сумма вызовов V меньше, чем у Чандрупатлы
T2 по задачам против Чандрупатлы побед больше, чем поражений, знаковый тест p < 0.05
T3 гарантия: 0 нарушений; решено не меньше, чем у Чандрупатлы

«Переносится» — T1, T2, T3 одновременно; сообщается также, выполнен ли T1 отдельно (выигрыш по сумме). Метод, корпус и критерии не меняются.

Ожидание, записано заранее: почти-кратные случаи — Кеплер с e → 1 при малом M (около нуля E − e sin E ≈ (1 − e)E + E³/6) и околокритический Ван-дер-Ваальс; остальное — гладкие простые корни, где по двум прошлым корпусам ожидается паритет.