sympy positive Deferred Vector

时间:2016-02-15 17:58:12

标签: sympy

您是否可以将延迟向量声明为仅包含正值?

我需要将表达式的导数简化为:

exp = sym.cosh( (1/3)*sym.acosh( ((-3*abs(q))/(2*V[1])) * ((-3/V[1]))**(1/2) ) )

其中V是一个延迟向量,有两个我想说明的变量是正的,因为当得到exp的导数时,我最终会得到实部和虚部。如果两个数字都是正数,那么导数就是实数。

我知道如何将变量声明为正数,但可以使用向量来完成某些事情吗?

2 个答案:

答案 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) ) )