Guest User

Untitled

a guest
Jan 11th, 2026
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.53 KB | None | 0 0
  1. import matplotlib
  2. import matplotlib.pyplot as plt
  3. import numpy as np
  4. from math import sqrt, inf
  5. matplotlib.use('webagg')
  6. matplotlib.use('qtagg')
  7.  
  8. def get_pi(n=2, should_plot=False):
  9. # x2 + y2 = 1
  10. xs = []
  11. ys = []
  12. qx = []
  13. qy = []
  14. ql = 0
  15. for x in range(0, 1001):
  16. x /= 1000
  17. y = np.power((1 - x**n), 1/n)
  18. if qx:
  19. ql += np.power((abs(x - qx[-1]))**n + (abs(y - qy[-1]))**n, 1/n)
  20. qx.append(x)
  21. qy.append(y)
  22.  
  23. xs.extend(qx)
  24. ys.extend(qy)
  25.  
  26. xs.extend(list(reversed(qx))[1:])
  27. ys.extend([y*-1 for y in reversed(qy)][1:])
  28.  
  29. xs.extend([x*-1 for x in (qx)][1:])
  30. ys.extend([y*-1 for y in (qy)][1:])
  31.  
  32. xs.extend([x*-1 for x in reversed(qx)][1:])
  33. ys.extend(list(reversed(qy))[1:])
  34.  
  35. dia = ql*4
  36. pi = dia / 2
  37.  
  38. if should_plot:
  39. plt.plot(xs, ys)
  40. plt.axis("equal")
  41. plt.show()
  42.  
  43. return pi
  44.  
  45. print(1, get_pi(1, should_plot=True))
  46. print(2, get_pi(2, should_plot=True))
  47. print(3, get_pi(3, should_plot=True))
  48. print(4, get_pi(4, should_plot=True))
  49. print(5, get_pi(5, should_plot=True))
  50. print(10, get_pi(10))
  51. print(100, get_pi(100))
  52. get_pi(99999999999999999999999999999999999999999999999, should_plot=True)
  53.  
  54. xs = []
  55. ys = []
  56. minpi = inf
  57. minn = None
  58. for n in range(1000, 10000):
  59. if n == 0:
  60. continue
  61. n /= 1000
  62. pi = get_pi(n)
  63. xs.append(n)
  64. ys.append(pi)
  65. if pi < minpi:
  66. minpi = pi
  67. minn = n
  68.  
  69. plt.plot(xs, ys)
  70. plt.plot(minn, minpi, 'bs')
  71. plt.show()
Advertisement
Add Comment
Please, Sign In to add comment