Related Articles
Program to Find the value of cos(nΘ)
• Last Updated : 09 Feb, 2021

Given a value of cos(Θ) and a variable . The task is to find the value of cos(nΘ) using property of trigonometric functions.
Note: n <= 15.
Examples

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

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

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 }; // Function to calculate the binomial// cofficient upto 15void 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 codeint 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]; // Function to calculate the binomial// cofficient upto 15static 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 codepublic 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 mathMAX=16nCr=[[0 for i in range(MAX)] for i in range(MAX)] # Function to calculate the binomial# cofficient upto 15def 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 codeif __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];      // Function 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

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up