# Руководство пользователя BDF
Самостоятельный BDF-солвер является плотным неявным решателем,
ориентированным на поведение SciPy, для небольших и средних полностью
связанных систем. Это намеренно не второй структурированный солвер. Для
разреженного или ленточного хранения используйте LSODE2 и явно выбирайте его
маршрут `Sparse` или `Banded`.
## Выбор бэкенда
Публичные настройки BDF поддерживают три основных режима:
- native callbacks, если правая часть и якобиан уже написаны на Rust;
- символьные callback-функции `Lambdify` для подготовленной задачи;
- AOT callback-функции для размещаемого скомпилированного артефакта.
Для символьной сборки доступны `IvpSymbolicAssemblyBackend::ExprLegacy` и
`IvpSymbolicAssemblyBackend::AtomView`. Оба маршрута имеют одинаковый численный
контракт. Их стоимость подготовки и callback-стоимость зависят от workload,
поэтому выбор следует делать по измерениям, а не по универсальному рейтингу.
## Плотный native-решатель
Минимальный пример находится в `examples/rus/bdf_native_dense_guide.rs`:
```text
cargo run --no-default-features --example rus_bdf_native_dense_guide
```
Он устанавливает native residual и постоянный аналитический плотный якобиан,
включает счетчики телеметрии, использует типизированный `try_solve` и
сравнивает результат с точным решением.
## Символьное продолжение по параметру
`examples/rus/bdf_symbolic_continuation_guide.rs` показывает AtomView вместе с
Lambdify. Подготовленные residual и Jacobian переиспользуются, меняются только
значение параметра и численная история BDF:
```text
cargo run --no-default-features --example rus_bdf_symbolic_continuation_guide
```
Продолжение безопасно, пока символьная структура не меняется. Изменение формы
уравнений, размерности состояния, layout якобиана или политики бэкенда требует
новой подготовленной сборки.
## AOT и toolchain
`examples/rus/bdf_aot_guide.rs` использует AtomView и генерируемые
C/tcc callback-функции:
```text
cargo run --no-default-features --example rus_bdf_aot_guide
```
Если `tcc` отсутствует в `PATH`, пример завершается штатно с поясняющим
сообщением. Подготовка AOT включает materialize, build, link и publication;
при warm continuation опубликованный артефакт должен переиспользоваться без
повторной компиляции.
## Телеметрия и ошибки
Телеметрия по умолчанию выключена. `BdfTelemetryMode::Counters` дает
низкозатратные счетчики работы, а `BdfTelemetryMode::Timings` добавляет
диагностические таймеры стадий. Вложенные timing scopes являются inclusive и
их нельзя складывать.
В прикладном коде предпочтителен типизированный API `try_*`, включая
`try_solve`, continuation и методы конфигурации. Он сообщает типизированными
ошибками о неверной размерности, отсутствующих callback-функциях,
неподдерживаемых комбинациях бэкендов и сбоях подготовки.
## Граница области применения
Самостоятельный BDF хранит плотные якобианы и использует плотную линейную
алгебру. Указание плотного `jac_sparsity` не превращает его в разреженный
решатель. Для больших diffusion- или banded-задач используйте LSODE2: там есть
структурированные matrix backends, телеметрия и соответствующие story-тесты.