Leibniz formula for π - Is this any good? (Python)
I'm doing an exercise that asks for a function that approximates the value of pi using Leibniz' formula. These are the explanations on Wikipedia:
Logical thinking comes to me easily, but I wasn't given much of a formal education in maths, so I'm a bit lost as to what the leftmost symbols in the second one represent. I tried to make the code
pi = ( (-1)**n / (2*n + 1) ) * 4, but that returned
1.9999990000005e-06 instead of 3.14159..., so I used an accumulator pattern instead (since the chapter of the guide that this was in mentions them as well) and it worked fine. However, I can't help thinking that it's somewhat contrived and there's probably a better way to do it, given Python's focus on simplicity and making programmes as short as possible. This is the full code:
def myPi(n): denominator = 1 addto = 1 for i in range(n): denominator = denominator + 2 addto = addto - (1/denominator) denominator = denominator + 2 addto = addto + (1/denominator) pi = addto * 4 return(pi) print(myPi(1000000))
Does anyone know a better function?
The capital sigma here is sigma notation. It is notation used to represent a summation in concise form.
So your sum is actually an infinite sum. The first term, for n=0, is:
This is added to
and then to
and so on for ever. The summation is what is known mathematically as a convergent sum.
In Python you would write it like this:
def estimate_pi(terms): result = 0.0 for n in range(terms): result += (-1.0)**n/(2.0*n+1.0) return 4*result
If you wanted to optimise a little, you can avoid the exponentiation.
def estimate_pi(terms): result = 0.0 sign = 1.0 for n in range(terms): result += sign/(2.0*n+1.0) sign = -sign return 4*result .... >>> estimate_pi(100) 3.1315929035585537 >>> estimate_pi(1000) 3.140592653839794
Leibniz formula for π, formula, asking user at what n-th term she. wants computation. nTerm = int(input('To what term do you want and. calculate Leibniz formula?')) print(). sum = 0. So I am trying to approximate pi using Leibniz formula. I atleast want to approximate to .5 and .1. Also, when my approximation becomes larger than the precision value, I finish the loop.
The Leibniz formula translates directly into Python with no muss or fuss:
>>> steps = 1000000 >>> sum((-1.0)**n / (2.0*n+1.0) for n in reversed(range(steps))) * 4 3.1415916535897934
Gregory Leibniz formula, Gregory-Leibniz formula for 'pi' # http://en.wikipedia.org/wiki/Leibniz_formula_for_%CF%80 def calcPi(n): pi,numer = 0,4.0 for i in range(n): denom = (2*i+1) term I see some resemblance to the Leibniz formula for π, but I can't tell what your goal is. \$\endgroup\$ – 200_success Mar 3 '14 at 10:38 add a comment | 1 Answer 1
Using pure Python you can do something like:
def term(n): return ( (-1.)**n / (2.*n + 1.) )*4. def pi(nterms): return sum(map(term,range(nterms)))
and then calculate
pi with the number of terms you need to reach a given precision:
pi(100) # 3.13159290356 pi(1000) # 3.14059265384
Calculate Pi using Python, No one. So we are going to use the Leibniz Formula to calculate Pi. It's pretty simple actually, to calculate Pi we can use this formula: Where n Leibniz formula for π - Is this any good? (Python) Ask Question given Python's focus on simplicity and making programmes as short as possible. This is the full code:
The following version uses Ramanujan's formula as outlined in this SO post - it uses a relation between pi and the "monster group", as discussed in this article.
import math def Pi(x): Pi = 0 Add = 0 for i in range(x): Add =(math.factorial(4*i) * (1103 + 26390*i))/(((math.factorial(i))**4)*(396**(4*i))) Pi = Pi + (((math.sqrt(8))/(9801))*Add) Pi = 1/Pi print(Pi) Pi(100)
calculating pi in python using Leibniz formula down to the .5 , For your for loop, you want to iterate for a certain number of terms, while your while loop implies you want to repeat until your answer is within some precision ( This doesn't answer the question. You're saying how to use the Leibniz formula to calculate π to some accuracy. The question is how to get a non-zero value of the formula when you already know you want n terms. – Teepeemm Dec 7 '16 at 3:47
This was my approach:
def estPi(terms): outPut = 0.0 for i in range (1, (2 * terms), 4): outPut = (outPut + (1/i) - (1/(i+2))) return 4 * outPut
I take in the number of terms the user wants, then in the for loop I double it to account for only using odds.
at 100 terms I get 3.1315929035585537 at 1000 terms I get 3.140592653839794 at 10000 terms I get 3.1414926535900345 at 100000 terms I get 3.1415826535897198 at 1000000 terms I get 3.1415916535897743 at 10000000 terms I get 3.1415925535897915 at 100000000 terms I get 3.141592643589326 at 1000000000 terms I get 3.1415926525880504 Actual Pi is 3.1415926535897932
Got to love a convergent series.
Coding Challenge #140: Pi Approximation with Leibniz Series , I have this Python program for calculating Leibniz of 'pi'. I am not able to shorten it more. Can anyone here optimise/shorten it? s,a, 'pi', using a series summation formula. -Saty. Python Fiddle Python Cloud IDE
Calculating Leibniz of Pi, Pi (π) is one of the most important and fascinating numbers in mathematics. π by using the formula from method #1: π = Circumference / Diameter. Method #2: Calculating Pi Using an Infinite Series (Gregory-Leibniz series) will accurately calculate Pi to a great number of decimal places. Yes or No! Example 3: Using any() with Python Dictionaries. In the case of dictionaries, if all keys (not values) are false or the dictionary is empty, any() returns False.If at least one key is true, any() returns True.
Calculating Pi using a Python script, Calculate Pi using the Leibniz formula. gistfile1.py. def gen_pi():. denom = 1. positive = True. value = 0. while True: value += (1. / denom) if positive else -(1. Did you know? Pi (π) is one of the most important and fascinating numbers in mathematics. Roughly 3.14, it is a constant that is used to calculate the circumference of a circle from that circle's radius or diameter. Pi is also an irrational number, which means that it can be calculated to an infinite number of decimal places without ever slipping into a repeating pattern. This makes it
Calculate Pi using the Leibniz formula · GitHub, Leibniz's formula converges extremely slowly: it exhibits sublinear convergence. Calculating π to 10 correct decimal places using direct summation of the series Print the value of π after every fourth calculation, for the first 2000 terms of this series (500 output values). For convenience, your output should insert a newline after every five values, making a table where every row displays five values.