Random classmethod for polynom
This commit is contained in:
parent
d817002430
commit
adce8e1348
@ -7,6 +7,7 @@ from .operator import op
|
|||||||
from .generic import spe_zip, expand_list, isNumber, transpose_fill, flatten_list
|
from .generic import spe_zip, expand_list, isNumber, transpose_fill, flatten_list
|
||||||
#from .generic import spe_zip, sum_postfix, expand_list, isNumber
|
#from .generic import spe_zip, sum_postfix, expand_list, isNumber
|
||||||
from .render import txt
|
from .render import txt
|
||||||
|
from .random_expression import RdExpression
|
||||||
from itertools import chain
|
from itertools import chain
|
||||||
|
|
||||||
__all__ = ["Polynom"]
|
__all__ = ["Polynom"]
|
||||||
@ -16,6 +17,20 @@ class Polynom(object):
|
|||||||
|
|
||||||
"""Docstring for Polynom. """
|
"""Docstring for Polynom. """
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def random(self, coefs_form=[], conditions=[], letter = "x"):
|
||||||
|
""" Create a random polynom from coefs_form and conditions
|
||||||
|
|
||||||
|
:param coefs_form: list of forms (one by coef) (ascending degree sorted)
|
||||||
|
:param conditions: condition on variables
|
||||||
|
|
||||||
|
/!\ variables need to be in brackets {}
|
||||||
|
|
||||||
|
"""
|
||||||
|
form = str(coefs_form)
|
||||||
|
coefs = RdExpression(form, conditions)()
|
||||||
|
return Polynom(coef = eval(coefs), letter = letter)
|
||||||
|
|
||||||
def __init__(self, coef = [1], letter = "x" ):
|
def __init__(self, coef = [1], letter = "x" ):
|
||||||
"""Initiate the polynom
|
"""Initiate the polynom
|
||||||
|
|
||||||
@ -331,6 +346,10 @@ if __name__ == '__main__':
|
|||||||
#for i in p.simplify():
|
#for i in p.simplify():
|
||||||
# print(repr(i))
|
# print(repr(i))
|
||||||
|
|
||||||
|
print("\n")
|
||||||
|
poly = Polynom.random(["{a**2}", "{2*a*b}", "{b**2}"])
|
||||||
|
print(poly)
|
||||||
|
|
||||||
import doctest
|
import doctest
|
||||||
doctest.testmod()
|
doctest.testmod()
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@ class RdExpression(object):
|
|||||||
|
|
||||||
self._letters = self.get_letters()
|
self._letters = self.get_letters()
|
||||||
self._gene_varia = {}
|
self._gene_varia = {}
|
||||||
self._gene_2replaced= {}
|
self._gene_2replaced = {}
|
||||||
|
|
||||||
def get_2replaced(self):
|
def get_2replaced(self):
|
||||||
"""Get elements of self._form which will have to be replaced
|
"""Get elements of self._form which will have to be replaced
|
||||||
@ -74,12 +74,6 @@ class RdExpression(object):
|
|||||||
:returns: an formated random expression
|
:returns: an formated random expression
|
||||||
|
|
||||||
"""
|
"""
|
||||||
#if self.FORM == "exp":
|
|
||||||
# return self.raw_exp(val_min, val_max)
|
|
||||||
#elif self.FORM == "raw":
|
|
||||||
# return self.raw_str(val_min, val_max)
|
|
||||||
#else:
|
|
||||||
# raise ValueError(self.FORM , " is an undefined form for self.FORM")
|
|
||||||
return self.raw_str(val_min, val_max)
|
return self.raw_str(val_min, val_max)
|
||||||
|
|
||||||
def raw_str(self, val_min = -10, val_max = 10):
|
def raw_str(self, val_min = -10, val_max = 10):
|
||||||
|
Loading…
Reference in New Issue
Block a user