Hi,

On 10 July 2013 16:31, Amit Saha <[email protected]> wrote:

> On Thu, Jul 11, 2013 at 12:28 AM, Aaron Meurer <[email protected]> wrote:
> > On Jul 10, 2013, at 9:21 AM, Amit Saha <[email protected]> wrote:
> >
> >> On Sun, Jul 7, 2013 at 12:03 PM, Aaron Meurer <[email protected]>
> wrote:
> >>>
> >>>
> >>>
> >>> On Sat, Jul 6, 2013 at 5:45 PM, Amit Saha <[email protected]>
> wrote:
> >>>>
> >>>> 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).
> >>>
> >>>
> >>> 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
>

This doesn't prove anything. You could as well say:

In [3]: from sympy.abc import I

but that's not imaginary unit. If unsure, use tools to figure out meaning
of names/variables:

In [4]: type(I)
Out[4]: sympy.core.symbol.Symbol

In [5]: from sympy import I

In [6]: type(I)
Out[6]: sympy.core.numbers.ImaginaryUnit

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 [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.
> >>>>
> >>>>
> >>>
> >>> --
> >>> 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.
> >>>
> >>>
> >>
> >>
> >>
> >> --
> >> 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.
> >>
> >>
> >
> > --
> > 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.
> >
> >
>
>
>
> --
> 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.
>
>
>
Mateusz

-- 
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.


Reply via email to