Yesterday I created this piece of code that could calculate z ^ n, where z is a complex number and n is any positive integer.
--snip-- float real = 0; float imag = 0; // d is the power the number is raised to [(x + yi)^d] for (int n = 0; n <= d; n++) { if (n == 0) { real += pow(a, d); } else { // binomial theorem switch (n % 4) { case 1: // i imag += bCo(d, n) * pow(a, d - n) * pow(b, n); break; case 2: // -1 real -= bCo(d, n) * pow(a, d - n) * pow(b, n); break; case 3: // -i imag -= bCo(d, n) * pow(a, d - n) * pow(b, n); break; case 0: // 1 real += bCo(d, n) * pow(a, d - n) * pow(b, n); break; } } } --snip-- int factorial(int n) { int total = 1; for (int i = n; i > 1; i--) { total *= i; } return total; } // binomial cofactor float bCo(int n, int k) { return (factorial(n)/(factorial(k) * factorial(n - k))); }
I use the binomial theorem to extend z ^ n and I know whether to consider each term as a real or imaginary number, depending on the degree of the imaginary number.
What I want to do is compute z ^ n, where n is any positive real number (fractions). I know that the binomial theorem can be used for powers that are not integers, but I'm not sure how to handle complex numbers. Since I ^ 0.1 has a real and imaginary component, I canโt just sort it in a real or imaginary variable, and I donโt even know how to program something that could calculate it.
Does anyone know of an algorithm that can help me with this, or maybe even a better way to handle complex numbers that will make this possible?
Oh, I'm using java.
Thanks.
source share