You can describe polynomial without classes. Any polynomial is defined by its coefficients, so standard data types such as tuple or list can describe a polynomial.
my_polynomial = (1, 2, 3) # we assume that we have a polynomial: 1*x^0 + 2*x + 3*x^2
Further, we need some helper functions that will allow to perform basic operations over such polynomials.
We wish to print the polynomial in human readable form:
def print_polynomial(p, default_argument_name='x'):
"""Print polynomial
p: a list or a tuple, polynomial coefficients
"""
result = ''
for power, coefficient in enumerate(p):
result += '{}*{}^{} +'.format(coefficient, default_argument_name, power)
# This is dirty implementation, it doesn't handle +/- signs properly
print(result[:-1]) # drop `+`
Also, we would like to calculate value of the polynomial at specified point. So, we need to define
a function, e.g.
get_polynomial_value
,
def get_polynomial_value(p, x):
"""Evaluates polynomial at specified point
"""
result = 0.0
for power, coefficient in enumerate(p):
result += coefficient * x ** power
return result
You can also wish to be able to export polynomial to Tex/LaTex-format. Thats easy, just write a helper function for this.
def export_to_latex(p):
"""Returns latex-formatted representation of a polynomial"""
result = r""
for power, coefficient in enumerate(p):
result += r'{coefficient}\cdot x^{}'.format(coefficient, power) + '+' if (power != len(coefficient)) else '' # drop `+` for the last polynomial term
return result
I didn't test these function. You can definitely improve them (e.g. an issue with +/- handling when printing a polynomial), define you own help functions, e.g. define
add_polynomials(p1, p2)
,
multiply_polynomials(p1,p1)
etc.