On Thu, Jul 11, 2013 at 12:28 AM, Aaron Meurer <asmeu...@gmail.com> wrote:
> On Jul 10, 2013, at 9:21 AM, Amit Saha <amitsaha...@gmail.com> wrote:
>
>> On Sun, Jul 7, 2013 at 12:03 PM, Aaron Meurer <asmeu...@gmail.com> wrote:
>>>
>>>
>>>
>>> On Sat, Jul 6, 2013 at 5:45 PM, Amit Saha <amitsaha...@gmail.com> wrote:
>>>>
>>>> On Sun, Jul 7, 2013 at 4:50 AM, Aaron Meurer <asmeu...@gmail.com> 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).
>>>
>>>
>>> Why? Symbol('i') has nothing to do with sqrt(-1). It's just a symbol named
>>> i.  If you want sqrt(-1), use I (not Symbol('I'), just I).
>>>
>>> If you look, your c is 2 + 2*i + 2*I. The i is Symbol('i') and the I is
>>> sqrt(-1), which comes from the 2j.
>>>
>>> It's also clear if you enable unicode pretty printing, because I is printed
>>> as ⅈ.
>>
>> My mistake, I assumed that i and I both would be understood as
>> denoting an imaginary object.
>>
>> Thanks, it's clear now.
>
> Symbol('I') wouldn't be the same as I either. Symbols and objects are
> completely different. Objects in SymPy are compared by type, not by
> their string representation.  Also, don't confuse symbol names and
> python variable names.

yes, of course.

I= > from sympy import I

Thanks.

>
> Aaron Meurer
>
>>
>>
>>
>>>
>>> Aaron Meurer
>>>
>>>>
>>>>
>>>>
>>>>>
>>>>> 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 sympy+unsubscr...@googlegroups.com.
>>>> To post to this group, send email to sympy@googlegroups.com.
>>>> Visit this group at http://groups.google.com/group/sympy.
>>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>>
>>>>
>>>
>>> --
>>> 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+unsubscr...@googlegroups.com.
>>> To post to this group, send email to sympy@googlegroups.com.
>>> Visit this group at http://groups.google.com/group/sympy.
>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>
>>>
>>
>>
>>
>> --
>> 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 sympy+unsubscr...@googlegroups.com.
>> To post to this group, send email to sympy@googlegroups.com.
>> Visit this group at http://groups.google.com/group/sympy.
>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>>
>
> --
> 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+unsubscr...@googlegroups.com.
> To post to this group, send email to sympy@googlegroups.com.
> Visit this group at http://groups.google.com/group/sympy.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>



--
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 sympy+unsubscr...@googlegroups.com.
To post to this group, send email to sympy@googlegroups.com.
Visit this group at http://groups.google.com/group/sympy.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to