On Oct 3, 2008, at 11:40 AM, William Stein wrote:

> On Fri, Oct 3, 2008 at 2:36 AM, Robert Bradshaw
> <[EMAIL PROTECTED]> wrote:
>>
>> On Oct 2, 2008, at 10:43 PM, Ondrej Certik wrote:
>>
>>> On Thu, Oct 2, 2008 at 6:43 PM, William Stein <[EMAIL PROTECTED]>
>>> wrote:
>>>>
>>>> On Thu, Oct 2, 2008 at 9:31 AM, jdmuys <[EMAIL PROTECTED]> wrote:
>>>>>
>>>>> Hi,
>>>>>
>>>>> I am a total newcomer, and here is very simple high-school level
>>>>> question for which I could not find an answer in several hours of
>>>>> searching:
>>>>>
>>>>> How can I use Sage to simplify ratios involving complex numbers?
>>>>>
>>>>> By simplify, I mean, to put into the canonical form a+b*i.
>>>>>
>>>>> For a very simple example: simplifying x=1/(1+i) would yield (1/2
>>>>> - i/
>>>>> 2)
>>>>>
>>>>> Note: this is simple to do by hand: multiply both numerator and
>>>>> denominator by the conjugate of the denominator. For my example,
>>>>> this
>>>>> leads to:
>>>>>
>>>>> x= (1-i)/[(1+i)(1-i)]
>>>>> x = (1-i)/[1^2-i^2]
>>>>> x = (1-i)/[1+1]
>>>>> x = (1-i)/2
>>>>> x = 1/2 -i/2
>>>>>
>>>>> I tried quite a number of things, none of which worked.
>>>>>
>>>>> Thanks, and sorry if my question is easy (well actually, I hope  
>>>>> it's
>>>>> easy ;-)
>>>>>
>>>>
>>>> You could get the real and imaginary parts, as follows:
>>>>
>>>> sage: a = (1-I)/(1 + I)
>>>> sage: a.real() + I*a.imag()
>>>> -1*I
>>>>
>>>> If you're coefficients are all rational numbers, you could
>>>> alternatively define I to be the generator for the "ring" QQ[sqrt
>>>> (-1)],
>>>> as follows, and all such expressions will automatically
>>>> be simplified the moment you type them in:
>>>>
>>>> sage: I = QQ[sqrt(-1)].gen()
>>>> sage: 1/1 + I
>>>> I + 1
>>>> sage: 1/(1 + I)
>>>> -1/2*I + 1/2
>>>> sage: (1-I)/(1 + I)
>>>> -I
>>>>
>>>> Note that expressions like sqrt(2)*I will no longer work
>>>> with this new version of I.  To get back the old I, you
>>>> can do
>>>> sage: reset('I')
>>>
>>> Or through some package, e.g. sometimes sympy's simplification
>>> works well:
>>>
>>> sage: a = (1-I)/(1 + I)
>>> sage: import sympy
>>> sysage: sympy.simplify(a)
>>> -I
>>> sage: SR(sympy.simplify(a))
>>> -1*I
>>>
>>> The SR() converts the expression back from a sympy expression to a
>>> Sage expression.
>>
>> It's really sad that we don't have a more intuitive way to do this.
>> There's a maxima command (rectcoords or something like that) but it's
>> not obvious how to invoke it directly on the SR object.
>>
>> I've actually been working on a patch for coercion that will allow
>> number fields to come with specified embeddings, in which case we
>> will let I be in QQ[sqrt(-1)] (or even perhaps ZZ[sqrt(-1)]), but
>> with a specified embedding into CC (and by extension SR) so that
>
> I'm worried that won't work, since CC is 53-bit precision floats, so
> "by extension SR" means you'll end up with 1.0*I rather than I.

I just meant in the sense that fixing an embedding into CC fixes the  
embedding into SR, QQbar, ComplexField(1000), etc. The embedding will  
actually be into the "complex lazy field."

> For the record, Mathematica just automatically simplify things like  
> 1/(1+I),
> as does Maple, and Sage should too since since ginsh (ginac's  
> shell) does
> simplify 1/(1+I) too (see below):

Good, all the more reason that sage *should* (and will).

- Robert


--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to sage-support@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/sage-support
URLs: http://www.sagemath.org
-~----------~----~----~----~------~----~------~--~---

Reply via email to