Дополнительные упрощения в симпы - PullRequest
0 голосов
/ 15 октября 2018

В настоящее время я пытаюсь найти способ добавить дополнительные правила упрощения в sympy, которые могут применяться автоматически.Я считаю, что должен быть способ добавить их с помощью модуля Assumptions, но я не могу понять, как это сделать, из документации, которая по-мужски охватывает простые предположения, такие как is_positive или is_real.

Вот несколько примеров предположений, с которыми я имею дело:

  • У меня есть некоторые переменные c1,c2,..., которые могут принимать только значение +1 или -1, но других значений нет.Поэтому, когда у меня есть c1**2 или что-либо подобное в любом термине, я могу просто отбросить это.

  • Существует набор переменных w1,w2,w3,..., которые в сумме никогда не могут быть больше, чемдругая переменная d.Поэтому, когда у меня есть выражение типа d-w1-w2, я знаю, что оно должно быть положительным.

Конечно, я всегда могу взять любое выражение, а затем применить упрощения к деревьям выражений, которые соответствуют этимпредположения.Тем не менее, это действительно сложно и приводит к тому, что функции sympy занимают больше времени, чем нужно.Например, я вычисляю определитель матрицы, включающей эти переменные, и полученное выражение (до упрощения) очень длинное.После дополнительных упрощений у него очень мало терминов.Поэтому было бы замечательно, если бы Simpy уже мог выполнить эти упрощения во время вычисления определителя, чтобы ускорить все.Точно так же я должен вычислить множество обратных матриц, включающих эти переменные, и было бы неплохо иметь упрощения при вычислении обратного.

Есть ли какое-нибудь руководство по добавлению таких дополнительных правил упрощения?

...