【发布时间】:2017-08-09 16:44:32
【问题描述】:
来自
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))
不需要分段,因为如果a1=a2两个表达式都是0,那么第二个表达式实际上是一个全局非分段解。
所以我的第一个问题是:我可以让 sympy 给我非分段解决方案吗? (通过设置一些选项或其他任何东西)
不管上述可能性如何,既然我可以接受a1 不等于a2(这是一个不感兴趣的极限情况),有没有办法告诉同情这种假设? (再次为了获得非分段解)
在此先感谢一位同情的新手。
附:对于同样的问题,Maxima 直接给出了非分段解。
【问题讨论】:
-
有一个关键字
conds,默认为“分段”。它也可以设置为“分离”或“无”。后者可能是正确的方向。但是,由于它是一个定积分,也许您也可以尝试关键字manual=True.. -
@Uvar 谢谢,在这种情况下,所有 3 个选项都有效,尽管我不完全了解它们的作用,并且文档没有太大帮助。例如,选项
conds='separate'应该将解决方案作为元组而不是分段给出,但会给出唯一(但正确)的解决方案。 -
移至答案,因为它似乎已经成功了。我和你一样对
conds='separate'感到困惑