Open In App

Program to find the value of sin(nΘ)

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

Input: sin(?)=0.5, n=1
Output: 0.5

Input: sin(?)=0.5, n=10
Output: -0.866025


 




Approach: This problem can be solved using De moivre’s theoremand Binomial theorem 

   




Now, we have both sin(?) and cos(?). Put the value in equation to get your answer.
Below is the implementation of above approach: 
 

// C++ Program to find the value of sin(n?)
#include <bits/stdc++.h>
#define ll long long int
#define MAX 16
using namespace std;
ll nCr[MAX][MAX] = { 0 };
 
// This function use to calculate the
// binomial coefficient upto 15
void binomial()
{
    // use simple DP to find coefficient
    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
double findCosNTheta(double sinTheta, ll n)
{
    // find cosTheta from sinTheta
    double cosTheta = sqrt(1 - sinTheta * sinTheta);
 
    // store required answer
    double ans = 0;
    // use to toggle sign in sequence.
    ll toggle = 1;
    for (int i = 1; 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 sinTheta = 0.5;
    ll n = 10;
 
    cout << findCosNTheta(sinTheta, n) << endl;
 
    return 0;
}

                    
// Java Program to find the value of sin(n?)
 
public class GFG {
     
    private static final int MAX = 16;
    static long nCr[][] = new long [MAX][MAX];
     
    // This function use to calculate the
    // binomial coefficient upto 15
    static void binomial()
    {
        // use simple DP to find coefficient
        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
    static double findCosNTheta(double sinTheta, int n)
    {
        // find cosTheta from sinTheta
        double cosTheta = Math.sqrt(1 - sinTheta * sinTheta);
     
        // store required answer
        double ans = 0;
        // use to toggle sign in sequence.
        long toggle = 1;
        for (int i = 1; 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 sinTheta = 0.5;
            int n = 10;
             
            System.out.println(findCosNTheta(sinTheta, n));
    }
 
// This code is contributed by ANKITRAI1
}

                    
# Python3 program to find the
# value of sin(n-theta)
 
import math
MAX=16
nCr=[[0 for i in range(MAX)] for i in range(MAX)]
 
# Function to calculate the binomial
# coefficient upto 15
def binomial():
     
    # use simple DP to find coefficient
    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(sinTheta,n):
     
    # find sinTheta from sinTheta
    cosTheta = math.sqrt(1 - sinTheta * sinTheta)
     
    # to store required answer
    ans = 0
     
    # use to toggle sign in sequence.
    toggle = 1
    for i in range(1,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()
    sinTheta = 0.5
    n = 10
    print(findCosNTheta(sinTheta, n))
     
# this code is contributed by sahilshelangia

                    
// C# Program to find the value of sin(n?)
using System;
 
class GFG
{
 
private static int MAX = 16;
static long[,] nCr = new long [MAX, MAX];
 
// This function use to calculate the
// binomial coefficient upto 15
static void binomial()
{
    // use simple DP to find coefficient
    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 sinTheta, int n)
{
    // find cosTheta from sinTheta
    double cosTheta = Math.Sqrt(1 - sinTheta *
                                    sinTheta);
 
    // store required answer
    double ans = 0;
     
    // use to toggle sign in sequence.
    long toggle = 1;
    for (int i = 1; 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 sinTheta = 0.5;
    int n = 10;
     
    Console.Write(findCosNTheta(sinTheta, n));
}
}
 
// This code is contributed by ChitraNayal

                    
<?php
// PHP Program to find the value of sin(n?)
$MAX=16;
$nCr=array_fill(0,$MAX,array_fill(0,$MAX,0));
 
// This function use to calculate the
// binomial coefficient upto 15
function binomial()
{
    global $MAX,$nCr;
    // use simple DP to find coefficient
    for ($i = 0; $i < $MAX; $i++) {
        for ($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
function findCosNTheta($sinTheta,$n)
{
    global $MAX,$nCr;
    // find cosTheta from sinTheta
    $cosTheta = sqrt(1 - $sinTheta * $sinTheta);
 
    // store required answer
    $ans = 0;
    // use to toggle sign in sequence.
    $toggle = 1;
    for ($i = 1; $i <= $n; $i += 2) {
        $ans = $ans + $nCr[$n][$i] * pow($cosTheta, $n - $i)
                        * pow($sinTheta, $i) * $toggle;
        $toggle = $toggle * -1;
    }
    return $ans;
}
 
// Driver code.
 
    binomial();
    $sinTheta = 0.5;
    $n = 10;
 
    echo findCosNTheta($sinTheta, $n);
 
// this code is contributed by mits
?>

                    
<script>
 
// Javascript Program to find the value of sin(n?)
MAX = 16
var nCr = Array.from(Array(MAX), () => new Array(MAX));
 
// This function use to calculate the
// binomial coefficient upto 15
function binomial()
{
    // use simple DP to find coefficient
    for (var i = 0; i < MAX; i++) {
        for (var 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
function findCosNTheta(sinTheta, n)
{
    // find cosTheta from sinTheta
    var cosTheta = Math.sqrt(1 - sinTheta * sinTheta);
 
    // store required answer
    var ans = 0;
    // use to toggle sign in sequence.
    var toggle = 1;
    for (var i = 1; i <= n; i += 2) {
        ans = ans + nCr[n][i] * Math.pow(cosTheta, n - i)
                        * Math.pow(sinTheta, i) * toggle;
        toggle = toggle * -1;
    }
    return ans.toFixed(6);
}
 
// Driver code.
binomial();
var sinTheta = 0.5;
var n = 10;
document.write( findCosNTheta(sinTheta, n));
 
</script>

                    

Output: 
-0.866025

 

Time Complexity: O(MAX2)

Auxiliary Space: O(MAX2)


Article Tags :