[EMAIL PROTECTED] wrote: > On Oct 17, 4:05 am, Ken Schutte <[EMAIL PROTECTED]> wrote: >> [EMAIL PROTECTED] 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. -- http://mail.python.org/mailman/listinfo/python-list