给定tan(Θ)的值和变量n <= 15。任务是使用三角函数的属性找到tan(nΘ)的值。
例子:
Input: tan(Θ) = 0.3, n = 10
Output: -2.15283
Input: tan(Θ) = 0.3, n = 5
Output: 0.37293
可以使用De moivre定理二项式定理解决此问题
下面是上述方法的实现:
C++
// C++ program to find the value
// of cos(n-theta)
#include
#define ll long long int
#define MAX 16
using namespace std;
ll nCr[MAX][MAX] = { 0 };
// This function use 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
double findTanNTheta(double tanTheta, ll n)
{
// store required answer
double ans = 0, numerator = 0, denominator = 0;
// use to toggle sign in sequence.
ll toggle = 1;
// calculate numerator
for (int i = 1; i <= n; i += 2) {
numerator = numerator + nCr[n][i] * pow(tanTheta, i) * toggle;
toggle = toggle * -1;
}
// calculate denominator
denominator = 1;
toggle = -1;
for (int i = 2; i <= n; i += 2) {
numerator = numerator + nCr[n][i] * pow(tanTheta, i) * toggle;
toggle = toggle * -1;
}
ans = numerator / denominator;
return ans;
}
// Driver code.
int main()
{
binomial();
double tanTheta = 0.3;
ll n = 10;
cout << findTanNTheta(tanTheta, n) << endl;
return 0;
}
Java
// Java program to find the value
// of cos(n-theta)
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 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
static double findTanNTheta(double tanTheta, int n)
{
// store required answer
double ans = 0, numerator = 0, denominator = 0;
// use to toggle sign in sequence.
long toggle = 1;
// calculate numerator
for (int i = 1; i <= n; i += 2) {
numerator = numerator + nCr[n][i] * Math.pow(tanTheta, i) * toggle;
toggle = toggle * -1;
}
// calculate denominator
denominator = 1;
toggle = -1;
for (int i = 2; i <= n; i += 2) {
numerator = numerator + nCr[n][i] * Math.pow(tanTheta, i) * toggle;
toggle = toggle * -1;
}
ans = numerator / denominator;
return ans;
}
// Driver code
public static void main(String args[])
{
binomial();
double tanTheta = 0.3;
int n = 10;
System.out.println(findTanNTheta(tanTheta, n));
}
// This code is contributed by ANKITRAI1
}
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 findTanNTheta(tanTheta,n):
# store required answer
numerator=0
denominator=1
# to store required answer
ans = 0
# use to toggle sign in sequence.
toggle = 1
# calculate numerator
for i in range(1,n+1,2):
numerator = (numerator + nCr[n][i]*
(tanTheta**(i)) * toggle)
toggle = toggle * -1
# calculate denominator
toggle=-1
for i in range(2,n+1,2):
numerator = (numerator + nCr[n][i]*
(tanTheta**i) * toggle)
toggle = toggle * -1
ans=numerator/denominator
return ans
# Driver code
if __name__=='__main__':
binomial()
tanTheta = 0.3
n = 10
print(findTanNTheta(tanTheta, n))
# this code is contributed by sahilshelangia
C#
// C# program to find the value
// of cos(n-theta)
using System;
public 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 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
static double findTanNTheta(double tanTheta, int n)
{
// store required answer
double ans = 0, numerator = 0, denominator = 0;
// use to toggle sign in sequence.
long toggle = 1;
// calculate numerator
for (int i = 1; i <= n; i += 2) {
numerator = numerator + nCr[n,i] * Math.Pow(tanTheta, i) * toggle;
toggle = toggle * -1;
}
// calculate denominator
denominator = 1;
toggle = -1;
for (int i = 2; i <= n; i += 2) {
numerator = numerator + nCr[n,i] * Math.Pow(tanTheta, i) * toggle;
toggle = toggle * -1;
}
ans = numerator / denominator;
return ans;
}
// Driver code
public static void Main()
{
binomial();
double tanTheta = 0.3;
int n = 10;
Console.Write(findTanNTheta(tanTheta, n));
}
}
PHP
Javascript
输出:
-2.15283