471,337 Members | 1,171 Online
Bytes | Software Development & Data Engineering Community
Post +

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 471,337 software developers and data experts.

calculate the series and print

I would like to calculate the value of this series (for limited number of n)
s=2(1/1 - 1/3 + 1/5 -1/7 + 1/9 - 1/11+...)

I tried for-lop but it did not work well since the sign alternative (+, - , +, -...). Please help me

My second question is
how can I obtain this when using for loop to make a series
Expand|Select|Wrap|Line Numbers
  1. >>>[1,2,4,8,16...]
  2.  
  3. # I can only print
  4. 1
  5. 2
  6. 4
  7. 8
  8. 16
  9. ...
  10.  
Oct 11 '07 #1
8 1384
rhitam30111985
112 100+
plz post your code..
only then can someone point out your mistake
Oct 11 '07 #2
bartonc
6,596 Expert 4TB
I would like to calculate the value of this series (for limited number of n)
s=2(1/1 - 1/3 + 1/5 -1/7 + 1/9 - 1/11+...)

I tried for-lop but it did not work well since the sign alternative (+, - , +, -...). Please help me

My second question is
how can I obtain this when using for loop to make a series
Expand|Select|Wrap|Line Numbers
  1. >>>[1,2,4,8,16...]
  2.  
  3. # I can only print
  4. 1
  5. 2
  6. 4
  7. 8
  8. 16
  9. ...
  10.  
For the second question:
Expand|Select|Wrap|Line Numbers
  1. >>> [2**i for i in range(28)]
  2. [1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144, 524288, 1048576, 2097152, 4194304, 8388608, 16777216, 33554432, 67108864, 134217728]
Oct 11 '07 #3
bartonc
6,596 Expert 4TB
I would like to calculate the value of this series (for limited number of n)
s=2(1/1 - 1/3 + 1/5 -1/7 + 1/9 - 1/11+...)

I tried for-lop but it did not work well since the sign alternative (+, - , +, -...). Please help me
Expand|Select|Wrap|Line Numbers
  1. >>> n = 6
  2. >>> numerators = (i for i in range(n * 2) if i%2)
  3. >>> series = [(1/float(j), -1/float(j))[i%2] for i, j in enumerate(numerators)]
  4. >>> series
  5. [1.0, -0.33333333333333331, 0.20000000000000001, -0.14285714285714285, 0.1111111111111111, -0.090909090909090912]
  6. >>> 2 * sum(series)
  7. 1.4880230880230882
  8. >>> 
Oct 11 '07 #4
bvdet
2,851 Expert Mod 2GB
I would like to calculate the value of this series (for limited number of n)
s=2(1/1 - 1/3 + 1/5 -1/7 + 1/9 - 1/11+...)

I tried for-lop but it did not work well since the sign alternative (+, - , +, -...). Please help me
A for loop works fine. You just need a way to alternate the + and -.
Expand|Select|Wrap|Line Numbers
  1. factor = -1
  2. series = range(1, 1000000, 2)
  3. seq = []
  4. for value in series:
  5.     factor *= -1
  6.     seq.append(factor*(1/float(value)))
  7.  
  8. print sum(seq)
  9.  
  10. # >>> 0.785397663397
Oct 11 '07 #5
Motoma
3,237 Expert 2GB
I would like to calculate the value of this series (for limited number of n)
s=2(1/1 - 1/3 + 1/5 -1/7 + 1/9 - 1/11+...)
Check it:
Expand|Select|Wrap|Line Numbers
  1. >>> sum([(((-1)**n)*(float(1)/(1+2*n))) for n in range(0, 8)])
  2. 0.75426795426795445
  3.  
If you need some help understanding this, let me know.
Oct 11 '07 #6
bartonc
6,596 Expert 4TB
Check it:
Expand|Select|Wrap|Line Numbers
  1. >>> sum([(((-1)**n)*(float(1)/(1+2*n))) for n in range(0, 8)])
  2. 0.75426795426795445
  3.  
If you need some help understanding this, let me know.
Very nice! To increase efficiency and reduce syntactic clutter, use a generator instead of a list (I also dumped one set of parens on GPs):
Expand|Select|Wrap|Line Numbers
  1. >>> sum(((-1)**n)*(float(1)/(1+2*n)) for n in xrange(8))
  2. 0.75426795426795445
  3. >>> 
[EDIT: actually two generators, by using xrange() rather than range()]
Oct 11 '07 #7
Motoma
3,237 Expert 2GB
Very nice! To increase efficiency and reduce syntactic clutter, use a generator instead of a list (I also dumped one set of parens on GPs):
Expand|Select|Wrap|Line Numbers
  1. >>> sum(((-1)**n)*(float(1)/(1+2*n)) for n in xrange(8))
  2. 0.75426795426795445
  3. >>> 
[EDIT: actually two generators, by using xrange() rather than range()]
FANTASTIC!
This is the first time I have been introduced to generators!
I honestly learn something new every time I post in this forum.
Oct 11 '07 #8
bartonc
6,596 Expert 4TB
FANTASTIC!
This is the first time I have been introduced to generators!
I honestly learn something new every time I post in this forum.
From what I understand, generators are something to get used to.
They are efficient because they return values instead of storing them.
This means that you can't index into them nor print the entire contents; You must iterate over them.
They are required learning because Python 3.0 uses them in many places where lists were used in 2.5.
Oct 11 '07 #9

Post your reply

Sign in to post your reply or Sign up for a free account.

Similar topics

reply views Thread by Anders Eriksson | last post: by
5 posts views Thread by Jepsensen | last post: by
11 posts views Thread by Thomas | last post: by
reply views Thread by terryhui | last post: by
reply views Thread by rosydwin | last post: by

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.