Welcome, guest | Sign In | My Account | Store | Cart

Calculating PI using trigonometric iterations

Python, 23 lines
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# Calculating PI using trigonometric iterations
# FB36 - 20130825
import math

x = 1.0
y = 1.0
z = 1.0
w = 1.0
v = 1.0
u = 1.0

for i in range(30):

    x = math.sin(x) + x
    y = math.cos(y) + y
    z = math.cos(z) + math.sin(z) + z
    w = math.cos(w) - math.sin(w) + w
    v =  math.cos(v) * math.sin(v) + v
    u =  math.cos(u) / math.sin(u) + u
    
    print i
    print x, y * 2.0, z * 4.0 / 3.0, w * 4.0, v * 2.0, u * 2.0
    print

4 comments

FB36 (author) 10 years, 7 months ago  # | flag

Another version:

# Calculating PI using trigonometric iterations
# FB36 - 20130901
import math

def sin2(x):
    return ((math.e ** complex(0.0, x) - math.e ** complex(0.0, -x)) / 2.0).imag

def cos2(x):
    return ((math.e ** complex(0.0, x) + math.e ** complex(0.0, -x)) / 2.0).real

x = 1.0
y = 1.0
x2 = 1.0
y2 = 1.0

for i in range(5):

    x = math.sin(x) + x
    y = math.cos(y) + y
    x2 = sin2(x2) + x2
    y2 = cos2(y2) + y2

    print i, x, x2, y * 2.0, y2 * 2.0
FB36 (author) 7 years, 1 month ago  # | flag
# Calculating PI by solving the equation sin(x) = 0 using Newton Iteration
import math
eps = 1e-10
x = 4.0
i = 0
while True:
    xnew = x - math.sin(x) / math.cos(x)
    if abs(x - xnew) <= eps: break
    x = xnew
    i += 1
    print i, x
FB36 (author) 7 years, 1 month ago  # | flag
# Calculating E by solving the equation ln(x) = 1 using Newton Iteration
import math
eps = 1e-10
x = 3.0
i = 0
while True:
    # xnew = x - (math.log(x) - 1.0) / (1.0 / x)
    # xnew = x - (math.log(x) - 1.0) * x
    xnew = 2.0 * x - math.log(x) * x
    if abs(x - xnew) <= eps: break
    x = xnew
    i += 1
    print i, x
FB36 (author) 7 years, 1 month ago  # | flag
# Calculating Golden Ratio by solving the equation x*x-x-1=0 using Newton Iteration
import math
eps = 1e-10
x = 2.0
i = 0
while True:
    xnew = x - (x * x - x - 1.0) / (2.0 * x - 1.0)
    if abs(x - xnew) <= eps: break
    x = xnew
    i += 1
    print i, x
Created by FB36 on Sun, 25 Aug 2013 (MIT)
Python recipes (4591)
FB36's recipes (148)

Required Modules

  • (none specified)

Other Information and Tasks