small stress testing
This commit is contained in:
@@ -278,12 +278,10 @@ def trinomial_by_grouping(equation, inner):
|
||||
terms = left_expr.as_ordered_terms()
|
||||
t1, t2, t3, t4 = terms[0], terms[1], terms[2], terms[3]
|
||||
factored_part1 = factor(t1 + t2)
|
||||
if t3 != -x:
|
||||
div = gcd(t3, t4)
|
||||
factored_part2 = factor(t3 + t4)
|
||||
else:
|
||||
div = -1
|
||||
factored_part2 = Mul(-1,(-t3 - t4), evaluate=False)
|
||||
base = gcd(sum(terms[2:]), factored_part1)
|
||||
div = simplify(sum(terms[2:]) / base)
|
||||
factored_part2 = simplify((t3 + t4) / div)
|
||||
factored_part2 = Mul(div,factored_part2, evaluate=False)
|
||||
rest = sum(terms[2:])
|
||||
new_left_expr = Add(factored_part1, rest, evaluate=False)
|
||||
if n != 1:
|
||||
@@ -313,10 +311,10 @@ def trinomial_by_grouping(equation, inner):
|
||||
terms = left_expr.as_ordered_terms()
|
||||
factors = [set(t.as_ordered_factors()) for t in terms]
|
||||
common = set.intersection(*factors)
|
||||
print(f"common:{common}, factors:{factors}, terms:{terms}, left_expr:{sstr(left_expr)}")
|
||||
base = list(common)[0]
|
||||
coeffs = [t.coeff(base) for t in terms]
|
||||
new_expr = sum(coeffs) * base
|
||||
#print(f"coeffs:{sstr(sum(coeffs))}, base:{sstr(base)}")
|
||||
new_expr = Mul(sum(coeffs), base, evaluate=False)
|
||||
new_left_expr = new_expr
|
||||
if n != 1:
|
||||
new_left_expr = flatten_mul(Mul(n, new_left_expr, evaluate=False))
|
||||
@@ -325,6 +323,25 @@ def trinomial_by_grouping(equation, inner):
|
||||
steps[-1]["step"] = f"Factor out the common factor ({sstr(base)})"
|
||||
steps[-1]["rule"] = "Reverse Distributive Property"
|
||||
|
||||
## Flatten out identical roots optionally
|
||||
if sum(coeffs) == base:
|
||||
steps.append({})
|
||||
steps[-1]["before"] = steps[-2]["after"]
|
||||
new_left_expr = flatten_mul(Mul(n, Mul(2, base, evaluate=False), evaluate=False))
|
||||
|
||||
steps[-1]["after"] = f"{sstr(new_left_expr)} = {sstr(right_expr)}"
|
||||
steps[-1]["step"] = f"Collect the factor ({sstr(base)})"
|
||||
steps[-1]["rule"] = "Collect Like Terms"
|
||||
|
||||
## multiply outer number
|
||||
steps.append({})
|
||||
steps[-1]["before"] = steps[-2]["after"]
|
||||
new_left_expr = flatten_mul(Mul(2*n, base, evaluate=False))
|
||||
|
||||
steps[-1]["after"] = f"{sstr(new_left_expr)} = {sstr(right_expr)}"
|
||||
steps[-1]["step"] = f"Multiply Outer Numbers"
|
||||
steps[-1]["rule"] = "Simplify"
|
||||
|
||||
return steps
|
||||
|
||||
def solve_roots(equation):
|
||||
@@ -375,7 +392,7 @@ def solve_roots(equation):
|
||||
current = steps[-1]["after"]
|
||||
a = clean_factor.coeff(x)
|
||||
b = clean_factor.subs(x, 0)
|
||||
if b.is_zero == False:
|
||||
if b.is_nonzero:
|
||||
if b.is_negative:
|
||||
steps.append(add_both_sides(current, -b))
|
||||
elif b.is_positive:
|
||||
|
||||
Reference in New Issue
Block a user