Я хочу упростить выражение sympy, где аргументы являются матричными элементами, используя функцию expand_log.В качестве простого примера давайте рассмотрим выражение log (exp (x)), которое должно быть упрощено до x.
Как и , как объясняется в учебнике , упрощения будут применяться только в том случае, если требуются предположениядержать, т.е. в этом случае х должен быть действительным.
Если у меня есть скалярное количество, я могу указать это предположение при создании переменной, как показано здесь .
Однако я использую символ матрицы, который не позволяет указыватьпредположения при создании.Вместо этого я попытался использовать новый модуль предположений:
import sympy as sym
from sympy.assumptions import assuming, Q
x = sym.MatrixSymbol('x',1,2)
expr = sym.log(sym.exp(x[0,0]))
with assuming(Q.real(x[0,0])):
display(sym.expand_log(expr))
Вывод по-прежнему log(exp(x[0, 0]))
.Поэтому мне кажется, что функция expand_log
не знает о предположении, которое я указываю в предполагаемом диспетчере контекста.
Установка force=True
дает желаемый результат, но я хочу вообще не проверять предположения.
У кого-нибудь есть идеи, как обойти эту проблему?