В настоящее время я пытаюсь найти способ добавить дополнительные правила упрощения в sympy, которые могут применяться автоматически.Я считаю, что должен быть способ добавить их с помощью модуля Assumptions
, но я не могу понять, как это сделать, из документации, которая по-мужски охватывает простые предположения, такие как is_positive
или is_real
.
Вот несколько примеров предположений, с которыми я имею дело:
У меня есть некоторые переменные c1,c2,...
, которые могут принимать только значение +1
или -1
, но других значений нет.Поэтому, когда у меня есть c1**2
или что-либо подобное в любом термине, я могу просто отбросить это.
Существует набор переменных w1,w2,w3,...
, которые в сумме никогда не могут быть больше, чемдругая переменная d
.Поэтому, когда у меня есть выражение типа d-w1-w2
, я знаю, что оно должно быть положительным.
Конечно, я всегда могу взять любое выражение, а затем применить упрощения к деревьям выражений, которые соответствуют этимпредположения.Тем не менее, это действительно сложно и приводит к тому, что функции sympy занимают больше времени, чем нужно.Например, я вычисляю определитель матрицы, включающей эти переменные, и полученное выражение (до упрощения) очень длинное.После дополнительных упрощений у него очень мало терминов.Поэтому было бы замечательно, если бы Simpy уже мог выполнить эти упрощения во время вычисления определителя, чтобы ускорить все.Точно так же я должен вычислить множество обратных матриц, включающих эти переменные, и было бы неплохо иметь упрощения при вычислении обратного.
Есть ли какое-нибудь руководство по добавлению таких дополнительных правил упрощения?