Computer Science

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)+"/"+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.

  • Add:
    a over b plus x over y equals fraction numerator a y plus x b over denominator b y end fraction
  • Subtract:
    a over b minus x over y equals a over b plus fraction numerator negative x over denominator y end fraction
  • Multiply:
    a over b asterisk times x over y equals fraction numerator a x over denominator b y end fraction
  • Divide:
    a over b divided by x over y equals fraction numerator a y over denominator b x end fraction
  • Power (when k>0 and k is an integer):
    open parentheses a over b close parentheses to the power of negative k end exponent equals open parentheses b over a close parentheses to the power of k
    open parentheses a over b close parentheses to the power of 0 equals 1
    open parentheses a over b close parentheses to the power of k equals a over b asterisk times open parentheses a over b close parentheses to the power of k minus 1 end exponent

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.

sum from k equals 1 to 5 of k equals 1 plus 2 plus 3 plus 4 plus 5 equals 15

Write functions for each of the below expressions.

  1. Harmonic Series:
    H left parenthesis n right parenthesis equals sum from k equals 1 to n of 1 over k
  2. Two:
    T left parenthesis n right parenthesis equals sum from k equals 0 to n of open parentheses 1 half close parentheses to the power of k
  3. Zero:
    Z left parenthesis n right parenthesis equals 2 minus sum from k equals 0 to n of open parentheses 1 half close parentheses to the power of k
  4. Partial Riemann Zeta:
    R left parenthesis n comma b right parenthesis equals sum from k equals 1 to n of open parentheses 1 over k close parentheses to the power of b

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

Order now and get 10% discount on all orders above $50 now!!The professional are ready and willing handle your assignment.

ORDER NOW »»