logo

Rødder af enhed

Givet et lille heltal n udskriver alle de n'th rødder af enhed op til 6 betydelige cifre. Vi har dybest set brug for at finde alle rødder af ligning xn- 1.

Eksempler:  



Input : n = 1 Output : 1.000000 + i 0.000000 x - 1 = 0  has only one root i.e. 1 Input : 2 Output : 1.000000 + i 0.000000 -1.000000 + i 0.000000 x2 - 1 = 0 has 2 distinct roots i.e. 1 and -1 

Ethvert komplekst tal siges at være rod til enhed, hvis det giver 1, når det hæves til en vis magt. 
Nth rod af enhed er ethvert komplekst tal, således at det giver 1, når den hæves til strømmen n.  

Mathematically An nth root of unity where n is a positive integer (i.e. n = 1 2 3 …) is a number z satisfying the equation z^n = 1 or  z^n - 1 = 0

Vi kan bruge De Moivres formel her   

( Cos x + i Sin x )^k = Cos kx + i Sin kx Setting x = 2*pi/n we can obtain all the nth roots of unity using the fact that Nth roots are set of numbers given by Cos (2*pi*k/n) + i Sin(2*pi*k/n) Where 0 <= k < n

Ved hjælp af ovenstående kendsgerning kan vi nemt udskrive alle de niende enheder af enhed! 



streng ti int

Nedenfor er programmet for det samme. 

C++
// C++ program to print n'th roots of unity #include    using namespace std; // This function receives an integer n  and prints // all the nth roots of unity void printRoots(int n) {  // theta = 2*pi/n  double theta = M_PI*2/n;  // print all nth roots with 6 significant digits  for(int k=0; k<n; k++)  {  // calculate the real and imaginary part of root  double real = cos(k*theta);  double img = sin(k*theta);  // Print real and imaginary parts  printf('%.6f' real);  img >= 0? printf(' + i '): printf(' - i ');  printf('%.6fn' abs(img));  } } // Driver function to check the program int main() {  printRoots(1);  cout << endl;  printRoots(2);  cout << endl;  printRoots(3);  return 0; } 
Java
// Java program to print n'th roots of unity import java.io.*; class GFG { // This function receives an integer n  and prints // all the nth roots of unity static void printRoots(int n) {  // theta = 2*pi/n  double theta = 3.14*2/n;  // print all nth roots with 6 significant digits  for(int k=0; k<n; k++)  {  // calculate the real and imaginary part of root  double real = Math.cos(k*theta);  double img = Math.sin(k*theta);  // Print real and imaginary parts  System.out.println(real);  if (img >= 0)  System.out.println(' + i ');  else  System.out.println(' - i ');  System.out.println(Math.abs(img));  } } // Driver function to check the program public static void main (String[] args) {  printRoots(1);  //System.out.println();  printRoots(2);  //System.out.println();  printRoots(3); } } // This code is contributed by Raj 
Python3
# Python3 program to print n'th roots of unity import math # This function receives an integer n  and prints # all the nth roots of unity def printRoots(n): # theta = 2*pi/n theta = math.pi * 2 / n # print all nth roots with 6 significant digits for k in range(0 n): # calculate the real and imaginary part of root real = math.cos(k * theta) img = math.sin(k * theta) # Print real and imaginary parts print(real end=' ') if(img >= 0): print(' + i ' end=' ') else: print(' - i ' end=' ') print(abs(img)) # Driver function to check the program if __name__=='__main__': printRoots(1) printRoots(2) printRoots(3) # This code is contributed by # Sanjit_Prasad 
C#
// C# program to print n'th roots of unity  using System; class GFG {  // This function receives an integer n  and prints  // all the nth roots of unity  static void printRoots(int n)  {   // theta = 2*pi/n   double theta = 3.14*2/n;   // print all nth roots with 6 significant digits   for(int k=0; k<n; k++)   {   // calculate the real and imaginary part of root   double real = Math.Cos(k*theta);   double img = Math.Sin(k*theta);   // Print real and imaginary parts   Console.Write(real);   if (img >= 0)   Console.Write(' + i ');   else  Console.Write(' - i ');   Console.WriteLine(Math.Abs(img));   }  }  // Driver function to check the program  static void Main()  {   printRoots(1);     printRoots(2);     printRoots(3);  }  }  // This code is contributed by mits 
PHP
 // PHP program to print n'th roots of unity // This function receives an integer n  // and prints all the nth roots of unity function printRoots($n) { // theta = 2*pi/n $theta = pi() * 2 / $n; // print all nth roots with 6 // significant digits for($k = 0; $k < $n; $k++) { // calculate the real and imaginary  // part of root $real = cos($k * $theta); $img = sin($k * $theta); // Print real and imaginary parts print(round($real 6)); $img >= 0 ? print(' + i '): print(' - i '); printf(round(abs($img) 6) . 'n'); } } // Driver Code printRoots(1); printRoots(2); printRoots(3); // This code is contributed by mits ?> 
JavaScript
<script> // javascript program to print n'th roots of unity // This function receives an integer n  and prints // all the nth roots of unity function printRoots(n) {  // theta = 2*pi/n  var theta = (3.14*2/n);  // print all nth roots with 6 significant digits  for(k = 0; k < n; k++)  {  // calculate the real and imaginary part of root  var real = Math.cos(k*theta);  var img = Math.sin(k*theta);  // Print real and imaginary parts  document.write(real.toFixed(6));  if (img >= 0)  document.write(' + i ');  else  document.write(' - i ');  document.write(Math.abs(img).toFixed(6)+'  
'
); } } // Driver function to check the program printRoots(1); //document.write('
');
printRoots(2); //document.write('
');
printRoots(3); // This code is contributed by shikhasingrajput </script>

Produktion:  

1.000000 + i 0.000000 1.000000 + i 0.000000 -1.000000 + i 0.000000 1.000000 + i 0.000000 -0.500000 + i 0.866025 -0.500000 - i 0.866025


Referencer: Wikipedia