Thanks very much for the explanation.
The assumptions issues in Sympy have deterred me from using Sympy almost
completely. It's not clear to me why the old assumption system had to be
replaced. It's not clear to me what's unimplemented in the new system.
You say above, "The point about relations not being implemented is that
there is not currently a way to use the assumption that e.g. x > y but
that's not needed here so this should work". But your code shows Sympy
"using" the assumptions y > -∞ ∧ y < ∞, which are relations. I you are
using the word "use" in a way I don't understanding, and I'm left with this
vague warning about relations being unusable in Sympy, and I go back to
Maple.
On Monday, August 10, 2020 at 3:53:01 AM UTC-7 Oscar wrote:
> You can use the old assumptions:
>
> In [*10*]: x = Symbol('x')
>
>
>
> In [*11*]: y = Symbol('y')
>
>
>
> In [*12*]: a = Symbol('a')
>
>
>
> In [*13*]: integrate(cos(x*y), (x, 0, a))
>
>
> Out[*13*]:
>
> ⎧sin(a⋅y)
>
> ⎪──────── for y > -∞ ∧ y < ∞ ∧ y ≠ 0
>
> ⎨ y
>
> ⎪
>
> ⎩ a otherwise
>
>
> In [*14*]: y = Symbol('y', nonzero=*True*)
>
>
>
> In [*15*]: integrate(cos(x*y), (x, 0, a))
>
>
> Out[*15*]:
>
> sin(a⋅y)
>
> ────────
>
> y
>
>
> The new assumptions and refine can handle nonzero. The point about
> relations not being implemented is that there is not currently a way to use
> the assumption that e.g. x > y but that's not needed here so this should
> work:
>
> In [*16*]: y = Symbol('y')
>
>
>
> In [*17*]: integrate(cos(x*y), (x, 0, a))
>
>
> Out[*17*]:
>
> ⎧sin(a⋅y)
>
> ⎪──────── for y > -∞ ∧ y < ∞ ∧ y ≠ 0
>
> ⎨ y
>
> ⎪
>
> ⎩ a otherwise
>
>
> In [*18*]: refine(_, Q.nonzero(y))
>
>
> Out[*18*]:
>
> ⎧sin(a⋅y)
>
> ⎪──────── for y > -∞ ∧ y < ∞ ∧ y ≠ 0
>
> ⎨ y
>
> ⎪
>
> ⎩ a otherwise
>
>
> I guess that this just isn't implemented yet in refine.
>
>
> Oscar
>
>
>
> On Monday, 10 August 2020 11:06:02 UTC+1, My Name wrote:
>>
>> I do this:
>>
>> import sympy
>> sympy.srepr(sympy.integrate(S('cos(x * y)'), S('(x, 0, a)')))
>>
>> It returns this:
>>
>> "Piecewise(ExprCondPair(Mul(Pow(Symbol('y'), Integer(-1)),
>> sin(Mul(Symbol('a'), Symbol('y')))), And(StrictGreaterThan(Symbol('y'),
>> -oo), StrictLessThan(Symbol('y'), oo), Unequality(Symbol('y'),
>> Integer(0)))), ExprCondPair(Symbol('a'), true))"
>>
>> How do I find the value of the Piecewise expression when y is nonzero? I
>> have tried using sympy.refine with Q.nonzero, but that has not worked.
>> Indeed the docs for refine warn, "Relations in assumptions are not
>> implemented (yet)". Does that mean there's no way to find the value of the
>> integral assuming y is nonzero?
>>
>
--
You received this message because you are subscribed to the Google Groups
"sympy" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/sympy/1cf4691a-1092-42c2-b4c5-0eb8ff068404n%40googlegroups.com.