您是否可以将延迟向量声明为仅包含正值?
我需要将表达式的导数简化为:
exp = sym.cosh( (1/3)*sym.acosh( ((-3*abs(q))/(2*V[1])) * ((-3/V[1]))**(1/2) ) )
其中V是一个延迟向量,有两个我想说明的变量是正的,因为当得到exp的导数时,我最终会得到实部和虚部。如果两个数字都是正数,那么导数就是实数。
我知道如何将变量声明为正数,但可以使用向量来完成某些事情吗?
答案 0 :(得分:0)
看起来DeferredVector
不支持此功能,但looking at the code看起来像
V = DeferredVector('V')
V[1]
只是一种方便的写作方式
Symbol("V[1]")
所以对于你的情况我会直接使用符号,这可以让你设置它们的假设。
你可以通过
获得大致相同的东西V = symbols('V[0] V[1]', positive=True)
答案 1 :(得分:0)
可能一种解决方法是将epsilon
声明为真正的正数(根据需要小)数字添加到V
的绝对值。像这样:
epsilon = sym.symbols('epsilon', real=True, positive=True)
exp = sym.cosh( (1/3)*sym.acosh( ((-3*abs(q))/(2*(sym.Abs(V[1]) + epsilon))) * ((-3/(sym.Abs(V[1]) + epsilon)))**(1/2) ) )