给定sin(Θ)的值和变量n <= 15。任务是使用三角函数的属性找到sin(nΘ)的值。
例子:
Input: sin(Θ)=0.5, n=1
Output: 0.5
Input: sin(Θ)=0.5, n=10
Output: -0.866025
方法:可以使用De moivre定理二项式定理解决此问题
现在,我们既有sin(Θ)又有cos(Θ)。将值放在等式中即可得到答案。
下面是上述方法的实现:
C++
// C++ Program to find the value of sin(n?)
#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 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
// 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 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 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
# 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
# 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(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#
// 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 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 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
Javascript
输出:
-0.866025