Program to Find the value of cos(nΘ)

Given a value of cos(Θ) and a variable . The task is to find the value of cos(nΘ) using propety of trignomertric functions.

Note: n <= 15.

Examples:

Input : cos(Θ) = 0.5, n = 10
Output : -0.5

Input :cos(Θ) = 0.5, n = 3
Output : -0.995523

Recommended: Please try your approach on {IDE} first, before moving on to the solution.

The problem can be solved using De moivre’s theorem and Binomial theorem as described below:

Using De-Moivre’s theorem, we have: Now, as the value of both sin(Θ) and cos(Θ) is known. Put the values in above equation to get the answer.

Below is the implementation of the above idea:

C++

 // CPP program to find the value of cos(n-theta)    #include    #define MAX 16    using namespace std;    int nCr[MAX][MAX] = { 0 };    // Fucntion to calculate the binomial // cofficient upto 15 void binomial() {     // use simple DP to find cofficient     for (int i = 0; i < MAX; i++) {         for (int j = 0; j <= i; j++) {             if (j == 0 || j == i)                 nCr[i][j] = 1;             else                 nCr[i][j] = nCr[i - 1][j] + nCr[i - 1][j - 1];         }     } }    // Function to find the value of cos(n-theta) double findCosnTheta(double cosTheta, int n) {     // find sinTheta from cosTheta     double sinTheta = sqrt(1 - cosTheta * cosTheta);        // to store required answer     double ans = 0;        // use to toggle sign in sequence.     int toggle = 1;        for (int i = 0; i <= n; i += 2) {         ans = ans + nCr[n][i] * pow(cosTheta, n - i) *                               pow(sinTheta, i) * toggle;         toggle = toggle * -1;     }        return ans; }    // Driver code int main() {     binomial();        double cosTheta = 0.5;        int n = 10;        cout << findCosnTheta(cosTheta, n) << endl;        return 0; }

Java

 // Java program to find the value of cos(n-theta)    class GFG {     static int MAX=16;     static int[][] nCr=new int[MAX][MAX];    // Fucntion to calculate the binomial // cofficient upto 15 static void binomial() {     // use simple DP to find cofficient     for (int i = 0; i < MAX; i++) {         for (int j = 0; j <= i; j++) {             if (j == 0 || j == i)                 nCr[i][j] = 1;             else                 nCr[i][j] = nCr[i - 1][j] + nCr[i - 1][j - 1];         }     } }    // Function to find the value of cos(n-theta) static double findCosnTheta(double cosTheta, int n) {     // find sinTheta from cosTheta     double sinTheta = Math.sqrt(1 - cosTheta * cosTheta);        // to store required answer     double ans = 0;        // use to toggle sign in sequence.     int toggle = 1;        for (int i = 0; i <= n; i += 2) {         ans = ans + nCr[n][i] * Math.pow(cosTheta, n - i) *                             Math.pow(sinTheta, i) * toggle;         toggle = toggle * -1;     }        return ans; }    // Driver code public static void main(String[] args) {     binomial();        double cosTheta = 0.5;        int n = 10;        System.out.println(String.format("%.5f",findCosnTheta(cosTheta, n))); } } // This code is contributed by mits

Python3

 # Python3 program to find the value of cos(n-theta)    import math MAX=16 nCr=[[0 for i in range(MAX)] for i in range(MAX)]    # Fucntion to calculate the binomial # cofficient upto 15 def binomial():            # use simple DP to find cofficient     for i in range(MAX):         for j in range(0,i+1):             if j == 0 or j == i:                 nCr[i][j] = 1             else:                 nCr[i][j] = nCr[i - 1][j] + nCr[i - 1][j - 1]    # Function to find the value of cos(n-theta) def findCosnTheta(cosTheta,n):            # find sinTheta from cosTheta     sinTheta = math.sqrt(1 - cosTheta * cosTheta)            # to store the required answer     ans = 0            # use to toggle sign in sequence.     toggle = 1     for i in range(0,n+1,2):         ans = ans + nCr[n][i]*(cosTheta**(n - i)) *(sinTheta**i) * toggle         toggle = toggle * -1     return ans        # Driver code  if __name__=='__main__':     binomial()     cosTheta = 0.5     n = 10     print(findCosnTheta(cosTheta, n))        # this code is contributed by sahilshelangia

C#

 // C# program to find the value of cos(n-theta) using System;  public class GFG{     static int MAX=16;     static int [,]nCr=new int[MAX,MAX];         // Fucntion to calculate the binomial     // cofficient upto 15     static void binomial()     {         // use simple DP to find cofficient         for (int i = 0; i < MAX; i++) {             for (int j = 0; j <= i; j++) {                 if (j == 0 || j == i)                     nCr[i,j] = 1;                 else                     nCr[i,j] = nCr[i - 1,j] + nCr[i - 1,j - 1];             }         }     }        // Function to find the value of cos(n-theta)     static double findCosnTheta(double cosTheta, int n)     {         // find sinTheta from cosTheta         double sinTheta = Math.Sqrt(1 - cosTheta * cosTheta);            // to store required answer         double ans = 0;            // use to toggle sign in sequence.         int toggle = 1;            for (int i = 0; i <= n; i += 2) {             ans = ans + nCr[n,i] * Math.Pow(cosTheta, n - i) *                                 Math.Pow(sinTheta, i) * toggle;             toggle = toggle * -1;         }            return ans;     }        // Driver code     public static void Main()     {         binomial();            double cosTheta = 0.5;         int n = 10;         Console.WriteLine(findCosnTheta(cosTheta, n));     } }    // This code is contributed by 29AjayKumar

Output:

-0.5

My Personal Notes arrow_drop_up Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.

Article Tags :
Practice Tags :

Be the First to upvote.

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.