solveset_real(exp(I*x), x) for real `x`

29 views
Skip to first unread message

Gaurav Dhingra

unread,
Jul 1, 2015, 1:41:02 PM7/1/15
to sy...@googlegroups.com
Hi all
Though `solveset_real` claimes to be complete in terms of real solution returned
But for this

>>> x = Symbol('x', real=True)
>>> solveset_real(exp(I*x), x)
FiniteSet(0)

But probably the solution is what is returned for the `solveset_complex`
>>> y = Symbol('y')
>>> solveset_complex(exp(I*y), y)
ImageSet(Lambda(_n, 2*_n*pi), Integers())    # correct solution returned
                                     # same should be returned for `solveset_real` ?

Is there any reason why we just get `FiniteSet(0)`  ?
Cheers
Gaurav

Harsh Gupta

unread,
Jul 1, 2015, 1:54:07 PM7/1/15
to sy...@googlegroups.com
> Though `solveset_real` claims to be complete in terms of real solution returned

Well, solveset_real assumes that you are working in a real system,
that means both the equation and the solutions are in a real domain.
So solveset_real expect users to input equations like `exp(I*x) = 0`
and it should probably raise an error or maybe the doc string needs to
be updated. As you have figured out for yourself if someone wants to
work in the complex domain they can always use solveset_complex.
> --
> 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 sympy+un...@googlegroups.com.
> To post to this group, send email to sy...@googlegroups.com.
> Visit this group at http://groups.google.com/group/sympy.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/sympy/fbf1e47b-3bab-4c7c-9099-25a2eef27062%40googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.



--
Harsh

Gaurav Dhingra

unread,
Jul 1, 2015, 1:58:34 PM7/1/15
to sy...@googlegroups.com
Thanks for answering
Though i forgot put `-1` 
Sorry
Now equation is `solveset_real(exp(I*x) - 1, x)` now this should return  `ImageSet(Lambda(_n, 2*_n*pi), Integers())`
but currently returns `FiniteSet(0)` what about this ?

Harsh Gupta

unread,
Jul 1, 2015, 2:44:40 PM7/1/15
to sy...@googlegroups.com
The "effective input" to exp in exp(I*x) is not real for any non-zero
real value of x, so 0 is the only real point in the domain hence the
solution is correct. I should clarify that the input function/equation
of solveset_real are functions of real variable [1] and are also
real-valued [2] functions. This means they should map a subset of real
numbers to a subset of real numbers.

[1]: https://en.wikipedia.org/wiki/Function_of_a_real_variable
[2]: https://en.wikipedia.org/wiki/Real-valued_function
> https://groups.google.com/d/msgid/sympy/dc3589c8-e9d7-40f6-b0ad-8810dedd5ae9%40googlegroups.com.
Reply all
Reply to author
Forward
0 new messages