3.2 KiB
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) и околокритический Ван-дер-Ваальс; остальное — гладкие простые корни, где по двум прошлым корпусам ожидается паритет.