Example #1
0
def _get_coefs(eq, A1, A2, *xs):
    eqe = eq.expand()
    X = tools.get_max_coef(eqe, A1)
    eqe = eqe.xreplace({A1: tools.ZERO})
    Y = tools.get_max_coef(eqe, A2)
    Z = eqe.xreplace({A2: tools.ZERO})
    # is_ok = not X.has(A2) and not X.has(A1) and not Y.has(A2)
    is_ok = True
    is_ok &= _check_const((X, Y, Z), *xs)
    return X, Y, Z, is_ok
Example #2
0
 def test_get_max_coef(self):
     print("\n")
     expr1 = A*B*X + C**2 - X
     expr2 = Y*Z - B
     self.assertEqual(tools.get_max_coef(expr1*X + expr2, X), expr1)
     expr3 = -A**3*B**2*X**5*(X-Y)**7
     expr3x = -A**3*B**2*X**5*(-X-Y)**7
     expr3y = -A**3*B**2*X**5*(-X+Y)**7
     expr4 = B*X**2*(X-Y)**3
     self.assertEqual(tools.get_max_coef(expr3*expr4, expr4), expr3)
     self.assertEqual(tools.get_max_coef(expr3x, expr4), tools.ZERO)
     res = tools.get_max_coef(expr3y, expr4)*expr4-expr3y
     self.assertEqual(res.expand(), tools.ZERO)
Example #3
0
def _try_solve_0(symo, eq_sys, knowns):
    res = False
    for eq, [r], th_names in eq_sys:
        X = tools.get_max_coef(eq, r)
        if X != 0:
            Y = X*r - eq
            symo.write_line("# Solving type 1")
            X = symo.replace(trigsimp(X), 'X', r)
            Y = symo.replace(trigsimp(Y), 'Y', r)
            symo.add_to_dict(r, Y/X)
            knowns.add(r)
            res = True
    return res