So, the way that re() and im() are currently implemented, they do not
do evaluation.  You should use .as_real_imag() instead.  However, I
think this should change.  See
http://code.google.com/p/sympy/issues/detail?id=754#c15.

Aaron Meurer

On Thu, Jun 9, 2011 at 5:54 PM, [email protected]
<[email protected]> wrote:
> What about re(1/(x+I*y))? It does not evaluate. Is there a function that I
> should call before re() so I have something with real denominator?
>
> On 10 June 2011 01:39, Aaron Meurer <[email protected]> wrote:
>>
>> To assume that x is real, define it like
>>
>> x = Symbol('x', real=True)
>>
>> Then you can use the functions re() and im(), or the method
>> .as_real_imag() to get the real and imaginary parts.
>>
>> In [1]: x, y = symbols('x y', real=True)
>>
>> In [2]: (x + I*y).as_real_imag()
>> Out[2]: (x, y)
>>
>> In [3]: re(x + I*y)
>> Out[3]: x
>>
>> In [4]: im(x + I*y)
>> Out[4]: y
>>
>> Aaron Meurer
>>
>> On Thu, Jun 9, 2011 at 4:31 PM, [email protected]
>> <[email protected]> wrote:
>> > Hi,
>> >
>> > Short version of the question: How to take the real/imaginary part of a
>> > symbolic expression? Can real(x + I*y) give me "x" with the proper
>> > assumptions in place?
>> >
>> >
>> > Here is the context:
>> > I'm implementing a small gaussian optics module that I am going to need
>> > during an internship. Here is my problem.
>> >
>> > There is a thing called complex beam parameter that is a complex number
>> > whose real part is a certain quantity describing the beam and the
>> > imaginary
>> > part is another such quantity. The formalism treats them together in
>> > this
>> > complex number.
>> >
>> > I want to have a class with the constructor:
>> >
>> >>>>a=Constructor(quantityA, quantityB)
>> >>>>a == quantityA + I*quantityB
>> > True
>> >
>> > with the assumptions that quantityA and quantityB are real.
>> >
>> > Then I want to have the selectors (@property decorators):
>> >
>> >>>>a.quantA
>> > quantityA
>> >>>>q.quantB
>> > quantityB
>> >
>> > My idea was just to define quantA as real(a) but as far as what the
>> > documentation or Google say there is no function "real" for a general
>> > symbolic expression in sympy. I suppose I have missed something. Can I
>> > take
>> > the real part of a general expression? Can real(x + I*y) give me "x"
>> > with
>> > the proper assumptions in place?
>> >
>> > Regars
>> > Stefan
>> >
>> > --
>> > You received this message because you are subscribed to the Google
>> > Groups
>> > "sympy" group.
>> > To post to this group, send email to [email protected].
>> > To unsubscribe from this group, send email to
>> > [email protected].
>> > For more options, visit this group at
>> > http://groups.google.com/group/sympy?hl=en.
>> >
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "sympy" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to
>> [email protected].
>> For more options, visit this group at
>> http://groups.google.com/group/sympy?hl=en.
>>
>
> --
> You received this message because you are subscribed to the Google Groups
> "sympy" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/sympy?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sympy?hl=en.

Reply via email to