overload ^ and ** for monoms
This commit is contained in:
parent
d5c0a86109
commit
5cba9763e4
@ -86,14 +86,15 @@ class Polynom(object):
|
|||||||
else:
|
else:
|
||||||
self._coef.append(coef)
|
self._coef.append(coef)
|
||||||
|
|
||||||
def get_degree(self):
|
@property
|
||||||
|
def degree(self):
|
||||||
"""Getting the degree fo the polynom
|
"""Getting the degree fo the polynom
|
||||||
|
|
||||||
:returns: the degree of the polynom
|
:returns: the degree of the polynom
|
||||||
|
|
||||||
>>> Polynom([1, 2, 3]).get_degree()
|
>>> Polynom([1, 2, 3]).degree
|
||||||
2
|
2
|
||||||
>>> Polynom([1]).get_degree()
|
>>> Polynom([1]).degree
|
||||||
0
|
0
|
||||||
"""
|
"""
|
||||||
return len(self._coef) - 1
|
return len(self._coef) - 1
|
||||||
@ -373,6 +374,29 @@ class Polynom(object):
|
|||||||
|
|
||||||
return o_poly.__mul__(self)
|
return o_poly.__mul__(self)
|
||||||
|
|
||||||
|
def __pow__(self, power):
|
||||||
|
if not type(power):
|
||||||
|
raise ValueError("Can't raise Polynom to {} power".format(str(power)))
|
||||||
|
|
||||||
|
steps = []
|
||||||
|
|
||||||
|
if self.is_monom():
|
||||||
|
coefs = [0]*self.degree*power + [Expression([self._coef[self.degree] , power, op.pw])]
|
||||||
|
p = Polynom(coefs, letter = self._letter)
|
||||||
|
steps.append(p)
|
||||||
|
|
||||||
|
steps += p.simplify()
|
||||||
|
|
||||||
|
else:
|
||||||
|
raise AttributeError("__pw__ not implemented yet")
|
||||||
|
|
||||||
|
return steps
|
||||||
|
|
||||||
|
def __xor__(self, power):
|
||||||
|
return self.__pow__(power)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def test(p,q):
|
def test(p,q):
|
||||||
print("---------------------")
|
print("---------------------")
|
||||||
@ -411,10 +435,11 @@ def test(p,q):
|
|||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
#from .fraction import Fraction
|
#from .fraction import Fraction
|
||||||
Expression.set_render(txt)
|
Expression.set_render(txt)
|
||||||
p = Polynom([0, -2 ])
|
p = Polynom([0, 0, 3 ])
|
||||||
q = Polynom([4, 0, 4])
|
#q = Polynom([4, 0, 4])
|
||||||
r = (p-q)[-1]
|
r = (p**3)
|
||||||
print(r)
|
for i in r:
|
||||||
|
print(i)
|
||||||
|
|
||||||
#test(p,q)
|
#test(p,q)
|
||||||
|
|
||||||
|
@ -153,33 +153,16 @@ class TestPolynom(unittest.TestCase):
|
|||||||
r = (p - q)[-1]
|
r = (p - q)[-1]
|
||||||
self.assertEqual(str(r), '- x ^ 2 - 2 x + 1')
|
self.assertEqual(str(r), '- x ^ 2 - 2 x + 1')
|
||||||
|
|
||||||
|
def test_pow_monome(self):
|
||||||
|
p = Polynom([0,-2])
|
||||||
|
r = (p**3)[-1]
|
||||||
|
self.assertEqual(str(r), '- 8 x ^ 3')
|
||||||
|
|
||||||
def test_radd_int(self):
|
def test_pow2_monome(self):
|
||||||
pass
|
p = Polynom([0,-2])
|
||||||
|
r = (p^3)[-1]
|
||||||
|
self.assertEqual(str(r), '- 8 x ^ 3')
|
||||||
|
|
||||||
def test_radd_frac(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def test_radd_poly(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def test_mul_int(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def test_mul_frac(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def test_mul_poly(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def test_rmul_int(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def test_rmul_frac(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def test_rmul_poly(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
Loading…
Reference in New Issue
Block a user