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.
