Advertisement
Guest User

Untitled

a guest
Apr 19th, 2018
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.29 KB | None | 0 0
  1. class Fraction:
  2. #Constructor. Puts fraction in simplest form
  3. def __init__(self,a,b):
  4. self.num = a
  5. self.den = b
  6. self.simplify()
  7. #Print Fraction as a String
  8. def __str__(self):
  9. if self.den==1:
  10. return str(self.num)
  11. else:
  12. return str(self.num)+"/"+str(self.den)
  13. #Get the Numerator
  14. def getNum(self):
  15. return self.num
  16. #Get the Denominator
  17. def getDen(self):
  18. return self.den
  19. #Give Numerical Approximation of Fraction
  20. def approximate(self):
  21. return self.num/self.den
  22. #Simplify fraction
  23. def simplify(self):
  24. x = self.gcd(self.num,self.den)
  25. self.num = self.num // x
  26. self.den = self.den // x
  27. #Find the GCD of a and b
  28. def gcd(self,a,b):
  29. if b==0:
  30. return a
  31. else:
  32. return self.gcd(b,a % b)
  33. #Complete these methods in lab
  34. def __add__(self,other):
  35. newnum = self.num*other.den + self.den*other.num
  36. newden = self.den*other.den
  37. common = self.gcd(newnum, newden)
  38. return Fraction(newnum//common, newden//common)
  39. def __sub__(self,other):
  40. newnum = self.num*other.den - self.den*other.num
  41. newden = self.den*other.den
  42. common = self.gcd(newnum, newden)
  43. return Fraction(newnum//common, newden//common)
  44. def __mul__(self,other):
  45. newnum = self.num*other.num
  46. newden = self.den*other.den
  47. return Fraction(newnum, newden)
  48. def __truediv__(self,other):
  49. newnum = self.num * other.den
  50. newden = self.den * other.num
  51. return Fraction(newnum, newden)
  52. def __pow__(self,exp):
  53. if exp == 0:
  54. return 1
  55. elif exp > 0:
  56. return Fraction(self.num**exp, self.den**exp)
  57. else:
  58. return Fraction(self.den**abs(exp), self.num**abs(exp))
  59.  
  60. # '''x = Fraction(1,2)
  61. # y = Fraction(2,3)
  62. # print(x+y)
  63. # print(x-y)
  64. # print(x*y)
  65. # print(x/y)
  66. # print(x**2)
  67. # print(y**2)'''
  68.  
  69. print('Welcome to Fun with Fractions!')
  70. number = input('Enter Number of iterations (integer>0):\n')
  71. while True:
  72. number = int(number)
  73. if number >= 0:
  74. break
  75. else:
  76. number = input('Enter Number of iterations (integer>0):\n')
  77. harmony = Fraction(0,1)
  78. for k in range(1, (number+1)):
  79. harmony += Fraction(1, k)
  80. print('H' + '(' + str(number) + ')=' + str(harmony))
  81. print('H' + '(' + str(number) + ')~=' + str(harmony.approximate()))
  82.  
  83. two = Fraction(0,1)
  84. for k in range(0, (number+1)):
  85. two += Fraction(1,2**k)
  86. print('T' + '(' + str(number) + ')=' + str(two))
  87. print('T' + '(' + str(number) + ')~=' + str(two.approximate()))
  88.  
  89. zero = Fraction(0,1)
  90. for k in range(0, (number+1)):
  91. two += Fraction(1,2**k)
  92. zero_result = Fraction(2,1) - two
  93. print('Z' + '(' + str(number) + ')=' + str(zero_result))
  94. print('Z' + '(' + str(number) + ')~=' + str(zero_result.approximate()))
  95.  
  96. def Rieman(number, b):
  97. riemann = Fraction(0,1)
  98. for k in range(1, (number+1)):
  99. riemann += (Fraction(1, k)**b)
  100. return riemann
  101. for k in range(2,9):
  102. print('R' + '(' + str(number) + ',' + str(k) + ')=' + str(Rieman(number, k)))
  103. print('R' + '(' + str(number) + ',' + str(k) + ')~=' + str(Rieman(number, k).approximate()))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement