*python creating objects with overloaded operators
Creating objects with overloaded operators allows you to use the object like a built in data type. In this lab, you will create a fraction class. By overloading its operators, you can easily use your class to solve mathematical problems related to fractions.
Part 1: Complete Fraction Class
Complete the implementation of the Fraction class provided below.
class Fraction:
#Constructor. Puts fraction in simplest form
def __init__(self,a,b):
self.num = a
self.den = b
self.simplify()
#Print Fraction as a String
def __str__(self):
if self.den==1:
return str(self.num)
else:
return str(self.num)+"https://www.homeworkmarket.com/"+str(self.den)
#Get the Numerator
def getNum(self):
return self.num
#Get the Denominator
def getDen(self):
return self.den
#Give Numerical Approximation of Fraction
def approximate(self):
return self.num/self.den
#Simplify fraction
def simplify(self):
x = self.gcd(self.num,self.den)
self.num = self.num // x
self.den = self.den // x
#Find the GCD of a and b
def gcd(self,a,b):
if b==0:
return a
else:
return self.gcd(b,a % b)
#Complete these methods in lab
def __add__(self,other):
return 0
def __sub__(self,other):
return 0
def __mul__(self,other):
return 0
def __truediv__(self,other):
return 0
def __pow__(self,exp):
return 0
Complete Implementation of the following methods. All of these methods will return an instance of the Fraction class.
Part 2: Fraction Problems
Create a file lab3.py. In this file, use your fraction class to implement functions for each of the following formula. You program should ask the user for the value of n to use in the summations.
Remember that a summation symbol just tells you to add all the values in a range.
Write functions for each of the below expressions.
- Harmonic Series:
- Two:
- Zero:
- Partial Riemann Zeta:
Your program will ask for n as input. Compute each of the functions for the given input n. When computing the Riemann Zeta function, print values for b=2,3,4,5,6,7,8.
Verify that the input is a valid number. If it is not, ask repeatedly until a valid number is given.
Once you have been given a valid input, print out the values of each of the functions in the order H, T, Z, R. See below execution trace for exact layout.
Scoring
- Part 1
- 6pts – Add
- 6pts – Subtract
- 6pts – Multiply
- 6pts – True Divide
- 6pts – Power
- Part 2
- 10pts – H Function
- 10pts – T Function
- 10pts – Z Function
- 10pts – R Function
Example Execution Trace
Welcome to Fun with Fractions!
Enter Number of iterations (integer>0):
Bad Input
Enter Number of iterations (integer>0):
10
H(10)=7381/2520
H(10)~=2.92896825
T(10)=2047/1024
T(10)~=1.99902344
Z(10)=1/1024
Z(10)~=0.00097656
R(10,2)=1968329/1270080
R(10,2)~=1.54976773
R(10,3)=19164113947/16003008000
R(10,3)~=1.19753199
R(10,4)=43635917056897/40327580160000
R(10,4)~=1.08203658
R(10,5)=105376229094957931/101625502003200000
R(10,5)~=1.03690734
R(10,6)=52107472322919827957/51219253009612800000
R(10,6)~=1.01734151
R(10,7)=650750820166709327386387/645362587921121280000000
R(10,7)~=1.00834915
R(10,8)=1632944765723715465050248417/1626313721561225625600000000
R(10,8)~=1.00407735
Leave a Reply
Want to join the discussion?Feel free to contribute!