Базовые предположения, так сказать, обеспечиваются внутренним использованием PossibleZeroQ
. Если эта функция не может считать выражение равным нулю, то оно будет рассматриваться как ненулевое, следовательно, может быть использовано как основа для сокращения строки (что обычно используется для символического NullSpace).
--- редактировать ---
Был задан вопрос о том, что может быть видно при нулевом тестировании в символической линейной алгебре. По умолчанию звонки на номер PossibleZeroQ
проходят по внутренним маршрутам. PossibleZeroQ
был позже построен поверх них.
При разработке кода ядра Mathematica всегда возникает вопрос о том, что должно проходить через основной цикл вычислителя, а что (например, в целях скорости) должно замыкаться. Легко прослеживается только первое.
Можно влиять на процесс в символической линейной алгебре, задав нулевой тест не по умолчанию. Может быть, например,
myTest[ee_]:= (Print[zerotesting[ee]]; PossibleZeroQ[ee])
, а затем используйте ZeroTest->myTest
в NullSpace
.
--- конец редактирования ---