negative base raised to fractional exponent

Ken Schutte kschutte at csail.mit.edu
Wed Oct 17 10:00:02 EDT 2007


schaefer.mp at gmail.com wrote:
> On Oct 17, 4:05 am, Ken Schutte <kschu... at csail.mit.edu> wrote:
>> schaefer... at gmail.com wrote:
>>> Does anyone know of an approximation to raising a negative base to a
>>> fractional exponent? For example, (-3)^-4.11111 since this cannot be
>>> computed without using imaginary numbers. Any help is appreciated.
>> As others have said, you can use Python's complex numbers (just write -3
>> as -3+0j).  If for some reason you don't want to, you can do it all with
>> reals using Euler's formula,
>>
>> (-3)^-4.11111  =  (-1)^-4.11111  *  3^-4.11111
>> =
>> e^(j*pi*-4.11111)  *  3^-4.11111
>> =
>> (cos(pi*-4.11111) + j*sin(pi*-4.11111)) * 3^-4.11111
>>
>> in Python:
>>
>>  >>> import math
>>  >>> real_part = (3**-4.11111) * math.cos(-4.11111 * math.pi)
>>  >>> imaj_part = (3**-4.11111) * math.sin(-4.11111 * math.pi)
>>  >>> (real_part,imaj_part)
>> (0.01026806021211755, -0.0037372276904401318)
>>
>> Ken
> 
> Thank you for this. Now I need to somehow express this as a real
> number. For example, I can transform the real and imaginary parts into
> a polar coordinate giving me the value I want:
> 
> z = sqrt( real_part**2 + imaj_part**2 )
> 
> but this is an absolute terms. How does one determine the correct sign
> for this value?
> 

This is a complex number with non-zero imaginary part - there is no way 
to "express it as a real number".  Depending what you are trying to do, 
you may want the magnitude, z, which is by definition always positive. 
Or, maybe you just want to take real_part (which can be positive or 
negative).  Taking just the real part is the "closest" real number, in 
some sense.





More information about the Python-list mailing list