如何避免来自sympy

时间:2017-08-08 17:56:04

标签: python sympy

from sympy import *
t,r = symbols('t r', real=True, nonnegative=True)
c_x,c_y,a1,a2 = symbols('c_x c_y a1 a2', real=True)
integrate(-r*(a1 - a2)*(c_x*cos(-a1*t + a1 + a2*t) + c_y*sin(-a1*t + a1 + a2*t) + r)/2,(t,0,1))

我获得了分段解决方案

Piecewise((-a1*c_x*r*cos(a2)/2 - a1*c_y*r*sin(a2)/2 - a1*r**2/2 + a2*c_x*r*cos(a2)/2 + a2*c_y*r*sin(a2)/2 + a2*r**2/2, Eq(a1, a2)), (-a1*r**2/2 + a2*r**2/2 - c_x*r*sin(a1)/2 + c_x*r*sin(a2)/2 + c_y*r*cos(a1)/2 - c_y*r*cos(a2)/2, True))

enter image description here

不需要进行分段,因为如果a1 = a2两个表达式都为0,那么第二个表达式实际上是一个全局非分段解决方案。

所以我的第一个问题是:我能不能给出非分段解决方案? (通过设置一些选项或其他任何东西)

无论上述可能性如何,由于我可以接受a1不等于a2(这是一个无关紧要的极限情况),有没有办法告诉同情这样的假设? (再次为了观察非分段解决方案)

先来感谢新手。

P.S。对于同样的问题,Maxima直接给出了非分段解决方案。

1 个答案:

答案 0 :(得分:2)

有一个关键字conds,其默认值是"分段"。它也可以设置为"分开"或"无"。但是,因为它是一个明确的积分,你可以尝试关键字manual = True ..

如果将关键字设置为conds='separate',则应返回具有收敛条件的不同元组。我尝试过,只提供一个解决方案。我不知道为什么这种行为不符合预期。 conds='none'关键字不应返回收敛条件,只是解决方案。这就是我想你想要的。

另一个选项,仅在明确积分的上下文中有效,是另一个关键字manual=True。这模仿手工整合,方便和“忘记”#34;关于检查收敛条件。