Sum of the Tan(x) expansion upto N terms
Given two integers N and X. The task is to find the sum of tan(x) series up to N terms.
The series :
x + x3/3 + 2x5/15 + 17x7/315 + 62x9/2835……..
Examples:
Input : N = 6, X = 1
Output :The value from the expansion is 1.55137626113259
Input : N = 4, X = 2
Output :The value from the expansion is 1.52063492063426
Approach :
The expansion of tan(x) is shown here. Compute the each term using a simple loops and get the required answer.
C++
// CPP program to find tan(x) expansion #include <bits/stdc++.h> using namespace std; // Function to find factorial of a number int fac( int num) { if (num == 0) return 1; // To store factorial of a number int fact = 1; for ( int i = 1; i <= num; i++) fact = fact * i; // Return the factorial of a number return fact; } // Function to find tan(x) upto n terms void Tanx_expansion( int terms, int x) { // To store value of the expansion double sum = 0; for ( int i = 1; i <= terms; i += 1) { // This loops here calculate Bernoulli number // which is further used to get the coefficient // in the expansion of tan x double B = 0; int Bn = 2 * i; for ( int k = 0; k <= Bn; k++) { double temp = 0; for ( int r = 0; r <= k; r++) temp = temp + pow (-1, r) * fac(k) * pow (r, Bn) / (fac(r) * fac(k - r)); B = B + temp / (( double )(k + 1)); } sum = sum + pow (-4, i) * (1 - pow (4, i)) * B * pow (x, 2 * i - 1) / fac(2 * i); } // Print the value of expansion cout << setprecision(10) << sum; } // Driver code int main() { int n = 6, x = 1; // Function call Tanx_expansion(n, x); return 0; } |
Java
// Java program to find tan(x) expansion class GFG { // Function to find factorial of a number static int fac( int num) { if (num == 0 ) return 1 ; // To store factorial of a number int fact = 1 ; for ( int i = 1 ; i <= num; i++) fact = fact * i; // Return the factorial of a number return fact; } // Function to find tan(x) upto n terms static void Tanx_expansion( int terms, int x) { // To store value of the expansion double sum = 0 ; for ( int i = 1 ; i <= terms; i += 1 ) { // This loops here calculate Bernoulli number // which is further used to get the coefficient // in the expansion of tan x double B = 0 ; int Bn = 2 * i; for ( int k = 0 ; k <= Bn; k++) { double temp = 0 ; for ( int r = 0 ; r <= k; r++) temp = temp + Math.pow(- 1 , r) * fac(k) * Math.pow(r, Bn) / (fac(r) * fac(k - r)); B = B + temp / (( double )(k + 1 )); } sum = sum + Math.pow(- 4 , i) * ( 1 - Math.pow( 4 , i)) * B * Math.pow(x, 2 * i - 1 ) / fac( 2 * i); } // Print the value of expansion System.out.printf( "%.9f" , sum); } // Driver code public static void main(String[] args) { int n = 6 , x = 1 ; // Function call Tanx_expansion(n, x); } } // This code is contributed by Rajput-Ji |
Python3
# Python3 program to find tan(x) expansion # Function to find factorial of a number def fac(num): if (num = = 0 ): return 1 ; # To store factorial of a number fact = 1 ; for i in range ( 1 , num + 1 ): fact = fact * i; # Return the factorial of a number return fact; # Function to find tan(x) upto n terms def Tanx_expansion(terms, x): # To store value of the expansion sum = 0 ; for i in range ( 1 , terms + 1 ): # This loops here calculate Bernoulli number # which is further used to get the coefficient # in the expansion of tan x B = 0 ; Bn = 2 * i; for k in range (Bn + 1 ): temp = 0 ; for r in range ( 0 , k + 1 ): temp = temp + pow ( - 1 , r) * fac(k) \ * pow (r, Bn) / (fac(r) * fac(k - r)); B = B + temp / ((k + 1 )); sum = sum + pow ( - 4 , i) * ( 1 - pow ( 4 , i)) \ * B * pow (x, 2 * i - 1 ) / fac( 2 * i); # Print the value of expansion print ( "%.9f" % ( sum )); # Driver code if __name__ = = '__main__' : n, x = 6 , 1 ; # Function call Tanx_expansion(n, x); # This code is contributed by Rajput-Ji |
C#
// C# program to find tan(x) expansion using System; class GFG { // Function to find factorial of a number static int fac( int num) { if (num == 0) return 1; // To store factorial of a number int fact = 1; for ( int i = 1; i <= num; i++) fact = fact * i; // Return the factorial of a number return fact; } // Function to find tan(x) upto n terms static void Tanx_expansion( int terms, int x) { // To store value of the expansion double sum = 0; for ( int i = 1; i <= terms; i += 1) { // This loop here calculates // Bernoulli number which is // further used to get the coefficient // in the expansion of tan x double B = 0; int Bn = 2 * i; for ( int k = 0; k <= Bn; k++) { double temp = 0; for ( int r = 0; r <= k; r++) temp = temp + Math.Pow(-1, r) * fac(k) * Math.Pow(r, Bn) / (fac(r) * fac(k - r)); B = B + temp / (( double )(k + 1)); } sum = sum + Math.Pow(-4, i) * (1 - Math.Pow(4, i)) * B * Math.Pow(x, 2 * i - 1) / fac(2 * i); } // Print the value of expansion Console.Write( "{0:F9}" , sum); } // Driver code public static void Main(String[] args) { int n = 6, x = 1; // Function call Tanx_expansion(n, x); } } // This code is contributed by 29AjayKumar |
Javascript
<script> // JavaScript program to find tan(x) expansion // Function to find factorial of a number function fac(num) { if (num == 0) return 1; // To store factorial of a number let fact = 1; for (let i = 1; i <= num; i++) fact = fact * i; // Return the factorial of a number return fact; } // Function to find tan(x) upto n terms function Tanx_expansion(terms, x) { // To store value of the expansion let sum = 0; for (let i = 1; i <= terms; i += 1) { // This loops here calculate Bernoulli number // which is further used to get the coefficient // in the expansion of tan x let B = 0; let Bn = 2 * i; for (let k = 0; k <= Bn; k++) { let temp = 0; for (let r = 0; r <= k; r++) temp = temp + Math.pow(-1, r) * fac(k) * Math.pow(r, Bn) / (fac(r) * fac(k - r)); B = B + temp / (k + 1); } sum =sum + Math.pow(-4, i) * (1 - Math.pow(4, i)) * B * Math.pow(x, 2 * i - 1) / fac(2 * i); } // Print the value of expansion document.write(sum.toFixed(10)); } // Driver code let n = 6, x = 1; // Function call Tanx_expansion(n, x); // This code is contributed by Surbhi Tyagi. </script> |
Output:
1.551373344
Time Complexity: O(n2)
Auxiliary Space: O(1), since no extra space has been taken.