多項式を辞書で表現して、べき乗をキーとして、要素を係数として含めようとしました。関数をオーバーロードしようとしましたが、苦労していたので、関数をオーバーロードして後で適用する__sub __
必要があると思います。Python でリストを使ったときは簡単にできましたが、辞書でそれを行う方法がわかりません。したがって、キー(指数)ではなく、すべての要素(係数に-1)を掛けるだけです。その後、関数内で関数を呼び出すにはどうすればよいですか?__neg __
__sub __
__neg __
__sub __
class Polynomial(object):
def __init__(self, coefficients):
self.coefficients = coefficients
def __str__(self):
polytostring = ' '
for exponent, coefficient in self.coefficients.iteritems():
if exponent == 0:
polytostring += '%s + ' % coefficient
else:
polytostring += '%sx^%s + ' % (coefficient, exponent)
polytostring = polytostring.strip(" + ")
return polytostring
def __add__(self, other):
if isinstance(other, Polynomial):
if max(other.coefficients) > max(self.coefficients):
coefficients = other.coefficients
add_poly = self
else:
coefficients = self.coefficients
add_poly = other
for exponent, coefficient in add_poly.coefficients.iteritems():
if exponent in coefficients:
coefficients[exponent] += add_poly.coefficients[exponent]
else:
coefficients[exponent] = coefficient
else:
coefficients = self.coefficients
sum = Polynomial(coefficients)
return sum
def __neg__(self):
pass
def __sub__(self,other):
pass
dict1 = {0:1, 1:-1}
p1 = Polynomial(dict1)
dict2 = {1:1, 4:-6, 5:-1, 3:2}
p2 = Polynomial(dict2)
print p1
print p2
p3 = p1+p2
print "The sum is:", p3.coefficients
print "The sum in string rep is:", p3
print p1-p2