给定一个cos(Θ)值和一个变量 。任务是使用三角函数的属性找到cos(nΘ)的值。
注意: n <= 15。
例子:
Input : cos(Θ) = 0.5, n = 10
Output : -0.5
Input :cos(Θ) = 0.5, n = 3
Output : -0.995523
可以使用De moivre定理和二项式定理解决该问题,如下所述:
使用De-Moivre定理,我们有:
现在,已知sin(Θ)和cos(Θ)的值。将值放在上面的公式中以获得答案。
下面是上述想法的实现:
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 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];
// 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(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)]
# Function 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];
// 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
Javascript
输出:
-0.5