Sum of the Tan(x) expansion upto N terms
Last Updated :
04 Jun, 2022
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++
#include <bits/stdc++.h>
using namespace std;
int fac( int num)
{
if (num == 0)
return 1;
int fact = 1;
for ( int i = 1; i <= num; i++)
fact = fact * i;
return fact;
}
void Tanx_expansion( int terms, int x)
{
double sum = 0;
for ( int i = 1; i <= terms; i += 1) {
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);
}
cout << setprecision(10) << sum;
}
int main()
{
int n = 6, x = 1;
Tanx_expansion(n, x);
return 0;
}
|
Java
class GFG
{
static int fac( int num)
{
if (num == 0 )
return 1 ;
int fact = 1 ;
for ( int i = 1 ; i <= num; i++)
fact = fact * i;
return fact;
}
static void Tanx_expansion( int terms, int x)
{
double sum = 0 ;
for ( int i = 1 ; i <= terms; i += 1 )
{
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);
}
System.out.printf( "%.9f" , sum);
}
public static void main(String[] args)
{
int n = 6 , x = 1 ;
Tanx_expansion(n, x);
}
}
|
Python3
def fac(num):
if (num = = 0 ):
return 1 ;
fact = 1 ;
for i in range ( 1 , num + 1 ):
fact = fact * i;
return fact;
def Tanx_expansion(terms, x):
sum = 0 ;
for i in range ( 1 , terms + 1 ):
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 ( "%.9f" % ( sum ));
if __name__ = = '__main__' :
n, x = 6 , 1 ;
Tanx_expansion(n, x);
|
C#
using System;
class GFG
{
static int fac( int num)
{
if (num == 0)
return 1;
int fact = 1;
for ( int i = 1; i <= num; i++)
fact = fact * i;
return fact;
}
static void Tanx_expansion( int terms, int x)
{
double sum = 0;
for ( int i = 1; i <= terms; i += 1)
{
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);
}
Console.Write( "{0:F9}" , sum);
}
public static void Main(String[] args)
{
int n = 6, x = 1;
Tanx_expansion(n, x);
}
}
|
Javascript
<script>
function fac(num)
{
if (num == 0)
return 1;
let fact = 1;
for (let i = 1; i <= num; i++)
fact = fact * i;
return fact;
}
function Tanx_expansion(terms, x)
{
let sum = 0;
for (let i = 1; i <= terms; i += 1) {
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);
}
document.write(sum.toFixed(10));
}
let n = 6, x = 1;
Tanx_expansion(n, x);
</script>
|
Time Complexity: O(n2)
Auxiliary Space: O(1), since no extra space has been taken.
Share your thoughts in the comments
Please Login to comment...