Ins
Ins

Reputation: 13

Finding a sum of series in Python 2.7.x

Here's the equation

x + x^2/2 + x^3/3 +.... x^n/n

How will I find the sum of this series? x is a constant term to be entered by user and n which is power is also based on user!

I made this program but it's not working properly.. Have a look -

n=input("Enter power ")
x=input("Enter value of x")
i=0
while i<n:
    c=n-1
    res=(x**(n-c))/(n-(c))
    print res
    i=i+1

So how do we make it? Thanks a ton for your help!

Update : The answers helped me and now the program is working as it should! This was my first time using Stackoverflow! Thanks to everyone for this.

Upvotes: 1

Views: 107

Answers (3)

Moinuddin Quadri
Moinuddin Quadri

Reputation: 48077

Issue with your program is that your are not adding the sum. See: res=(x**(n-c))/(n-(c)). Instead do:

res += (x**(n-c))/(n-(c))

You may also achieve it by using in-built sum, map and lambda functions as:

y = 5  # or any of your number
sum(map(lambda x: (y**x)/float(x), xrange(1, y)))

Upvotes: 0

perfect5th
perfect5th

Reputation: 2062

Something like this for your loop? Tried to keep it simple.

n = input("Enter power ")
x = float(input("Enter value of x"))

ans = 0
for i in range(1, n+1):
    ans += x**i/i

print(ans)

See zev's answer regarding floats

Upvotes: 2

Zev Chonoles
Zev Chonoles

Reputation: 1283

You're not adding the terms together.

Also, you need to be careful that you use float division when x is an integer. See this thread.

Here's a working implementation:

n = input("Enter power: ")
x = input("Enter value of x: ")
result = 0
for i in range(1, n+1):
    result += (x**i) / float(i)
print result

Upvotes: 2

Related Questions