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.
