def expI(): t = Sum([Monomial(('+', 4, 1)), Expandable((Monomial(('+', 1, 0)), Polynomial([Monomial(('-', 15, 1)), Monomial(('+', 8, 0)), Monomial(('-', 5, 1))])))]) return Expression("I", t)
def __init__(self, numbers_to_use, **options): super().setup("minimal", **options) super().setup("numbers", nb=numbers_to_use, **options) super().setup("nb_variants", nb=numbers_to_use, **options) degrees1 = [0, 1] degrees2 = [0, 1] random.shuffle(degrees1) random.shuffle(degrees2) weighted_signs = [('+', 19), ('-', 1)] weighted_signs = [ val for val, cnt in weighted_signs for i in range(cnt) ] signs = ['+', '-'] self.expandable = Expandable( (Polynomial([ Monomial( (random.choice(weighted_signs), self.nb1, degrees1.pop())), Monomial((random.choice(signs), self.nb3, degrees1.pop())) ]), Polynomial([ Monomial((random.choice(weighted_signs), self.nb2, degrees2.pop())), Monomial((random.choice(signs), self.nb4, degrees2.pop())) ]))) self.expression = Expression(shared.number_of_the_question, self.expandable) self.expression_str = self.expression.printed shared.number_of_the_question += 1
def test_product_sum_2_3x_times_sum_minus4_6x_is_not_reducible(): """Is this Product not reducible?""" p = Product([ Sum([Item(2), Monomial(('+', 3, 1))]), Sum([Item(-4), Monomial(('+', 6, 1))]) ]) assert not p.is_reducible()
def rubbish_polynomial(): return Polynomial([ Monomial(('+', 1, 2)), Monomial(('+', 7, 1)), Monomial(('-', 10, 2)), Monomial(('-', 9, 1)), Monomial(('+', 9, 2)) ])
def expP(): t = Sum([Expandable((Monomial(('+', 7, 0)), Sum([Monomial(('-', 6, 1)), Monomial((6, 0))]))), BinomialIdentity((Monomial(('-', 10, 1)), Monomial(('-', 3, 0))), difference_square='OK')]) return Expression("P", t)
def test_eq0_autoresolution(): """Is this Equation correctly auto-resolved?""" eq = Equation((Polynomial([Monomial( ('+', 1, 1)), Monomial(('+', 7, 0))]), Item(3)), number=1) assert eq.auto_resolution() == wrap_nb('$(\\text{E}_{1}): $' '\[x+7=3\]' '\[x=3-7\]' '\[x=-4\]')
def test_complicated_sum_02(): """Is this Sum correctly printed as (6+x)^{2}+12(2+11x)?""" assert Sum([ BinomialIdentity((Monomial(('+', 6, 0)), Monomial(('+', 1, 1)))), Expandable( (Monomial(('+', 12, 0)), Sum([Polynomial([Monomial(('+', 2, 0)), Monomial(('+', 11, 1))])]))) ]).printed == wrap_nb('(6+x)^{2}+12(2+11x)')
def test_eq1_autoresolution(): """Is this Equation correctly auto-resolved?""" eq = Equation((Polynomial([Monomial( ('-', 8, 0)), Monomial(('+', 1, 1))]), Item(-2)), number=1) assert eq.auto_resolution() == wrap_nb('$(\\text{E}_{1}): $' '\[-8+x=-2\]' '\[x=-2+8\]' '\[x=6\]')
def test_eq12_autoresolution(): """Is this Equation correctly auto-resolved?""" eq = Equation((Polynomial([Monomial( ('+', 2, 1)), Monomial(('+', 1, 0))]), Item(1)), number=1) assert eq.auto_resolution() == wrap_nb('$(\\text{E}_{1}): $' '\[2x+1=1\]' '\[2x=1-1\]' '\[2x=0\]' '\[x=0\]')
def test_eq7_autoresolution(): """Is this Equation correctly auto-resolved?""" eq = Equation((Polynomial([Monomial( ('+', 19, 0)), Monomial(('+', 3, 1))]), Monomial(('+', 2, 1))), number=1) assert eq.auto_resolution() == wrap_nb('$(\\text{E}_{1}): $' '\[19+3x=2x\]' '\[3x-2x=-19\]' '\[(3-2)x=-19\]' '\[x=-19\]')
def test_eq6_autoresolution(): """Is this Equation correctly auto-resolved?""" eq = Equation((Polynomial([Monomial( ('+', 2, 1)), Monomial(('+', 3, 0))]), Item(8)), number=1) assert eq.auto_resolution() == wrap_nb('$(\\text{E}_{1}): $' '\[2x+3=8\]' '\[2x=8-3\]' '\[2x=5\]' '\[x=\\frac{5}{2}\]')
def test_eq2_autoresolution(): """Is this Equation correctly auto-resolved?""" eq = Equation( (Item(-5), Polynomial([Monomial( ('+', 1, 1)), Monomial(('+', 3, 0))])), number=1) assert eq.auto_resolution() == wrap_nb('$(\\text{E}_{1}): $' '\[-5=x+3\]' '\[x=-5-3\]' '\[x=-8\]')
def test_eq14_autoresolution(): """Is this Equation correctly auto-resolved?""" eq = Equation((Sum([Monomial(('+', 3, 0)), Monomial(('+', 10, 1))]), Monomial(('+', 10, 1)))) assert eq.auto_resolution() == wrap_nb('$(\\text{E}): $' '\[3+10x=10x\]' '\[10x-10x=-3\]' '\[(10-10)x=-3\]' '\[0x=-3\]' '\[0=-3\]' 'This equation has no solution.' '\\newline ')
def test_eq21_autoresolution(): """Is this Equation correctly auto-resolved?""" eq = Equation((Sum([Monomial(('-', 1, 0)), Monomial(('-', 4, 1))]), Monomial(('-', 9, 0)))) assert eq.auto_resolution() == wrap_nb('$(\\text{E}): $' '\[-1-4x=-9\]' '\[-4x=-9+1\]' '\[-4x=-8\]' '\[x=\\frac{-8}{-4}\]' '\[x=\\frac{+\\bcancel{4}\\times 2}' '{+\\bcancel{4}}\]' '\[x=2\]')
def test_eq11_autoresolution(): """Is this Equation correctly auto-resolved?""" eq = Equation((Polynomial([Monomial( ('+', 5, 0)), Monomial( ('-', 1, 1))]), Polynomial([Monomial(('+', 5, 1))])), number=1) assert eq.auto_resolution() == wrap_nb('$(\\text{E}_{1}): $' '\[5-x=5x\]' '\[-x-5x=-5\]' '\[(-1-5)x=-5\]' '\[-6x=-5\]' '\[x=\\frac{-5}{-6}\]' '\[x=\\frac{5}{6}\]')
def big_product(): s = Sum(['x', 3]) s.set_exponent(3) p = Product(Monomial((1, 2))) p.set_exponent(3) p1 = Product([2, 3]) p1.set_exponent(3) return Product([ Monomial((2, 1)), Monomial((-4, 2)), s, Item(5), p, Item(('+', -1, 2)), p1 ])
def test_eq8_autoresolution(): """Is this Equation correctly auto-resolved?""" eq = Equation( (Polynomial([Monomial( ('+', 4, 1)), Monomial(('+', 2, 0))]), Polynomial([Monomial( ('-', 3, 0)), Monomial(('+', 2, 1))])), number=1) assert eq.auto_resolution() == wrap_nb('$(\\text{E}_{1}): $' '\[4x+2=-3+2x\]' '\[4x-2x=-3-2\]' '\[(4-2)x=-5\]' '\[2x=-5\]' '\[x=-\\frac{5}{2}\]')
def expN(): t = Sum([Expandable((Monomial(('-', 1, 0)), Expandable((Sum([Monomial((2, 1)), Monomial((9, 0))]), Sum([Monomial((-3, 1)), Monomial((-7, 0))]))))), Expandable((Monomial((4, 0)), Sum([Monomial((-3, 1)), Monomial((9, 0))]))), Monomial((13, 0))]) return Expression("N", t)
def complicated_sum_to_reduce(): return Sum([ Monomial(('+', 3, 1)), Item(4), Sum([ Monomial(('+', 3, 1)), Monomial(('+', 5, 2)), Product([Item(-7), Item('a'), Item('b')]) ]), Product([Item('-a'), Item('b')]), Monomial(('+', 5, 2)), Item(2), Monomial(('-', 2, 1)), Product([Item(2), Item('a'), Item('b')]) ])
def test_eq9_autoresolution(): """Is this Equation correctly auto-resolved?""" eq = Equation( (Polynomial([Monomial( ('-', 2, 1)), Monomial(('+', 5, 0))]), Polynomial([Monomial( ('+', 3, 1)), Monomial(('-', 4, 0))])), number=1) assert eq.auto_resolution() == wrap_nb('$(\\text{E}_{1}): $' '\[-2x+5=3x-4\]' '\[-2x-3x=-4-5\]' '\[(-2-3)x=-9\]' '\[-5x=-9\]' '\[x=\\frac{-9}{-5}\]' '\[x=\\frac{9}{5}\]')
def test_eq32_autoresolution(): """Is this Equation correctly auto-resolved?""" eq = Equation((Monomial(('+', 1, 1)), SquareRoot(Item(16)))) assert eq.auto_resolution(dont_display_equations_name=True, decimal_result=2) == \ wrap_nb('\[x=\\sqrt{\mathstrut 16}\]' '\[x=4\]')
def test_eq13_autoresolution(): """Is this Equation correctly auto-resolved?""" eq = Equation( (Polynomial([Monomial( ('+', 1, 1)), Monomial(('+', 5, 0))]), Polynomial([Monomial( ('+', 1, 1)), Monomial(('+', 2, 0))])), number=1) assert eq.auto_resolution() == wrap_nb('$(\\text{E}_{1}): $' '\[x+5=x+2\]' '\[x-x=2-5\]' '\[(1-1)x=-3\]' '\[0x=-3\]' '\[0=-3\]' 'This equation has no solution.' '\\newline ')
def test_eq28_autoresolution(): """Is this Equation correctly auto-resolved?""" eq = Equation((Monomial(('+', 8, 1)), Item(6)), number=1) assert eq.auto_resolution(decimal_result=2) == \ wrap_nb('$(\\text{E}_{1}): $' '\[8x=6\]' '\[x=\\frac{6}{8}\]' '\[x=0.75\]')
def test_eq27_autoresolution(): """Is this Equation correctly auto-resolved?""" eq = Equation((Monomial(('+', 3, 1)), Item(1)), number=1) assert eq.auto_resolution(decimal_result=2) == \ wrap_nb('$(\\text{E}_{1}): $' '\[3x=1\]' '\[x=\\frac{1}{3}\]' '\[x\\simeq0.33\]')
def test_eq23_autoresolution(): """Is this Equation correctly auto-resolved?""" eq = Equation( (Item(5), Sum([ Expandable( (Item(1), Sum([Monomial(('+', 1, 1)), Monomial(('-', 2, 0))]))), Item(7) ])), number=1) assert eq.auto_resolution() == wrap_nb('$(\\text{E}_{1}): $' '\[5=(x-2)+7\]' '\[5=x-2+7\]' '\[5=x+5\]' '\[x=5-5\]' '\[x=0\]')
def test_eq10_autoresolution(): """Is this Equation correctly auto-resolved?""" eq = Equation( (Polynomial([Monomial( ('+', 5, 0)), Monomial(('+', 4, 1))]), Polynomial([Monomial( ('-', 20, 1)), Monomial(('+', 3, 0))])), number=1) assert eq.auto_resolution() == wrap_nb('$(\\text{E}_{1}): $' '\[5+4x=-20x+3\]' '\[4x+20x=3-5\]' '\[(4+20)x=-2\]' '\[24x=-2\]' '\[x=-\\frac{2}{24}\]' '\[x=-\\frac{\\bcancel{2}}' '{\\bcancel{2}\\times 12}\]' '\[x=-\\frac{1}{12}\]')
def test_eq5_autoresolution(): """Is this Equation correctly auto-resolved?""" eq = Equation((Monomial(('+', 12, 1)), Item(8)), number=1) assert eq.auto_resolution() == wrap_nb('$(\\text{E}_{1}): $' '\[12x=8\]' '\[x=\\frac{8}{12}\]' '\[x=\\frac{\\bcancel{4}\\times 2}' '{\\bcancel{4}\\times 3}\]' '\[x=\\frac{2}{3}\]')
def test_eq17_autoresolution(): """Is this Equation correctly auto-resolved?""" eq = Equation( (Expandable((Item(-1), Sum([Monomial( (-11, 1)), Item(-10)]))), Sum([ Expandable((Item(1), Sum([Item(-15), Monomial((12, 1))]))), Item(-1) ])), number=1) assert eq.auto_resolution() == wrap_nb('$(\\text{E}_{1}): $' '\[-(-11x-10)=(-15+12x)-1\]' '\[11x+10=-15+12x-1\]' '\[11x+10=-15-1+12x\]' '\[11x+10=-16+12x\]' '\[11x-12x=-16-10\]' '\[(11-12)x=-26\]' '\[-x=-26\]' '\[x=26\]')
def test_eq16_autoresolution(): """Is this Equation correctly auto-resolved?""" eq = Equation((Sum([ Monomial(('+', 9, 1)), Expandable((Monomial( ('+', 9, 0)), Sum([Monomial( ('-', 4, 0)), Monomial(('-', 1, 1))]))) ]), Item(8)), number=1) assert eq.auto_resolution() == wrap_nb('$(\\text{E}_{1}): $' '\[9x+9(-4-x)=8\]' '\[9x+9\\times (-4)+9\\times ' '(-x)=8\]' '\[9x-36-9x=8\]' '\[(9-9)x-36=8\]' '\[0x-36=8\]' '\[-36=8\]' 'This equation has no solution.' '\\newline ')
def test_eq25_autoresolution(): """Is this Equation correctly auto-resolved?""" eq = Equation((Item( ('+', 5, 2)), Sum([Item( ('+', 4, 2)), Monomial(('+', 1, 1))])), number=1) assert eq.auto_resolution(dont_display_equations_name=True) == \ wrap_nb('\[5^{2}=4^{2}+x\]' '\[25=16+x\]' '\[x=25-16\]' '\[x=9\]')