#On the name of ALLAH and may the blessing and peace of Allah
#be upon the Messenger of Allah Mohamed Salla Allahu Aliahi Wassalam.
#Author : Fouad Teniou
#Date : 23/02/10
#version :2.6
"""
Pi_approximation uses the subinterval_length function and return
its value and yield all the points values while using the subinterval_point
function and Pi function compute Pi approximation with 16 decimal places
the greater the value of the number the more precise is Pi value
"""
class Pi_Approximation(object):
"""
Class that represent Pi approximation
"""
def __init__(self, number):
"""
Pi_Approximation constructor takes the number constant
"""
self.number = number
def subinterval_length(self):
"""
Compute subinterval_length
"""
sub_length = 2/float(self.number)
return sub_length
def subinterval_point(self):
"""
Compute the value of each point
"""
#attempt to yield all the Xk points values using the subinterval_point
try:
for item in range(1,self.number + 1):
sub_point = -1 + ((item - 1/2.0)* Pi_Approximation.subinterval_length(self))
yield sub_point
#Raise TypeError if input is not numerical
except TypeError:
print "\n<The entered value is not a number"
def Pi(self):
"""
Computing Pi value.
"""
#attempt to Approximate Pi for a given value
try:
my_sum = 0 #Set my_sum to 0
# using subinterval_point function to compute Pi approximation.
# the greater the value of the number the more accurate result
for self.point in Pi_Approximation.subinterval_point(self):
self.pi_X = pow((1-self.point**2),0.5)
my_sum += self.pi_X
pi = (my_sum * Pi_Approximation.subinterval_length(self))*2
yield repr(pi)
#Raise TypeError if input is not numerical
except TypeError:
print "\n<The entered value is not a number"
if __name__ == '__main__':
for arg in xrange(600000,2700000,300000):
pi = Pi_Approximation(arg)
for i in pi.Pi():
pass
print i
#######################################################################
# FT python "C:\Users\Pi1.py"
#
# 3.1415926556860203
# 3.1415926547308004
# 3.1415926543309367
# 3.1415926541200871
# 3.1415926539930723
# 3.141592653909842
# 3.14159265385199
##########################################################################################
#Version : Python 3.2
#class Pi_Approximation(object):
# """
# Class that represent Pi approximation
# """
# def __init__(self, number):
# """
# Pi_Approximation constructor takes the number constant
# """
# self.number = number
#
# def subinterval_length(self):
# """
# Compute subinterval_length
# """
# sub_length = 2/float(self.number)
# return sub_length
#
# def subinterval_point(self):
# """
# Compute the value of each point
# """
#
# #attempt to yield all the Xk points values using the subinterval_point
# try:
# for item in range(1,self.number + 1):
# sub_point = -1 + ((item - 1/2.0)* Pi_Approximation.subinterval_length(self))
# yield sub_point
#
# #Raise TypeError if input is not numerical
# except TypeError:
# print("\n<The entered value is not a number")
#
# def Pi(self):
# """
# Computing Pi value.
# """
#
# #attempt to Approximate Pi for a given value
# try:
#
# my_sum = 0 #Set my_sum to 0
#
# # using subinterval_point function to compute Pi approximation.
# # the greater the value of the number the more accurate result
# for self.point in Pi_Approximation.subinterval_point(self):
#
# self.pi_X = pow((1-self.point**2),0.5)
# my_sum += self.pi_X
# pi = (my_sum * Pi_Approximation.subinterval_length(self))*2
# yield ascii(pi)
#
# #Raise TypeError if input is not numerical
# except TypeError:
# print("\n<The entered value is not a number")
#
#if __name__ == '__main__':
#
# for j in range(600000,2700000,300000):
# pi = Pi_Approximation(j)
#
# for i in pi.Pi():
# pass
Diff to Previous Revision
--- revision 1 2010-02-25 05:15:05
+++ revision 2 2011-01-27 12:44:46
@@ -84,3 +84,69 @@
# 3.1415926539930723
# 3.141592653909842
# 3.14159265385199
+##########################################################################################
+
+#Version : Python 3.2
+
+#class Pi_Approximation(object):
+# """
+# Class that represent Pi approximation
+# """
+# def __init__(self, number):
+# """
+# Pi_Approximation constructor takes the number constant
+# """
+# self.number = number
+#
+# def subinterval_length(self):
+# """
+# Compute subinterval_length
+# """
+# sub_length = 2/float(self.number)
+# return sub_length
+#
+# def subinterval_point(self):
+# """
+# Compute the value of each point
+# """
+#
+# #attempt to yield all the Xk points values using the subinterval_point
+# try:
+# for item in range(1,self.number + 1):
+# sub_point = -1 + ((item - 1/2.0)* Pi_Approximation.subinterval_length(self))
+# yield sub_point
+#
+# #Raise TypeError if input is not numerical
+# except TypeError:
+# print("\n<The entered value is not a number")
+#
+# def Pi(self):
+# """
+# Computing Pi value.
+# """
+#
+# #attempt to Approximate Pi for a given value
+# try:
+#
+# my_sum = 0 #Set my_sum to 0
+#
+# # using subinterval_point function to compute Pi approximation.
+# # the greater the value of the number the more accurate result
+# for self.point in Pi_Approximation.subinterval_point(self):
+#
+# self.pi_X = pow((1-self.point**2),0.5)
+# my_sum += self.pi_X
+# pi = (my_sum * Pi_Approximation.subinterval_length(self))*2
+# yield ascii(pi)
+#
+# #Raise TypeError if input is not numerical
+# except TypeError:
+# print("\n<The entered value is not a number")
+#
+#if __name__ == '__main__':
+#
+# for j in range(600000,2700000,300000):
+# pi = Pi_Approximation(j)
+#
+# for i in pi.Pi():
+# pass