我想使用函数expand_log简化参数为矩阵元素的sympy表达式。 作为一个简单的示例,让我们看一下表达式log(exp(x)),该表达式应简化为x。
正如the tutorial所解释的那样,只有在满足必要的假设的情况下,才会应用简化,即在这种情况下,x必须是实数。
如果我有一个标量,则可以在创建变量时指定此假设,如here所示。
但是,我使用的矩阵符号不允许在创建时指定假设。相反,我尝试使用新的假设模块:
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
会产生理想的结果,但我想避免完全不检查假设。
有人知道如何解决这个问题吗?