Допущения в команде NullSpace от Mathematica для символических матриц - PullRequest
8 голосов
/ 30 мая 2011

Выполняя команду Mathematica NullSpace на символьной матрице, Mathematica делает некоторые предположения о переменных, и я хотел бы знать, что они есть.

Например,

In[1]:= NullSpace[{{a, b}, {c, d}}]

Out[1]= {}

, ноНеустановленное предположение состоит в том, что

a d != b c.

Как определить, какие предположения использует команда NullSpace?

Ответы [ 2 ]

12 голосов
/ 30 мая 2011

Базовые предположения, так сказать, обеспечиваются внутренним использованием PossibleZeroQ. Если эта функция не может считать выражение равным нулю, то оно будет рассматриваться как ненулевое, следовательно, может быть использовано как основа для сокращения строки (что обычно используется для символического NullSpace).

--- редактировать ---

Был задан вопрос о том, что может быть видно при нулевом тестировании в символической линейной алгебре. По умолчанию звонки на номер PossibleZeroQ проходят по внутренним маршрутам. PossibleZeroQ был позже построен поверх них.

При разработке кода ядра Mathematica всегда возникает вопрос о том, что должно проходить через основной цикл вычислителя, а что (например, в целях скорости) должно замыкаться. Легко прослеживается только первое.

Можно влиять на процесс в символической линейной алгебре, задав нулевой тест не по умолчанию. Может быть, например,

myTest[ee_]:= (Print[zerotesting[ee]]; PossibleZeroQ[ee])

, а затем используйте ZeroTest->myTest в NullSpace.

--- конец редактирования ---

4 голосов
/ 30 мая 2011

Обнаружено это:

В этом случае , если вы расширите матрицу на один столбец, появится предположение:

NullSpace[{{a, b, 1}, {c, d, 1}}]

{{-((-b+d)/(-b c+a d)),-((a-c)/(-b c+a d)),1}}

Возможно, полезно в некоторых ситуациях

...