On Sun, Jul 7, 2013 at 4:50 AM, Aaron Meurer <[email protected]> wrote:
> I think you are confusing the assumptions system and the numeric classes in
> SymPy.
>
> First, for the numeric classes, SymPy does not have a complex type. Rather,
> we just have the object I, which represents sqrt(-1). If you want 12 + 3*I,
> you just type exactly that. Internally, it is represented as Add(12, Mul(3,
> I)). One difference you'll notice here is that, because it is just an Add,
> things like (12 + 3*I)**2 or 1/(12 + 2*I) are not reevaluated to real +
> imag*I by default. You can use expand_complex() to do that (or as_real_imag
> if you want to pull out the real and imaginary parts).
Thanks for the explanation. Here is what I tried:
>>> from sympy import Symbol
>>>
>>> i=Symbol('i')
>>> c = 1 + 2*i
>>> c.as_real_imag(c)
(2*re(i) + 1, 2*im(i))
Good so far, I understand that the real and imaginary components are
being expressed as multiples of the real and and imaginary components
of i, respectively.
Now, I tried to to add this to a native CPython complex number:
>>> c = c + 1+2j
>>> c.as_real_imag(c)
(2*re(i) + 2, 2*im(i) + 2.0)
Here the real part is clear to me: 2*re(i) + 2 = 2*0 + 2 = 2
But, I don't quite understand what the imaginary part: 2*im(i) + 2 is
supposed to mean. I was expecting it to be 4*im(i).
>
> Now, for the assumptions. Symbol('x', complex=True) means that the symbol is
> assumed to be complex. This is in contrast to Symbol('x', real=True), which
> is assumed to be real. This matters for things like x.is_real, and affects
> how things are simplified. For example, sqrt(x**2) == x only when x is
> positive, so it will remain unevaluated by default, but if you create
> Symbol('x', positive=True), then sqrt(x**2) will simplify to just x.
>
> Symbols are assumed to be complex by default, so actually Symbol('x',
> complex=True) is unnecessary. Actually, this isn't entirely true; apparently
> Symbol('x', complex=True) is different from just Symbol('x'), which I don't
> entirely understand why. I think this might be a bug. Could you open an
> issue for it?
Filed: https://github.com/sympy/sympy/issues/2260
I hope I got the description right.
Thanks,
Amit.
--
http://echorand.me
--
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 post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sympy.
For more options, visit https://groups.google.com/groups/opt_out.