help needed to solve this series
E(x)=1-x^2/2!+x^3/3!-x^4/4!+x^5/5!+....................

7
Contributors
10
Replies
12
Views
8 Years
Discussion Span
Last Post by siddhant3s

Well it's almost like the series for exp(x), except the signs are alternating and it's missing the x^1 term and the x^0 term has the wrong sign. If consider the series you get for exp(-x), you should be close to the answer :)

I'm a newbie here but as much as i know, shouldnt this thread not be in C++? Its math, for heavens sake. Also, its wierd that someone has come asking for help with random math equations. Like a binomial theorem that goes on forever :P.

Perhaps his real question is how can he compute the value of that series to a given figure amount using C++?

In that case, the right solution would still be to use the closed form expression :)

I missed a term in series.Really sorry. the actual series is

E(x)=1-x/1!+x^2/2!-x^3/3!+........................x^n/n!

This should get you pretty close. Each term has the form (-1^n)*((x^n)/n!) where 0! is defined as 1 and x^0 is also defined as 1. E(x) is the sum of the number of terms you want to use. You calculate the sum using a running total within a loop adding each term as it is calculated. Calculate each term by changing the form to: a *(b/c) and then calculate a, b and c before calculating the term. a, b, and c can each be calculated using loops. As an alternative a and b could be calculated using pow(). As a further alternative a could be calculated using an if statement and n % 2.

You want to calculate the n-term series and not the infinite series?

I wrote two simple C++-functions:
-> One wich raises a number x to the power of y ( apow(x, y); )
-> One which calculates the faculty of number x ( faculty(x); )

long long faculty(long x)
{
long long y = 1;
y = 1;

for(int i = 1; i < (x+1); i++)
y = y * i;

return y;
}

long double apow(float x, int y)
{
long double result = 1;
if(y == 0)
return result;

if(y < 0)
{
y = -y;
for(int i = 0; i < y; i++)
result = result * x;
return 1/result;
}

for(int i = 0; i < y; i++)
result = result * x;

return result;
}

And here's a full example where you can see these functions at work:

#include <iostream>

long long faculty(long x);
long double apow(float x, int y);

using namespace std;

int main(void)
{
int x = 1;

cout << "6! = " << faculty(6) << endl;
cout << "10^2 = " << apow(10, 2) << endl;
cout << "10^-2 = " << apow(10, -2) << endl;
cout << "10^0 = " << apow(10, 0) << endl;

return 0;
}

long long faculty(long x)
{
long long y = 1;
y = 1;

for(int i = 1; i < (x+1); i++)
y = y * i;

return y;
}

long double apow(float x, int y)
{
long double result = 1;
if(y == 0)
return result;

if(y < 0)
{
y = -y;
for(int i = 0; i < y; i++)
result = result * x;
return 1/result;
}

for(int i = 0; i < y; i++)
result = result * x;

return result;
}
RashFool rep cancellation+++
How does that help the OP?

You want to calculate the n-term series and not the infinite series?

YES

First convert your equation to a closed form. The close form clearly is $$\sum_{n=0}^{\infty}(-1)^n\frac{x^n}{n!}$$

Now construct a loop and evaluate it to desired n
You would need a function to calculate factorial and powers.