doctest and improve display for powers and mul in polynom
This commit is contained in:
parent
1f86b234ea
commit
e6170fab97
@ -269,6 +269,8 @@ class Polynom(object):
|
|||||||
coef_steps = list(coef_exp.simplify())
|
coef_steps = list(coef_exp.simplify())
|
||||||
Expression.set_render(old_render)
|
Expression.set_render(old_render)
|
||||||
|
|
||||||
|
#print('\t 1.coef_steps -> ', coef_steps)
|
||||||
|
|
||||||
elif type(coef) == Expression:
|
elif type(coef) == Expression:
|
||||||
|
|
||||||
old_render = Expression.get_render()
|
old_render = Expression.get_render()
|
||||||
@ -276,15 +278,20 @@ class Polynom(object):
|
|||||||
coef_steps = list(coef.simplify())
|
coef_steps = list(coef.simplify())
|
||||||
Expression.set_render(old_render)
|
Expression.set_render(old_render)
|
||||||
|
|
||||||
|
#print('\t 2.coef_steps -> ', coef_steps)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
coef_steps = [coef]
|
|
||||||
try:
|
try:
|
||||||
coef_steps += coef.simplify()
|
coef_steps += coef.simplify()
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
pass
|
coef_steps = [coef]
|
||||||
|
|
||||||
|
#print('\t 3.coef_steps -> ', coef_steps)
|
||||||
# On ajoute toutes ces étapes
|
# On ajoute toutes ces étapes
|
||||||
coefs_steps.append(coef_steps)
|
coefs_steps.append(coef_steps)
|
||||||
|
|
||||||
|
#print('\t coefs_steps -> ', coefs_steps)
|
||||||
|
|
||||||
# On retourne la matrice
|
# On retourne la matrice
|
||||||
ans = []
|
ans = []
|
||||||
for coefs in transpose_fill(coefs_steps):
|
for coefs in transpose_fill(coefs_steps):
|
||||||
@ -355,6 +362,23 @@ class Polynom(object):
|
|||||||
return o_poly.__sub__(-self)
|
return o_poly.__sub__(-self)
|
||||||
|
|
||||||
def __mul__(self, other):
|
def __mul__(self, other):
|
||||||
|
""" Overload *
|
||||||
|
|
||||||
|
>>> p = Polynom([1,2])
|
||||||
|
>>> p*3
|
||||||
|
[< Polynom [3, < Expression [2, 3, '*']>]>, < Polynom [3, < Expression [2, 3, '*']>]>, < Polynom [3, 6]>]
|
||||||
|
>>> q = Polynom([0,0,4])
|
||||||
|
>>> q*3
|
||||||
|
[< Polynom [0, 0, < Expression [4, 3, '*']>]>, < Polynom [0, 0, < Expression [4, 3, '*']>]>, < Polynom [0, 0, 12]>]
|
||||||
|
>>> r = Polynom([0,1])
|
||||||
|
>>> r*3
|
||||||
|
[< Polynom [0, 3]>, < Polynom [0, 3]>]
|
||||||
|
>>> p*q
|
||||||
|
[< Polynom [0, 0, 4, < Expression [2, 4, '*']>]>, < Polynom [0, 0, 4, < Expression [2, 4, '*']>]>, < Polynom [0, 0, 4, 8]>]
|
||||||
|
>>> p*r
|
||||||
|
[< Polynom [0, 1, 2]>, < Polynom [0, 1, 2]>]
|
||||||
|
|
||||||
|
"""
|
||||||
steps = []
|
steps = []
|
||||||
o_poly = self.conv2poly(other)
|
o_poly = self.conv2poly(other)
|
||||||
|
|
||||||
@ -363,6 +387,10 @@ class Polynom(object):
|
|||||||
for (j,b) in enumerate(o_poly._coef):
|
for (j,b) in enumerate(o_poly._coef):
|
||||||
if a == 0 or b == 0:
|
if a == 0 or b == 0:
|
||||||
elem = 0
|
elem = 0
|
||||||
|
elif a==1:
|
||||||
|
elem = b
|
||||||
|
elif b==1:
|
||||||
|
elem = a
|
||||||
else:
|
else:
|
||||||
elem = Expression([a, b, op.mul])
|
elem = Expression([a, b, op.mul])
|
||||||
try:
|
try:
|
||||||
@ -397,6 +425,9 @@ class Polynom(object):
|
|||||||
>>> p = Polynom([1,2])
|
>>> p = Polynom([1,2])
|
||||||
>>> p**2
|
>>> p**2
|
||||||
[[< Polynom [1, 2]>, < Polynom [1, 2]>, '*'], < Polynom [< Expression [1, 1, '*']>, [< Expression [1, 2, '*']>, < Expression [2, 1, '*']>], < Expression [2, 2, '*']>]>, < Polynom [< Expression [1, 1, '*']>, < Expression [1, 2, '*', 2, 1, '*', '+']>, < Expression [2, 2, '*']>]>, < Polynom [1, < Expression [2, 2, '+']>, 4]>, < Polynom [1, 4, 4]>]
|
[[< Polynom [1, 2]>, < Polynom [1, 2]>, '*'], < Polynom [< Expression [1, 1, '*']>, [< Expression [1, 2, '*']>, < Expression [2, 1, '*']>], < Expression [2, 2, '*']>]>, < Polynom [< Expression [1, 1, '*']>, < Expression [1, 2, '*', 2, 1, '*', '+']>, < Expression [2, 2, '*']>]>, < Polynom [1, < Expression [2, 2, '+']>, 4]>, < Polynom [1, 4, 4]>]
|
||||||
|
>>> p = Polynom([0,0,1])
|
||||||
|
>>> p**3
|
||||||
|
[< Polynom [0, 0, 0, 0, 0, 0, 1]>]
|
||||||
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
@ -406,11 +437,16 @@ class Polynom(object):
|
|||||||
steps = []
|
steps = []
|
||||||
|
|
||||||
if self.is_monom():
|
if self.is_monom():
|
||||||
coefs = [0]*self.degree*power + [Expression([self._coef[self.degree] , power, op.pw])]
|
if self._coef[self.degree] == 1:
|
||||||
p = Polynom(coefs, letter = self._letter)
|
coefs = [0]*self.degree*power + [1]
|
||||||
steps.append(p)
|
p = Polynom(coefs, letter = self._letter)
|
||||||
|
steps.append(p)
|
||||||
|
else:
|
||||||
|
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()
|
steps += p.simplify()
|
||||||
|
|
||||||
else:
|
else:
|
||||||
if power == 2:
|
if power == 2:
|
||||||
@ -463,51 +499,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, 0, 3 ])
|
p = Polynom([1, 2])
|
||||||
#q = Polynom([4, 0, 4])
|
print(p*3)
|
||||||
r = (p**3)
|
q = Polynom([0, 0, 1])
|
||||||
for i in r:
|
print(q**3)
|
||||||
print(i)
|
|
||||||
z = (p**3)
|
|
||||||
|
|
||||||
#test(p,q)
|
|
||||||
|
|
||||||
#print("\n")
|
|
||||||
#p = Polynom([[1,0], [2,3,0]])
|
|
||||||
#for i in p.simplify():
|
|
||||||
# print(i)
|
|
||||||
|
|
||||||
#q = Polynom([0, Fraction(1,2), 0, Fraction(-4,3)])
|
|
||||||
#test(p,q)
|
|
||||||
|
|
||||||
#print("\n")
|
|
||||||
#p = Polynom([-1,-2,-3])
|
|
||||||
#print(p)
|
|
||||||
|
|
||||||
#p = Polynom([-2])
|
|
||||||
#q = Polynom([0,0,Fraction(1,2)])
|
|
||||||
#test(p,q)
|
|
||||||
|
|
||||||
#p = Polynom([1, 1, 1 ])
|
|
||||||
#print(p)
|
|
||||||
|
|
||||||
|
|
||||||
#print("-- Poly étrange --")
|
|
||||||
#p = Polynom([1, [2, 3], 4], "x")
|
|
||||||
#print(repr(p))
|
|
||||||
#for i in p.simplify():
|
|
||||||
# print(i)
|
|
||||||
#print("-- Poly étrange --")
|
|
||||||
#p = Polynom([1, [[2, 3, "*"], [4,5,"*"]], 4], "x")
|
|
||||||
#print(repr(p))
|
|
||||||
#print(p)
|
|
||||||
#for i in p.simplify():
|
|
||||||
# print(repr(i))
|
|
||||||
|
|
||||||
#print("\n")
|
|
||||||
#poly = Polynom.random(["[{a**2}, {a}]", "{2*a*b}", "{b**2}"])
|
|
||||||
#for i in poly.simplify():
|
|
||||||
# print(i)
|
|
||||||
|
|
||||||
import doctest
|
import doctest
|
||||||
doctest.testmod()
|
doctest.testmod()
|
||||||
|
Loading…
Reference in New Issue
Block a user