0
이 다항식 클래스를 작성했지만 올바른 결과를 반환하기 위해 mul 이상의 mul을 얻는 데 문제가 있습니다. 그것은 다항식의 최고 및 최저 각도에서 작동하지만 내부 각도에 대한 잘못된 계수를 반환합니다. 나는 이것이 계수의 값을 업데이트하는 방식과 관련이 있다고 생각합니다. 도와주세요. 예 $ X^2 * X $ 및 $ X * X^2 $을 모두 $ X^3 $ 줄 -두 다항식의 제품 파이썬
class Polynomial:
def __init__(self, *termpairs):
termdict1={}
for i in termpairs:
termdict1[i[1]]=i[0]
self.termdict = termdict1
def __str__(self):
k = sorted(self.termdict, reverse = True)
v = 0
x = ''
for i in k:
if i == 0:
x += str(self.termdict.get(i))
elif i == 1:
if self.termdict.get(i) > 0:
x+=' + '
x+=str(self.termdict.get(i))
x+='x'
else:
x+= ' - '
x+=str(abs(self.termdict.get(i)))
x+='x'
elif i > 1:
if self.termdict.get(i) > 0:
x+=' + '
x+=str(self.termdict.get(i))
x+='x^'
x+=str(i)
else:
x+=' - '
x+=str(abs(self.termdict.get(i)))
x+='x^'
x+=str(i)
elif i < 0:
x+=' - '
x+=str(abs(self.termdict.get(i)))
x+='x^'
x+=str(i)
if x[1] == '+':
return(x[3:])
else:
return(x)
def degree(self):
k = sorted(self.termdict, reverse = True)
return(k[0])
def evaluate(self,x):
final = 0
for k,v in self.termdict.items():
print(k,v)
final += v*(x**k)
return(final)
def addterm(self,x,y):
if y in self.termdict.keys():
self.termdict[y] = (self.termdict.get(y) + x)
else:
self.termdict[y] = x
return(self.termdict)
def removeterm(self,x):
if x in self.termdict.keys():
del self.termdict[x]
return(self.termdict)
def scale(self,x):
for k in self.termdict.keys():
self.termdict[k] = (self.termdict.get(k) * x)
return(self.termdict)
def __add__(self,other):
New = Polynomial()
for k,v in self.termdict.items():
New.addterm(v,k)
for k,v in other.termdict.items():
New.addterm(v,k)
def __sub__(self,other):
s = Polynomial()
x = Polynomial()
for k,v in self.termdict.items():
s.addterm(v,k)
print(s.termdict)
for key in other.termdict.keys():
s.removeterm(key)
for k,v in other.termdict.items():
x.addterm(v,k)
print(x.termdict)
for key in self.termdict.keys():
x.removeterm(key)
for k,v in x.termdict.items():
s.addterm(-1*v,k)
print(s.termdict)
return(s.termdict)
def __mul__(self,other):
S = Polynomial()
for k,v in other.termdict.items():
for key, value in self.termdict.items():
S.termdict[key+k]=(value*v)
print(S)