Sympy: как показать условия, которые приводят к делению на ноль? - PullRequest
2 голосов
/ 09 июля 2020

Если вы упростите что-то вроде x/x, это приведет к 1, но было бы неплохо, если бы был способ заставить его как-то сказать 1 iff x is not 0.

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

g, h, k = symbols('g h k')
A = Matrix([[1,-4,7,g],[0,3,-5,h],[-2,5,-9,k]])
A.rref()

, что приводит к | Matrix | (((1 0 1/3 0) (0 1 -5/3 0) (0 0 0 1))) | (0 1 3) |, но 1 в правом нижнем углу на самом деле является результатом упрощения (2g+h+k)/(2g+h+k), которое я знаю только потому, что сделал это вручную. Я бы хотел, чтобы он как-то сказал мне, что это работает, только если (2g+h+k) is not zero.

1 Ответ

1 голос
/ 09 июля 2020

Я написал здесь функцию, которая может делать такие вещи: https://github.com/sympy/sympy/issues/16861

К сожалению, я не дошел до того, чтобы включить ее в sympy, и есть проблемы, которые нужно решить относительно того, что именно он должен возвращать и где его можно использовать в sympy.

В любом случае с этим вы можете: на github, а не здесь).

...