import numpy as np
from math import log
n = 15
def wynnepsilon(sn, r):
"""Perform Wynn Epsilon Convergence Algorithm"""
r = int(r)
n = 2 * r + 1
e = np.zeros(shape=(n + 1, n + 1))
for i in range(1, n + 1):
e[i, 1] = sn[i - 1]
for i in range(3, n + 2):
for j in range(3, i + 1):
e[i - 1, j - 1] = e[i - 2, j - 3] + 1 / (e[i - 1, j - 2] - e[i - 2, j - 2])
er = e[:, 1:n + 1:2]
return er
ps=[]
# s= 0
# for k in range(0, n):
# term = 4* (-1 if k % 2 else 1) /(2 * k + 1)
# # term = 1/(k+1)-log(1+1/(k+1))
# s += term
# ps.append(s)
ps = [2.537952552253107,
0.6344881380632768,
0.281994728028123,
0.1586220345158192,
0.10151810209012428,
0.07049868200703074,
0.05179495004598177,
0.0396555086289548,
0.03133274755868033,
0.02537952552253107,
0.020974814481430636,
0.017624670501757686,
0.015017470723391166,
0.012948737511495443,
0.01127978912112492,
0.0099138771572387]
print(ps)
# er = wynnepsilon(ps, np.floor((n - 1) / 2))
# last = er[-1, -1]
# print(last)
def _next(sn):
ans = []
for i in range(len(sn) - 2):
if sn[i] - 2 * sn[i + 1] + sn[i + 2] == 0:
return sn
ans.append(sn[i] - (sn[i + 1] - sn[i])**2 / (sn[i] - 2*sn[i + 1] + sn[i + 2]))
return ans
for _ in range(6):
nps = _next(ps)
print("nps :", nps)
if len(nps) == len(ps):
break
ps = nps
print(len(ps), ps[-1])
To embed this program on your website, copy the following code and paste it into your website's HTML: