コード例 #1
0
    def test_expressions(self):
        """
        Given two equivalent expressions, `sympy_expresions_equal` should correctly call them equal.
        Given two different expressions, the function should say they are not equal.
        """

        e1 = sympy.sympify('x+y+z')
        e2 = sympy.sympify('0.5 * (2*x + 2*y + 2*z)')
        e3 = sympy.sympify('x+y+z - y')

        self.assertTrue(sympy_expressions_equal(e1, e2))
        self.assertFalse(sympy_expressions_equal(e1, e3))
        self.assertFalse(sympy_expressions_equal(e2, e3))
コード例 #2
0
ファイル: test_sympyhelpers.py プロジェクト: lukauskas/means
    def test_expressions(self):
        """
        Given two equivalent expressions, `sympy_expresions_equal` should correctly call them equal.
        Given two different expressions, the function should say they are not equal.
        """

        e1 = sympy.sympify('x+y+z')
        e2 = sympy.sympify('0.5 * (2*x + 2*y + 2*z)')
        e3 = sympy.sympify('x+y+z - y')

        self.assertTrue(sympy_expressions_equal(e1, e2))
        self.assertFalse(sympy_expressions_equal(e1, e3))
        self.assertFalse(sympy_expressions_equal(e2, e3))
コード例 #3
0
ファイル: test_sympyhelpers.py プロジェクト: lukauskas/means
    def test_matrices(self):
        """
        Given two equal matrices, `sympy_expressions_equal` should correctly identify them as equivalent.
        Given two different matrices, it should correctly call them different
        """

        m1 = sympy.Matrix([[sympy.sympify('x'), 1, 2], [3, 4, 5]])
        m2 = sympy.Matrix([[sympy.sympify('x'), 1, 2], [sympy.sympify('3 + x - x'), 4, 5]])
        m3 = sympy.Matrix([[sympy.sympify('x'), 1, 2], [sympy.sympify('3 + x - y'), 4, 5]])

        self.assertTrue(sympy_expressions_equal(m1, m2))
        self.assertFalse(sympy_expressions_equal(m1, m3))
        self.assertFalse(sympy_expressions_equal(m2, m3))
コード例 #4
0
    def test_matrices(self):
        """
        Given two equal matrices, `sympy_expressions_equal` should correctly identify them as equivalent.
        Given two different matrices, it should correctly call them different
        """

        m1 = sympy.Matrix([[sympy.sympify('x'), 1, 2], [3, 4, 5]])
        m2 = sympy.Matrix([[sympy.sympify('x'), 1, 2],
                           [sympy.sympify('3 + x - x'), 4, 5]])
        m3 = sympy.Matrix([[sympy.sympify('x'), 1, 2],
                           [sympy.sympify('3 + x - y'), 4, 5]])

        self.assertTrue(sympy_expressions_equal(m1, m2))
        self.assertFalse(sympy_expressions_equal(m1, m3))
        self.assertFalse(sympy_expressions_equal(m2, m3))
コード例 #5
0
    def __eq__(self, other):
        if not isinstance(other, self.__class__):
            return False

        return self.species == other.species and self.propensities == other.propensities \
                   and self.stoichiometry_matrix == other.stoichiometry_matrix \
                   and sympy_expressions_equal(self.propensities,other.propensities)
コード例 #6
0
ファイル: model.py プロジェクト: lukauskas/means
    def __eq__(self, other):
        if not isinstance(other, self.__class__):
            return False

        return self.species == other.species and self.propensities == other.propensities \
                   and self.stoichiometry_matrix == other.stoichiometry_matrix \
                   and sympy_expressions_equal(self.propensities,other.propensities)
コード例 #7
0
 def test_compute_raw_moments(self):
     expected = to_sympy_matrix([
         ["y_2**2+yx2"], ["y_1*y_2+yx3"], ["y_1**2+yx4"], ["y_0*y_2+yx5"],
         ["y_0*y_1+yx6"], ["y_0**2+yx7"],
         ["y_2**3+3*y_2*yx2+3*yx2**2/y_2+yx2**3/y_2**3"],
         [
             "y_1*y_2**2+y_1*yx2+2*y_2*yx3+2*yx2*yx3/y_2+yx3**2/y_1+yx2*yx3**2/(y_1*y_2**2)"
         ],
         [
             "y_1**2*y_2+2*y_1*yx3+y_2*yx4+yx3**2/y_2+2*yx3*yx4/y_1+yx3**2*yx4/(y_1**2*y_2)"
         ], ["y_1**3+3*y_1*yx4+3*yx4**2/y_1+yx4**3/y_1**3"],
         [
             "y_0*y_2**2+y_0*yx2+2*y_2*yx5+2*yx2*yx5/y_2+yx5**2/y_0+yx2*yx5**2/(y_0*y_2**2)"
         ],
         [
             "y_0*y_1*y_2+y_0*yx3+y_1*yx5+y_2*yx6+yx3*yx5/y_2+yx3*yx6/y_1+yx5*yx6/y_0+yx3*yx5*yx6/(y_0*y_1*y_2)"
         ],
         [
             "y_0*y_1**2+y_0*yx4+2*y_1*yx6+2*yx4*yx6/y_1+yx6**2/y_0+yx4*yx6**2/(y_0*y_1**2)"
         ],
         [
             "y_0**2*y_2+2*y_0*yx5+y_2*yx7+yx5**2/y_2+2*yx5*yx7/y_0+yx5**2*yx7/(y_0**2*y_2)"
         ],
         [
             "y_0**2*y_1+2*y_0*yx6+y_1*yx7+yx6**2/y_1+2*yx6*yx7/y_0+yx6**2*yx7/(y_0**2*y_1)"
         ], ["y_0**3+3*y_0*yx7+3*yx7**2/y_0+yx7**3/y_0**3"]
     ])
     closer = LogNormalClosure(2, multivariate=True)
     answer = closer._compute_raw_moments(
         self.__n_counter,
         self.__k_counter,
     )
     self.assertTrue(sympy_expressions_equal(answer, expected))
コード例 #8
0
    def test_log_normal_closer_wrapper(self):


        central_from_raw_exprs = to_sympy_matrix(
                    [["x_0_0_2-y_2**2"],
                    ["x_0_1_1-y_1*y_2"],
                    ["x_0_2_0-y_1**2"],
                    ["x_1_0_1-y_0*y_2"],
                    ["x_1_1_0-y_0*y_1"],
                    ["x_2_0_0-y_0**2"],
                    ["-3*x_0_0_2*y_2+x_0_0_3+2*y_2**3"],
                    ["-x_0_0_2*y_1-2*x_0_1_1*y_2+x_0_1_2+2*y_1*y_2**2"],
                    ["-2*x_0_1_1*y_1-x_0_2_0*y_2+x_0_2_1+2*y_1**2*y_2"],
                    ["-3*x_0_2_0*y_1+x_0_3_0+2*y_1**3"],
                    ["-x_0_0_2*y_0-2*x_1_0_1*y_2+x_1_0_2+2*y_0*y_2**2"],
                    ["-x_0_1_1*y_0-x_1_0_1*y_1-x_1_1_0*y_2+x_1_1_1+2*y_0*y_1*y_2"],
                    ["-x_0_2_0*y_0-2*x_1_1_0*y_1+x_1_2_0+2*y_0*y_1**2"],
                    ["-2*x_1_0_1*y_0-x_2_0_0*y_2+x_2_0_1+2*y_0**2*y_2"],
                    ["-2*x_1_1_0*y_0-x_2_0_0*y_1+x_2_1_0+2*y_0**2*y_1"],
                    ["-3*x_2_0_0*y_0+x_3_0_0+2*y_0**3"]
         ])


        max_order = 2

        expected = to_sympy_matrix([
                    ["c_0-c_1*y_0-(c_2*c_6*yx5)/(c_6+y_0) ** 2-(c_2*y_0*y_2)/(c_6+y_0)+(c_2*c_6*y_2*yx7)/(c_6+y_0) ** 3+(c_2*c_6*yx5*(yx5*y_0 ** 2+2*y_2*yx7*y_0+yx5*yx7))/(y_0 ** 2*y_2*(c_6+y_0) ** 3)-(c_2*c_6*y_2*yx7 ** 2*(3*y_0 ** 2+yx7))/(y_0 ** 3*(c_6+y_0) ** 4)"],
                    ["c_3*y_0-c_4*y_1"],
                    ["c_4*y_1-c_5*y_2"],
                    ["c_4*y_1+c_5*y_2+2*c_4*yx3-2*c_5*yx2"],
                    ["c_3*yx5-c_4*yx3-c_4*y_1+c_4*yx4-c_5*yx3"],
                    ["c_3*y_0+c_4*y_1-2*c_4*yx4+2*c_3*yx6"],
                    ["-(c_2*y_0 ** 5*y_2 ** 2*yx2+c_1*y_0 ** 5*y_2 ** 2*yx5-c_4*y_0 ** 5*y_2 ** 2*yx6+c_5*y_0 ** 5*y_2 ** 2*yx5+2*c_2*c_6*y_0 ** 4*y_2 ** 2*yx2+3*c_1*c_6*y_0 ** 4*y_2 ** 2*yx5+c_2*c_6*y_0 ** 3*y_2 ** 3*yx5-3*c_4*c_6*y_0 ** 4*y_2 ** 2*yx6+3*c_5*c_6*y_0 ** 4*y_2 ** 2*yx5+c_2*c_6*y_0 ** 2*yx2*yx5 ** 2+c_2*c_6 ** 2*y_0*yx2*yx5 ** 2-c_2*c_6*y_2 ** 2*yx5 ** 2*yx7+c_2*c_6 ** 2*y_0 ** 3*y_2 ** 2*yx2+3*c_1*c_6 ** 2*y_0 ** 3*y_2 ** 2*yx5+c_1*c_6 ** 3*y_0 ** 2*y_2 ** 2*yx5+c_2*c_6 ** 2*y_0*y_2 ** 2*yx5 ** 2+c_2*c_6 ** 2*y_0 ** 2*y_2 ** 3*yx5-3*c_4*c_6 ** 2*y_0 ** 3*y_2 ** 2*yx6-c_4*c_6 ** 3*y_0 ** 2*y_2 ** 2*yx6+3*c_5*c_6 ** 2*y_0 ** 3*y_2 ** 2*yx5+c_5*c_6 ** 3*y_0 ** 2*y_2 ** 2*yx5+2*c_2*c_6*y_0 ** 3*y_2*yx2*yx5-2*c_2*c_6*y_0*y_2 ** 3*yx5*yx7+2*c_2*c_6 ** 2*y_0 ** 2*y_2*yx2*yx5)/(y_0 ** 2*y_2 ** 2*(c_6+y_0) ** 3)"],
                    ["-(c_2*y_0 ** 5*y_1*y_2*yx3+c_1*y_0 ** 5*y_1*y_2*yx6-c_3*y_0 ** 5*y_1*y_2*yx7+c_4*y_0 ** 5*y_1*y_2*yx6-c_2*c_6*y_2 ** 2*yx6 ** 2*yx7-c_2*c_6*y_0 ** 2*y_2 ** 2*yx6 ** 2+c_2*c_6 ** 2*y_0 ** 2*y_1*y_2 ** 2*yx6+2*c_2*c_6*y_0 ** 4*y_1*y_2*yx3+3*c_1*c_6*y_0 ** 4*y_1*y_2*yx6-3*c_3*c_6*y_0 ** 4*y_1*y_2*yx7+3*c_4*c_6*y_0 ** 4*y_1*y_2*yx6+c_2*c_6*y_0 ** 3*y_1*yx3*yx5+c_2*c_6*y_0 ** 3*y_2*yx3*yx6+c_2*c_6*y_0 ** 2*yx3*yx5*yx6+c_2*c_6 ** 2*y_0*yx3*yx5*yx6+c_2*c_6 ** 2*y_0 ** 3*y_1*y_2*yx3+3*c_1*c_6 ** 2*y_0 ** 3*y_1*y_2*yx6+c_1*c_6 ** 3*y_0 ** 2*y_1*y_2*yx6+c_2*c_6*y_0 ** 3*y_1*y_2 ** 2*yx6-3*c_3*c_6 ** 2*y_0 ** 3*y_1*y_2*yx7-c_3*c_6 ** 3*y_0 ** 2*y_1*y_2*yx7+3*c_4*c_6 ** 2*y_0 ** 3*y_1*y_2*yx6+c_4*c_6 ** 3*y_0 ** 2*y_1*y_2*yx6+c_2*c_6 ** 2*y_0 ** 2*y_1*yx3*yx5+c_2*c_6 ** 2*y_0 ** 2*y_2*yx3*yx6+c_2*c_6*y_0 ** 2*y_1*y_2*yx5*yx6+c_2*c_6 ** 2*y_0*y_1*y_2*yx5*yx6-2*c_2*c_6*y_0*y_1*y_2 ** 2*yx6*yx7)/(y_0 ** 2*y_1*y_2*(c_6+y_0) ** 3)"],
                    ["-(-c_1*c_6 ** 4*y_0 ** 4*y_2+2*c_1*c_6 ** 4*y_0 ** 3*y_2*yx7-c_0*c_6 ** 4*y_0 ** 3*y_2-4*c_1*c_6 ** 3*y_0 ** 5*y_2-c_2*c_6 ** 3*y_0 ** 4*y_2 ** 2+2*c_2*c_6 ** 3*y_0 ** 4*y_2*yx5+8*c_1*c_6 ** 3*y_0 ** 4*y_2*yx7-4*c_0*c_6 ** 3*y_0 ** 4*y_2+2*c_2*c_6 ** 3*y_0 ** 3*y_2 ** 2*yx7-c_2*c_6 ** 3*y_0 ** 3*y_2*yx5+2*c_2*c_6 ** 3*y_0 ** 3*yx5 ** 2+4*c_2*c_6 ** 3*y_0 ** 2*y_2*yx5*yx7+2*c_2*c_6 ** 3*y_0*yx5 ** 2*yx7-6*c_1*c_6 ** 2*y_0 ** 6*y_2-3*c_2*c_6 ** 2*y_0 ** 5*y_2 ** 2+6*c_2*c_6 ** 2*y_0 ** 5*y_2*yx5+12*c_1*c_6 ** 2*y_0 ** 5*y_2*yx7-6*c_0*c_6 ** 2*y_0 ** 5*y_2+4*c_2*c_6 ** 2*y_0 ** 4*y_2 ** 2*yx7-2*c_2*c_6 ** 2*y_0 ** 4*y_2*yx5+4*c_2*c_6 ** 2*y_0 ** 4*yx5 ** 2+c_2*c_6 ** 2*y_0 ** 3*y_2 ** 2*yx7+8*c_2*c_6 ** 2*y_0 ** 3*y_2*yx5*yx7+c_2*c_6 ** 2*y_0 ** 3*yx5 ** 2-6*c_2*c_6 ** 2*y_0 ** 2*y_2 ** 2*yx7 ** 2+2*c_2*c_6 ** 2*y_0 ** 2*y_2*yx5*yx7+4*c_2*c_6 ** 2*y_0 ** 2*yx5 ** 2*yx7+c_2*c_6 ** 2*y_0*yx5 ** 2*yx7-2*c_2*c_6 ** 2*y_2 ** 2*yx7 ** 3-4*c_1*c_6*y_0 ** 7*y_2-3*c_2*c_6*y_0 ** 6*y_2 ** 2+6*c_2*c_6*y_0 ** 6*y_2*yx5+8*c_1*c_6*y_0 ** 6*y_2*yx7-4*c_0*c_6*y_0 ** 6*y_2+2*c_2*c_6*y_0 ** 5*y_2 ** 2*yx7-c_2*c_6*y_0 ** 5*y_2*yx5+2*c_2*c_6*y_0 ** 5*yx5 ** 2+c_2*c_6*y_0 ** 4*y_2 ** 2*yx7+4*c_2*c_6*y_0 ** 4*y_2*yx5*yx7+c_2*c_6*y_0 ** 4*yx5 ** 2-6*c_2*c_6*y_0 ** 3*y_2 ** 2*yx7 ** 2+2*c_2*c_6*y_0 ** 3*y_2*yx5*yx7+2*c_2*c_6*y_0 ** 3*yx5 ** 2*yx7-3*c_2*c_6*y_0 ** 2*y_2 ** 2*yx7 ** 2+c_2*c_6*y_0 ** 2*yx5 ** 2*yx7-2*c_2*c_6*y_0*y_2 ** 2*yx7 ** 3-c_2*c_6*y_2 ** 2*yx7 ** 3-c_1*y_0 ** 8*y_2-c_2*y_0 ** 7*y_2 ** 2+2*c_2*y_0 ** 7*y_2*yx5+2*c_1*y_0 ** 7*y_2*yx7-c_0*y_0 ** 7*y_2)/(y_0 ** 3*y_2*(c_6+y_0) ** 4)"]
                ])
        closer = LogNormalClosure(max_order,multivariate=True)
        answer = closer.close(self.__mfk, central_from_raw_exprs, self.__n_counter, self.__k_counter)


        #print (answer -expected).applyfunc(sympy.simplify)
        self.assertTrue(sympy_expressions_equal(answer, expected))
コード例 #9
0
    def test_log_normal_closer_wrapper(self):

        central_from_raw_exprs = to_sympy_matrix(
            [["x_0_0_2-y_2**2"], ["x_0_1_1-y_1*y_2"], ["x_0_2_0-y_1**2"],
             ["x_1_0_1-y_0*y_2"], ["x_1_1_0-y_0*y_1"], ["x_2_0_0-y_0**2"],
             ["-3*x_0_0_2*y_2+x_0_0_3+2*y_2**3"],
             ["-x_0_0_2*y_1-2*x_0_1_1*y_2+x_0_1_2+2*y_1*y_2**2"],
             ["-2*x_0_1_1*y_1-x_0_2_0*y_2+x_0_2_1+2*y_1**2*y_2"],
             ["-3*x_0_2_0*y_1+x_0_3_0+2*y_1**3"],
             ["-x_0_0_2*y_0-2*x_1_0_1*y_2+x_1_0_2+2*y_0*y_2**2"],
             ["-x_0_1_1*y_0-x_1_0_1*y_1-x_1_1_0*y_2+x_1_1_1+2*y_0*y_1*y_2"],
             ["-x_0_2_0*y_0-2*x_1_1_0*y_1+x_1_2_0+2*y_0*y_1**2"],
             ["-2*x_1_0_1*y_0-x_2_0_0*y_2+x_2_0_1+2*y_0**2*y_2"],
             ["-2*x_1_1_0*y_0-x_2_0_0*y_1+x_2_1_0+2*y_0**2*y_1"],
             ["-3*x_2_0_0*y_0+x_3_0_0+2*y_0**3"]])

        max_order = 2

        expected = to_sympy_matrix([
            [
                "c_0-c_1*y_0-(c_2*c_6*yx5)/(c_6+y_0) ** 2-(c_2*y_0*y_2)/(c_6+y_0)+(c_2*c_6*y_2*yx7)/(c_6+y_0) ** 3+(c_2*c_6*yx5*(yx5*y_0 ** 2+2*y_2*yx7*y_0+yx5*yx7))/(y_0 ** 2*y_2*(c_6+y_0) ** 3)-(c_2*c_6*y_2*yx7 ** 2*(3*y_0 ** 2+yx7))/(y_0 ** 3*(c_6+y_0) ** 4)"
            ], ["c_3*y_0-c_4*y_1"], ["c_4*y_1-c_5*y_2"],
            ["c_4*y_1+c_5*y_2+2*c_4*yx3-2*c_5*yx2"],
            ["c_3*yx5-c_4*yx3-c_4*y_1+c_4*yx4-c_5*yx3"],
            ["c_3*y_0+c_4*y_1-2*c_4*yx4+2*c_3*yx6"],
            [
                "-(c_2*y_0 ** 5*y_2 ** 2*yx2+c_1*y_0 ** 5*y_2 ** 2*yx5-c_4*y_0 ** 5*y_2 ** 2*yx6+c_5*y_0 ** 5*y_2 ** 2*yx5+2*c_2*c_6*y_0 ** 4*y_2 ** 2*yx2+3*c_1*c_6*y_0 ** 4*y_2 ** 2*yx5+c_2*c_6*y_0 ** 3*y_2 ** 3*yx5-3*c_4*c_6*y_0 ** 4*y_2 ** 2*yx6+3*c_5*c_6*y_0 ** 4*y_2 ** 2*yx5+c_2*c_6*y_0 ** 2*yx2*yx5 ** 2+c_2*c_6 ** 2*y_0*yx2*yx5 ** 2-c_2*c_6*y_2 ** 2*yx5 ** 2*yx7+c_2*c_6 ** 2*y_0 ** 3*y_2 ** 2*yx2+3*c_1*c_6 ** 2*y_0 ** 3*y_2 ** 2*yx5+c_1*c_6 ** 3*y_0 ** 2*y_2 ** 2*yx5+c_2*c_6 ** 2*y_0*y_2 ** 2*yx5 ** 2+c_2*c_6 ** 2*y_0 ** 2*y_2 ** 3*yx5-3*c_4*c_6 ** 2*y_0 ** 3*y_2 ** 2*yx6-c_4*c_6 ** 3*y_0 ** 2*y_2 ** 2*yx6+3*c_5*c_6 ** 2*y_0 ** 3*y_2 ** 2*yx5+c_5*c_6 ** 3*y_0 ** 2*y_2 ** 2*yx5+2*c_2*c_6*y_0 ** 3*y_2*yx2*yx5-2*c_2*c_6*y_0*y_2 ** 3*yx5*yx7+2*c_2*c_6 ** 2*y_0 ** 2*y_2*yx2*yx5)/(y_0 ** 2*y_2 ** 2*(c_6+y_0) ** 3)"
            ],
            [
                "-(c_2*y_0 ** 5*y_1*y_2*yx3+c_1*y_0 ** 5*y_1*y_2*yx6-c_3*y_0 ** 5*y_1*y_2*yx7+c_4*y_0 ** 5*y_1*y_2*yx6-c_2*c_6*y_2 ** 2*yx6 ** 2*yx7-c_2*c_6*y_0 ** 2*y_2 ** 2*yx6 ** 2+c_2*c_6 ** 2*y_0 ** 2*y_1*y_2 ** 2*yx6+2*c_2*c_6*y_0 ** 4*y_1*y_2*yx3+3*c_1*c_6*y_0 ** 4*y_1*y_2*yx6-3*c_3*c_6*y_0 ** 4*y_1*y_2*yx7+3*c_4*c_6*y_0 ** 4*y_1*y_2*yx6+c_2*c_6*y_0 ** 3*y_1*yx3*yx5+c_2*c_6*y_0 ** 3*y_2*yx3*yx6+c_2*c_6*y_0 ** 2*yx3*yx5*yx6+c_2*c_6 ** 2*y_0*yx3*yx5*yx6+c_2*c_6 ** 2*y_0 ** 3*y_1*y_2*yx3+3*c_1*c_6 ** 2*y_0 ** 3*y_1*y_2*yx6+c_1*c_6 ** 3*y_0 ** 2*y_1*y_2*yx6+c_2*c_6*y_0 ** 3*y_1*y_2 ** 2*yx6-3*c_3*c_6 ** 2*y_0 ** 3*y_1*y_2*yx7-c_3*c_6 ** 3*y_0 ** 2*y_1*y_2*yx7+3*c_4*c_6 ** 2*y_0 ** 3*y_1*y_2*yx6+c_4*c_6 ** 3*y_0 ** 2*y_1*y_2*yx6+c_2*c_6 ** 2*y_0 ** 2*y_1*yx3*yx5+c_2*c_6 ** 2*y_0 ** 2*y_2*yx3*yx6+c_2*c_6*y_0 ** 2*y_1*y_2*yx5*yx6+c_2*c_6 ** 2*y_0*y_1*y_2*yx5*yx6-2*c_2*c_6*y_0*y_1*y_2 ** 2*yx6*yx7)/(y_0 ** 2*y_1*y_2*(c_6+y_0) ** 3)"
            ],
            [
                "-(-c_1*c_6 ** 4*y_0 ** 4*y_2+2*c_1*c_6 ** 4*y_0 ** 3*y_2*yx7-c_0*c_6 ** 4*y_0 ** 3*y_2-4*c_1*c_6 ** 3*y_0 ** 5*y_2-c_2*c_6 ** 3*y_0 ** 4*y_2 ** 2+2*c_2*c_6 ** 3*y_0 ** 4*y_2*yx5+8*c_1*c_6 ** 3*y_0 ** 4*y_2*yx7-4*c_0*c_6 ** 3*y_0 ** 4*y_2+2*c_2*c_6 ** 3*y_0 ** 3*y_2 ** 2*yx7-c_2*c_6 ** 3*y_0 ** 3*y_2*yx5+2*c_2*c_6 ** 3*y_0 ** 3*yx5 ** 2+4*c_2*c_6 ** 3*y_0 ** 2*y_2*yx5*yx7+2*c_2*c_6 ** 3*y_0*yx5 ** 2*yx7-6*c_1*c_6 ** 2*y_0 ** 6*y_2-3*c_2*c_6 ** 2*y_0 ** 5*y_2 ** 2+6*c_2*c_6 ** 2*y_0 ** 5*y_2*yx5+12*c_1*c_6 ** 2*y_0 ** 5*y_2*yx7-6*c_0*c_6 ** 2*y_0 ** 5*y_2+4*c_2*c_6 ** 2*y_0 ** 4*y_2 ** 2*yx7-2*c_2*c_6 ** 2*y_0 ** 4*y_2*yx5+4*c_2*c_6 ** 2*y_0 ** 4*yx5 ** 2+c_2*c_6 ** 2*y_0 ** 3*y_2 ** 2*yx7+8*c_2*c_6 ** 2*y_0 ** 3*y_2*yx5*yx7+c_2*c_6 ** 2*y_0 ** 3*yx5 ** 2-6*c_2*c_6 ** 2*y_0 ** 2*y_2 ** 2*yx7 ** 2+2*c_2*c_6 ** 2*y_0 ** 2*y_2*yx5*yx7+4*c_2*c_6 ** 2*y_0 ** 2*yx5 ** 2*yx7+c_2*c_6 ** 2*y_0*yx5 ** 2*yx7-2*c_2*c_6 ** 2*y_2 ** 2*yx7 ** 3-4*c_1*c_6*y_0 ** 7*y_2-3*c_2*c_6*y_0 ** 6*y_2 ** 2+6*c_2*c_6*y_0 ** 6*y_2*yx5+8*c_1*c_6*y_0 ** 6*y_2*yx7-4*c_0*c_6*y_0 ** 6*y_2+2*c_2*c_6*y_0 ** 5*y_2 ** 2*yx7-c_2*c_6*y_0 ** 5*y_2*yx5+2*c_2*c_6*y_0 ** 5*yx5 ** 2+c_2*c_6*y_0 ** 4*y_2 ** 2*yx7+4*c_2*c_6*y_0 ** 4*y_2*yx5*yx7+c_2*c_6*y_0 ** 4*yx5 ** 2-6*c_2*c_6*y_0 ** 3*y_2 ** 2*yx7 ** 2+2*c_2*c_6*y_0 ** 3*y_2*yx5*yx7+2*c_2*c_6*y_0 ** 3*yx5 ** 2*yx7-3*c_2*c_6*y_0 ** 2*y_2 ** 2*yx7 ** 2+c_2*c_6*y_0 ** 2*yx5 ** 2*yx7-2*c_2*c_6*y_0*y_2 ** 2*yx7 ** 3-c_2*c_6*y_2 ** 2*yx7 ** 3-c_1*y_0 ** 8*y_2-c_2*y_0 ** 7*y_2 ** 2+2*c_2*y_0 ** 7*y_2*yx5+2*c_1*y_0 ** 7*y_2*yx7-c_0*y_0 ** 7*y_2)/(y_0 ** 3*y_2*(c_6+y_0) ** 4)"
            ]
        ])
        closer = LogNormalClosure(max_order, multivariate=True)
        answer = closer.close(self.__mfk, central_from_raw_exprs,
                              self.__n_counter, self.__k_counter)

        #print (answer -expected).applyfunc(sympy.simplify)
        self.assertTrue(sympy_expressions_equal(answer, expected))
コード例 #10
0
    def test_log_normal_closer_wrapper_univariate(self):

        central_from_raw_exprs = to_sympy_matrix(
            [["x_0_0_2-y_2**2"], ["x_0_1_1-y_1*y_2"], ["x_0_2_0-y_1**2"],
             ["x_1_0_1-y_0*y_2"], ["x_1_1_0-y_0*y_1"], ["x_2_0_0-y_0**2"],
             ["-3*x_0_0_2*y_2+x_0_0_3+2*y_2**3"],
             ["-x_0_0_2*y_1-2*x_0_1_1*y_2+x_0_1_2+2*y_1*y_2**2"],
             ["-2*x_0_1_1*y_1-x_0_2_0*y_2+x_0_2_1+2*y_1**2*y_2"],
             ["-3*x_0_2_0*y_1+x_0_3_0+2*y_1**3"],
             ["-x_0_0_2*y_0-2*x_1_0_1*y_2+x_1_0_2+2*y_0*y_2**2"],
             ["-x_0_1_1*y_0-x_1_0_1*y_1-x_1_1_0*y_2+x_1_1_1+2*y_0*y_1*y_2"],
             ["-x_0_2_0*y_0-2*x_1_1_0*y_1+x_1_2_0+2*y_0*y_1**2"],
             ["-2*x_1_0_1*y_0-x_2_0_0*y_2+x_2_0_1+2*y_0**2*y_2"],
             ["-2*x_1_1_0*y_0-x_2_0_0*y_1+x_2_1_0+2*y_0**2*y_1"],
             ["-3*x_2_0_0*y_0+x_3_0_0+2*y_0**3"]])

        max_order = 2

        expected = to_sympy_matrix([
            [
                "c_0-c_1*y_0-(c_2*c_6*yx5)/(c_6+y_0) ** 2-(c_2*y_0*y_2)/(c_6+y_0)+(c_2*c_6*y_2*yx7)/(c_6+y_0) ** 3-(c_2*c_6*y_2*yx7 ** 2*(3*y_0 ** 2+yx7))/(y_0 ** 3*(c_6+y_0) ** 4)"
            ], ["c_3*y_0-c_4*y_1"], ["c_4*y_1-c_5*y_2"],
            ["c_4*y_1+c_5*y_2+2*c_4*yx3-2*c_5*yx2"],
            ["c_3*yx5-c_4*yx3-c_4*y_1+c_4*yx4-c_5*yx3"],
            ["c_3*y_0+c_4*y_1-2*c_4*yx4+2*c_3*yx6"],
            [
                "c_4*yx6-c_1*yx5-c_5*yx5-(c_2*y_0*yx2)/(c_6+y_0)-(c_2*y_2*yx5)/(c_6+y_0)+(c_2*y_0*y_2*yx5)/(c_6+y_0) ** 2"
            ],
            [
                "c_3*yx7-c_1*yx6-c_4*yx6-(c_2*y_0*yx3)/(c_6+y_0)-(c_2*y_2*yx6)/(c_6+y_0)+(c_2*y_0*y_2*yx6)/(c_6+y_0) ** 2"
            ],
            [
                "(c_0*y_0 ** 7+c_1*y_0 ** 8+c_2*y_0 ** 7*y_2-2*c_2*y_0 ** 7*yx5-2*c_1*y_0 ** 7*yx7+6*c_0*c_6 ** 2*y_0 ** 5+4*c_0*c_6 ** 3*y_0 ** 4+c_0*c_6 ** 4*y_0 ** 3+6*c_1*c_6 ** 2*y_0 ** 6+4*c_1*c_6 ** 3*y_0 ** 5+c_1*c_6 ** 4*y_0 ** 4+4*c_0*c_6*y_0 ** 6+4*c_1*c_6*y_0 ** 7+3*c_2*c_6*y_0 ** 6*y_2+c_2*c_6*y_0 ** 5*yx5-6*c_2*c_6*y_0 ** 6*yx5-8*c_1*c_6*y_0 ** 6*yx7+c_2*c_6*y_2*yx7 ** 3+3*c_2*c_6 ** 2*y_0 ** 5*y_2+c_2*c_6 ** 3*y_0 ** 4*y_2+2*c_2*c_6 ** 2*y_0 ** 4*yx5+c_2*c_6 ** 3*y_0 ** 3*yx5-6*c_2*c_6 ** 2*y_0 ** 5*yx5-2*c_2*c_6 ** 3*y_0 ** 4*yx5-12*c_1*c_6 ** 2*y_0 ** 5*yx7-8*c_1*c_6 ** 3*y_0 ** 4*yx7-2*c_1*c_6 ** 4*y_0 ** 3*yx7+2*c_2*c_6 ** 2*y_2*yx7 ** 3+3*c_2*c_6*y_0 ** 2*y_2*yx7 ** 2+6*c_2*c_6*y_0 ** 3*y_2*yx7 ** 2-c_2*c_6 ** 2*y_0 ** 3*y_2*yx7-4*c_2*c_6 ** 2*y_0 ** 4*y_2*yx7-2*c_2*c_6 ** 3*y_0 ** 3*y_2*yx7+6*c_2*c_6 ** 2*y_0 ** 2*y_2*yx7 ** 2+2*c_2*c_6*y_0*y_2*yx7 ** 3-c_2*c_6*y_0 ** 4*y_2*yx7-2*c_2*c_6*y_0 ** 5*y_2*yx7)/(y_0 ** 3*(c_6+y_0) ** 4)"
            ]
        ])
        #here, we set univariate!
        closer = LogNormalClosure(max_order, multivariate=False)
        answer = closer.close(self.__mfk, central_from_raw_exprs,
                              self.__n_counter, self.__k_counter)
        self.assertTrue(sympy_expressions_equal(answer, expected))
コード例 #11
0
 def test_compute_raw_moments(self):
     expected = to_sympy_matrix([
         ["y_2**2+yx2"],
         ["y_1*y_2+yx3"],
         ["y_1**2+yx4"],
         ["y_0*y_2+yx5"],
         ["y_0*y_1+yx6"],
         ["y_0**2+yx7"],
         ["y_2**3+3*y_2*yx2+3*yx2**2/y_2+yx2**3/y_2**3"],
         ["y_1*y_2**2+y_1*yx2+2*y_2*yx3+2*yx2*yx3/y_2+yx3**2/y_1+yx2*yx3**2/(y_1*y_2**2)"],
         ["y_1**2*y_2+2*y_1*yx3+y_2*yx4+yx3**2/y_2+2*yx3*yx4/y_1+yx3**2*yx4/(y_1**2*y_2)"],
         ["y_1**3+3*y_1*yx4+3*yx4**2/y_1+yx4**3/y_1**3"],
         ["y_0*y_2**2+y_0*yx2+2*y_2*yx5+2*yx2*yx5/y_2+yx5**2/y_0+yx2*yx5**2/(y_0*y_2**2)"],
         ["y_0*y_1*y_2+y_0*yx3+y_1*yx5+y_2*yx6+yx3*yx5/y_2+yx3*yx6/y_1+yx5*yx6/y_0+yx3*yx5*yx6/(y_0*y_1*y_2)"],
         ["y_0*y_1**2+y_0*yx4+2*y_1*yx6+2*yx4*yx6/y_1+yx6**2/y_0+yx4*yx6**2/(y_0*y_1**2)"],
         ["y_0**2*y_2+2*y_0*yx5+y_2*yx7+yx5**2/y_2+2*yx5*yx7/y_0+yx5**2*yx7/(y_0**2*y_2)"],
         ["y_0**2*y_1+2*y_0*yx6+y_1*yx7+yx6**2/y_1+2*yx6*yx7/y_0+yx6**2*yx7/(y_0**2*y_1)"],
         ["y_0**3+3*y_0*yx7+3*yx7**2/y_0+yx7**3/y_0**3"]
     ])
     closer = LogNormalClosure(2,multivariate=True)
     answer = closer._compute_raw_moments(self.__n_counter, self.__k_counter,)
     self.assertTrue(sympy_expressions_equal(answer, expected))
コード例 #12
0
    def test_close_type_one(self):
        central_from_raw_exprs = to_sympy_matrix(
                    [["x_0_0_2-y_2**2"],
                    ["x_0_1_1-y_1*y_2"],
                    ["x_0_2_0-y_1**2"],
                    ["x_1_0_1-y_0*y_2"],
                    ["x_1_1_0-y_0*y_1"],
                    ["x_2_0_0-y_0**2"],
                    ["-3*x_0_0_2*y_2+x_0_0_3+2*y_2**3"],
                    ["-x_0_0_2*y_1-2*x_0_1_1*y_2+x_0_1_2+2*y_1*y_2**2"],
                    ["-2*x_0_1_1*y_1-x_0_2_0*y_2+x_0_2_1+2*y_1**2*y_2"],
                    ["-3*x_0_2_0*y_1+x_0_3_0+2*y_1**3"],
                    ["-x_0_0_2*y_0-2*x_1_0_1*y_2+x_1_0_2+2*y_0*y_2**2"],
                    ["-x_0_1_1*y_0-x_1_0_1*y_1-x_1_1_0*y_2+x_1_1_1+2*y_0*y_1*y_2"],
                    ["-x_0_2_0*y_0-2*x_1_1_0*y_1+x_1_2_0+2*y_0*y_1**2"],
                    ["-2*x_1_0_1*y_0-x_2_0_0*y_2+x_2_0_1+2*y_0**2*y_2"],
                    ["-2*x_1_1_0*y_0-x_2_0_0*y_1+x_2_1_0+2*y_0**2*y_1"],
                    ["-3*x_2_0_0*y_0+x_3_0_0+2*y_0**3"]
         ])


        max_order = 2

        expected = to_sympy_matrix([
            ["yx5*(c_2*y_0/(c_6 + y_0)**2 - c_2/(c_6 + y_0)) + yx7*(-c_2*y_0*y_2/(c_6 + y_0)**3 + c_2*y_2/(c_6 + y_0)**2) + c_0 - c_1*y_0 - c_2*y_0*y_2/(c_6 + y_0) + (-c_2*y_0/(c_6 + y_0)**3 + c_2/(c_6 + y_0)**2)*(2*yx5*yx7/y_0 + 2*yx5*y_0 + yx7*y_2 + 3*y_0**2*y_2 - 2*y_0*(yx5 + y_0*y_2) - y_2*(yx7 + y_0**2)) + (c_2*y_0*y_2/(c_6 + y_0)**4 - c_2*y_2/(c_6 + y_0)**3)*(2*yx7**2/y_0 + 3*yx7*y_0 + 3*y_0**3 - 3*y_0*(yx7 + y_0**2))"],
            ["c_3*y_0-c_4*y_1"],
            ["c_4*y_1-c_5*y_2"],
            ["c_4*y_1+c_5*y_2+2*c_4*yx3-2*c_5*yx2"],
            ["c_3*yx5-c_4*yx3-c_4*y_1+c_4*yx4-c_5*yx3"],
            ["c_3*y_0+c_4*y_1-2*c_4*yx4+2*c_3*yx6"],
            ["-yx2*c_2*y_0/(c_6 + y_0) + yx5*(-c_1 + 2*c_2*y_0*y_2/(c_6 + y_0)**2 - 2*c_2*y_2/(c_6 + y_0) - c_5 - y_2*(c_2*y_0/(c_6 + y_0)**2 - c_2/(c_6 + y_0))) + yx6*c_4 + yx7*(-c_2*y_0*y_2**2/(c_6 + y_0)**3 + c_2*y_2**2/(c_6 + y_0)**2 - y_2*(-c_2*y_0*y_2/(c_6 + y_0)**3 + c_2*y_2/(c_6 + y_0)**2)) + c_0*y_2 - c_1*y_0*y_2 - c_2*y_0*y_2**2/(c_6 + y_0) + c_4*y_0*y_1 - c_5*y_0*y_2 - y_0*(c_4*y_1 - c_5*y_2) - y_2*(c_0 - c_1*y_0 - c_2*y_0*y_2/(c_6 + y_0)) + (c_2*y_0/(c_6 + y_0)**2 - c_2/(c_6 + y_0))*(2*yx2*yx5/y_2 + yx2*y_0 + 2*yx5*y_2 + 3*y_0*y_2**2 - y_0*(yx2 + y_2**2) - 2*y_2*(yx5 + y_0*y_2)) + (-2*c_2*y_0*y_2/(c_6 + y_0)**3 + 2*c_2*y_2/(c_6 + y_0)**2 - y_2*(-c_2*y_0/(c_6 + y_0)**3 + c_2/(c_6 + y_0)**2))*(2*yx5*yx7/y_0 + 2*yx5*y_0 + yx7*y_2 + 3*y_0**2*y_2 - 2*y_0*(yx5 + y_0*y_2) - y_2*(yx7 + y_0**2)) + (c_2*y_0*y_2**2/(c_6 + y_0)**4 - c_2*y_2**2/(c_6 + y_0)**3 - y_2*(c_2*y_0*y_2/(c_6 + y_0)**4 - c_2*y_2/(c_6 + y_0)**3))*(2*yx7**2/y_0 + 3*yx7*y_0 + 3*y_0**3 - 3*y_0*(yx7 + y_0**2))"],
            ["-yx3*c_2*y_0/(c_6 + y_0) + yx5*(c_2*y_0*y_1/(c_6 + y_0)**2 - c_2*y_1/(c_6 + y_0) - y_1*(c_2*y_0/(c_6 + y_0)**2 - c_2/(c_6 + y_0))) + yx6*(-c_1 + c_2*y_0*y_2/(c_6 + y_0)**2 - c_2*y_2/(c_6 + y_0) - c_4) + yx7*(-c_2*y_0*y_1*y_2/(c_6 + y_0)**3 + c_2*y_1*y_2/(c_6 + y_0)**2 + c_3 - y_1*(-c_2*y_0*y_2/(c_6 + y_0)**3 + c_2*y_2/(c_6 + y_0)**2)) + c_0*y_1 - c_1*y_0*y_1 - c_2*y_0*y_1*y_2/(c_6 + y_0) + c_3*y_0**2 - c_4*y_0*y_1 - y_0*(c_3*y_0 - c_4*y_1) - y_1*(c_0 - c_1*y_0 - c_2*y_0*y_2/(c_6 + y_0)) + (c_2*y_0/(c_6 + y_0)**2 - c_2/(c_6 + y_0))*(yx3*y_0 + yx5*y_1 + yx6*y_2 + 3*y_0*y_1*y_2 - y_0*(yx3 + y_1*y_2) - y_1*(yx5 + y_0*y_2) - y_2*(yx6 + y_0*y_1)) + (-c_2*y_0*y_2/(c_6 + y_0)**3 + c_2*y_2/(c_6 + y_0)**2)*(2*yx6*yx7/y_0 + 2*yx6*y_0 + yx7*y_1 + 3*y_0**2*y_1 - 2*y_0*(yx6 + y_0*y_1) - y_1*(yx7 + y_0**2)) + (-c_2*y_0*y_1/(c_6 + y_0)**3 + c_2*y_1/(c_6 + y_0)**2 - y_1*(-c_2*y_0/(c_6 + y_0)**3 + c_2/(c_6 + y_0)**2))*(2*yx5*yx7/y_0 + 2*yx5*y_0 + yx7*y_2 + 3*y_0**2*y_2 - 2*y_0*(yx5 + y_0*y_2) - y_2*(yx7 + y_0**2)) + (c_2*y_0*y_1*y_2/(c_6 + y_0)**4 - c_2*y_1*y_2/(c_6 + y_0)**3 - y_1*(c_2*y_0*y_2/(c_6 + y_0)**4 - c_2*y_2/(c_6 + y_0)**3))*(2*yx7**2/y_0 + 3*yx7*y_0 + 3*y_0**3 - 3*y_0*(yx7 + y_0**2))"],
            ["yx5*(2*c_2*y_0**2/(c_6 + y_0)**2 - 4*c_2*y_0/(c_6 + y_0) - c_2*y_0/(c_6 + y_0)**2 + c_2/(c_6 + y_0) - 2*y_0*(c_2*y_0/(c_6 + y_0)**2 - c_2/(c_6 + y_0))) + yx7*(-2*c_1 - 2*c_2*y_0**2*y_2/(c_6 + y_0)**3 + 4*c_2*y_0*y_2/(c_6 + y_0)**2 + c_2*y_0*y_2/(c_6 + y_0)**3 - 2*c_2*y_2/(c_6 + y_0) - c_2*y_2/(c_6 + y_0)**2 - 2*y_0*(-c_2*y_0*y_2/(c_6 + y_0)**3 + c_2*y_2/(c_6 + y_0)**2)) + 2*c_0*y_0 + c_0 - 2*c_1*y_0**2 + c_1*y_0 - 2*c_2*y_0**2*y_2/(c_6 + y_0) + c_2*y_0*y_2/(c_6 + y_0) - 2*y_0*(c_0 - c_1*y_0 - c_2*y_0*y_2/(c_6 + y_0)) + (2*yx7**2/y_0 + 3*yx7*y_0 + 3*y_0**3 - 3*y_0*(yx7 + y_0**2))*(2*c_2*y_0**2*y_2/(c_6 + y_0)**4 - 4*c_2*y_0*y_2/(c_6 + y_0)**3 - c_2*y_0*y_2/(c_6 + y_0)**4 + 2*c_2*y_2/(c_6 + y_0)**2 + c_2*y_2/(c_6 + y_0)**3 - 2*y_0*(c_2*y_0*y_2/(c_6 + y_0)**4 - c_2*y_2/(c_6 + y_0)**3)) + (2*yx5*yx7/y_0 + 2*yx5*y_0 + yx7*y_2 + 3*y_0**2*y_2 - 2*y_0*(yx5 + y_0*y_2) - y_2*(yx7 + y_0**2))*(-2*c_2*y_0**2/(c_6 + y_0)**3 + 4*c_2*y_0/(c_6 + y_0)**2 + c_2*y_0/(c_6 + y_0)**3 - 2*c_2/(c_6 + y_0) - c_2/(c_6 + y_0)**2 - 2*y_0*(-c_2*y_0/(c_6 + y_0)**3 + c_2/(c_6 + y_0)**2))"]
        ])

        closer = GammaClosure(max_order, multivariate=True)
        answer = closer.close(self.__mfk, central_from_raw_exprs, self.__n_counter, self.__k_counter)
        self.assertTrue(sympy_expressions_equal(answer, expected))
コード例 #13
0
    def test_log_normal_closer_wrapper_univariate(self):

        central_from_raw_exprs = to_sympy_matrix(
                    [["x_0_0_2-y_2**2"],
                    ["x_0_1_1-y_1*y_2"],
                    ["x_0_2_0-y_1**2"],
                    ["x_1_0_1-y_0*y_2"],
                    ["x_1_1_0-y_0*y_1"],
                    ["x_2_0_0-y_0**2"],
                    ["-3*x_0_0_2*y_2+x_0_0_3+2*y_2**3"],
                    ["-x_0_0_2*y_1-2*x_0_1_1*y_2+x_0_1_2+2*y_1*y_2**2"],
                    ["-2*x_0_1_1*y_1-x_0_2_0*y_2+x_0_2_1+2*y_1**2*y_2"],
                    ["-3*x_0_2_0*y_1+x_0_3_0+2*y_1**3"],
                    ["-x_0_0_2*y_0-2*x_1_0_1*y_2+x_1_0_2+2*y_0*y_2**2"],
                    ["-x_0_1_1*y_0-x_1_0_1*y_1-x_1_1_0*y_2+x_1_1_1+2*y_0*y_1*y_2"],
                    ["-x_0_2_0*y_0-2*x_1_1_0*y_1+x_1_2_0+2*y_0*y_1**2"],
                    ["-2*x_1_0_1*y_0-x_2_0_0*y_2+x_2_0_1+2*y_0**2*y_2"],
                    ["-2*x_1_1_0*y_0-x_2_0_0*y_1+x_2_1_0+2*y_0**2*y_1"],
                    ["-3*x_2_0_0*y_0+x_3_0_0+2*y_0**3"]
         ])

        max_order = 2

        expected = to_sympy_matrix([
            ["c_0-c_1*y_0-(c_2*c_6*yx5)/(c_6+y_0) ** 2-(c_2*y_0*y_2)/(c_6+y_0)+(c_2*c_6*y_2*yx7)/(c_6+y_0) ** 3-(c_2*c_6*y_2*yx7 ** 2*(3*y_0 ** 2+yx7))/(y_0 ** 3*(c_6+y_0) ** 4)"],
            ["c_3*y_0-c_4*y_1"],
            ["c_4*y_1-c_5*y_2"],
            ["c_4*y_1+c_5*y_2+2*c_4*yx3-2*c_5*yx2"],
            ["c_3*yx5-c_4*yx3-c_4*y_1+c_4*yx4-c_5*yx3"],
            ["c_3*y_0+c_4*y_1-2*c_4*yx4+2*c_3*yx6"],
            ["c_4*yx6-c_1*yx5-c_5*yx5-(c_2*y_0*yx2)/(c_6+y_0)-(c_2*y_2*yx5)/(c_6+y_0)+(c_2*y_0*y_2*yx5)/(c_6+y_0) ** 2"],
            ["c_3*yx7-c_1*yx6-c_4*yx6-(c_2*y_0*yx3)/(c_6+y_0)-(c_2*y_2*yx6)/(c_6+y_0)+(c_2*y_0*y_2*yx6)/(c_6+y_0) ** 2"],
            ["(c_0*y_0 ** 7+c_1*y_0 ** 8+c_2*y_0 ** 7*y_2-2*c_2*y_0 ** 7*yx5-2*c_1*y_0 ** 7*yx7+6*c_0*c_6 ** 2*y_0 ** 5+4*c_0*c_6 ** 3*y_0 ** 4+c_0*c_6 ** 4*y_0 ** 3+6*c_1*c_6 ** 2*y_0 ** 6+4*c_1*c_6 ** 3*y_0 ** 5+c_1*c_6 ** 4*y_0 ** 4+4*c_0*c_6*y_0 ** 6+4*c_1*c_6*y_0 ** 7+3*c_2*c_6*y_0 ** 6*y_2+c_2*c_6*y_0 ** 5*yx5-6*c_2*c_6*y_0 ** 6*yx5-8*c_1*c_6*y_0 ** 6*yx7+c_2*c_6*y_2*yx7 ** 3+3*c_2*c_6 ** 2*y_0 ** 5*y_2+c_2*c_6 ** 3*y_0 ** 4*y_2+2*c_2*c_6 ** 2*y_0 ** 4*yx5+c_2*c_6 ** 3*y_0 ** 3*yx5-6*c_2*c_6 ** 2*y_0 ** 5*yx5-2*c_2*c_6 ** 3*y_0 ** 4*yx5-12*c_1*c_6 ** 2*y_0 ** 5*yx7-8*c_1*c_6 ** 3*y_0 ** 4*yx7-2*c_1*c_6 ** 4*y_0 ** 3*yx7+2*c_2*c_6 ** 2*y_2*yx7 ** 3+3*c_2*c_6*y_0 ** 2*y_2*yx7 ** 2+6*c_2*c_6*y_0 ** 3*y_2*yx7 ** 2-c_2*c_6 ** 2*y_0 ** 3*y_2*yx7-4*c_2*c_6 ** 2*y_0 ** 4*y_2*yx7-2*c_2*c_6 ** 3*y_0 ** 3*y_2*yx7+6*c_2*c_6 ** 2*y_0 ** 2*y_2*yx7 ** 2+2*c_2*c_6*y_0*y_2*yx7 ** 3-c_2*c_6*y_0 ** 4*y_2*yx7-2*c_2*c_6*y_0 ** 5*y_2*yx7)/(y_0 ** 3*(c_6+y_0) ** 4)"]
        ])
        #here, we set univariate!
        closer = LogNormalClosure(max_order, multivariate=False)
        answer = closer.close(self.__mfk, central_from_raw_exprs, self.__n_counter, self.__k_counter)
        self.assertTrue(sympy_expressions_equal(answer, expected))
コード例 #14
0
    def test_close_type_zero(self):

        central_from_raw_exprs = to_sympy_matrix(
                    [["x_0_0_2-y_2**2"],
                    ["x_0_1_1-y_1*y_2"],
                    ["x_0_2_0-y_1**2"],
                    ["x_1_0_1-y_0*y_2"],
                    ["x_1_1_0-y_0*y_1"],
                    ["x_2_0_0-y_0**2"],
                    ["-3*x_0_0_2*y_2+x_0_0_3+2*y_2**3"],
                    ["-x_0_0_2*y_1-2*x_0_1_1*y_2+x_0_1_2+2*y_1*y_2**2"],
                    ["-2*x_0_1_1*y_1-x_0_2_0*y_2+x_0_2_1+2*y_1**2*y_2"],
                    ["-3*x_0_2_0*y_1+x_0_3_0+2*y_1**3"],
                    ["-x_0_0_2*y_0-2*x_1_0_1*y_2+x_1_0_2+2*y_0*y_2**2"],
                    ["-x_0_1_1*y_0-x_1_0_1*y_1-x_1_1_0*y_2+x_1_1_1+2*y_0*y_1*y_2"],
                    ["-x_0_2_0*y_0-2*x_1_1_0*y_1+x_1_2_0+2*y_0*y_1**2"],
                    ["-2*x_1_0_1*y_0-x_2_0_0*y_2+x_2_0_1+2*y_0**2*y_2"],
                    ["-2*x_1_1_0*y_0-x_2_0_0*y_1+x_2_1_0+2*y_0**2*y_1"],
                    ["-3*x_2_0_0*y_0+x_3_0_0+2*y_0**3"]
         ])

        max_order = 2
        expected = to_sympy_matrix([
            ["c_0-c_1*y_0-(c_2*c_6*yx5)/(c_6+y_0) ** 2-(c_2*y_0*y_2)/(c_6+y_0)+(c_2*c_6*y_2*yx7)/(c_6+y_0) ** 3-(2*c_2*c_6*y_2*yx7 ** 2)/(y_0*(c_6+y_0) ** 4)"],
            ["c_3*y_0-c_4*y_1"],
            ["c_4*y_1-c_5*y_2"],
            ["c_4*y_1+c_5*y_2+2*c_4*yx3-2*c_5*yx2"],
            ["c_3*yx5-c_4*yx3-c_4*y_1+c_4*yx4-c_5*yx3"],
            ["c_3*y_0+c_4*y_1-2*c_4*yx4+2*c_3*yx6"],
            ["c_4*yx6-c_1*yx5-c_5*yx5-(c_2*y_0*yx2)/(c_6+y_0)-(c_2*y_2*yx5)/(c_6+y_0)+(c_2*y_0*y_2*yx5)/(c_6+y_0) ** 2"],
            ["c_3*yx7-c_1*yx6-c_4*yx6-(c_2*y_0*yx3)/(c_6+y_0)-(c_2*y_2*yx6)/(c_6+y_0)+(c_2*y_0*y_2*yx6)/(c_6+y_0) ** 2"],
            ["(c_0*y_0 ** 5+c_1*y_0 ** 6+c_2*y_0 ** 5*y_2-2*c_2*y_0 ** 5*yx5-2*c_1*y_0 ** 5*yx7+6*c_0*c_6 ** 2*y_0 ** 3+4*c_0*c_6 ** 3*y_0 ** 2+6*c_1*c_6 ** 2*y_0 ** 4+4*c_1*c_6 ** 3*y_0 ** 3+c_1*c_6 ** 4*y_0 ** 2+4*c_0*c_6*y_0 ** 4+c_0*c_6 ** 4*y_0+4*c_1*c_6*y_0 ** 5+3*c_2*c_6*y_0 ** 4*y_2+c_2*c_6*y_0 ** 3*yx5+c_2*c_6 ** 3*y_0*yx5-6*c_2*c_6*y_0 ** 4*yx5-8*c_1*c_6*y_0 ** 4*yx7-2*c_1*c_6 ** 4*y_0*yx7+2*c_2*c_6*y_2*yx7 ** 2+3*c_2*c_6 ** 2*y_0 ** 3*y_2+c_2*c_6 ** 3*y_0 ** 2*y_2+2*c_2*c_6 ** 2*y_0 ** 2*yx5-6*c_2*c_6 ** 2*y_0 ** 3*yx5-2*c_2*c_6 ** 3*y_0 ** 2*yx5-12*c_1*c_6 ** 2*y_0 ** 3*yx7-8*c_1*c_6 ** 3*y_0 ** 2*yx7+4*c_2*c_6 ** 2*y_2*yx7 ** 2-4*c_2*c_6 ** 2*y_0 ** 2*y_2*yx7+4*c_2*c_6*y_0*y_2*yx7 ** 2-c_2*c_6*y_0 ** 2*y_2*yx7-c_2*c_6 ** 2*y_0*y_2*yx7-2*c_2*c_6*y_0 ** 3*y_2*yx7-2*c_2*c_6 ** 3*y_0*y_2*yx7)/(y_0*(c_6+y_0) ** 4)"]
        ])
        closer = GammaClosure(max_order, multivariate=False)
        answer = closer.close(self.__mfk, central_from_raw_exprs, self.__n_counter, self.__k_counter)
        self.assertTrue(sympy_expressions_equal(answer, expected))
コード例 #15
0
    def test_normal_closer_wrapper(self):


        central_from_raw_exprs = to_sympy_matrix([
            ["x_0_0_2 - y_2**2"],
            ["x_0_1_1 - y_1*y_2"],
            ["x_0_2_0 - y_1**2"],
            ["x_1_0_1 - y_0*y_2"],
            ["x_1_1_0 - y_0*y_1"],
            ["x_2_0_0 - y_0**2"],
            ["-3*x_0_0_2*y_2 + x_0_0_3 + 2*y_2**3"],
            ["-x_0_0_2*y_1 - 2*x_0_1_1*y_2 + x_0_1_2 + 2*y_1*y_2**2"],
            ["-2*x_0_1_1*y_1 - x_0_2_0*y_2 + x_0_2_1 + 2*y_1**2*y_2"],
            ["-3*x_0_2_0*y_1 + x_0_3_0 + 2*y_1**3"],
            ["-x_0_0_2*y_0 - 2*x_1_0_1*y_2 + x_1_0_2 + 2*y_0*y_2**2"],
            ["-x_0_1_1*y_0 - x_1_0_1*y_1 - x_1_1_0*y_2 + x_1_1_1 + 2*y_0*y_1*y_2"],
            ["-x_0_2_0*y_0 - 2*x_1_1_0*y_1 + x_1_2_0 + 2*y_0*y_1**2"],
            ["-2*x_1_0_1*y_0 - x_2_0_0*y_2 + x_2_0_1 + 2*y_0**2*y_2"],
            ["-2*x_1_1_0*y_0 - x_2_0_0*y_1 + x_2_1_0 + 2*y_0**2*y_1"],
            ["-3*x_2_0_0*y_0 + x_3_0_0 + 2*y_0**3"]
            ])


        k_counter = [
                    Moment([0, 0, 0], symbol=sympy.Integer(1)),
                    Moment([1, 0, 0], symbol=sympy.Symbol("y_0")),
                    Moment([0, 1, 0], symbol=sympy.Symbol("y_1")),
                    Moment([0, 0, 1], symbol=sympy.Symbol("y_2")),
                    Moment([0, 0, 2], symbol=sympy.Symbol("x_0_0_2")),
                    Moment([0, 1, 1], symbol=sympy.Symbol("x_0_1_1")),
                    Moment([0, 2, 0], symbol=sympy.Symbol("x_0_2_0")),
                    Moment([1, 0, 1], symbol=sympy.Symbol("x_1_0_1")),
                    Moment([1, 1, 0], symbol=sympy.Symbol("x_1_1_0")),
                    Moment([2, 0, 0], symbol=sympy.Symbol("x_2_0_0")),
                    Moment([0, 0, 3], symbol=sympy.Symbol("x_0_0_3")),
                    Moment([0, 1, 2], symbol=sympy.Symbol("x_0_1_2")),
                    Moment([0, 2, 1], symbol=sympy.Symbol("x_0_2_1")),
                    Moment([0, 3, 0], symbol=sympy.Symbol("x_0_3_0")),
                    Moment([1, 0, 2], symbol=sympy.Symbol("x_1_0_2")),
                    Moment([1, 1, 1], symbol=sympy.Symbol("x_1_1_1")),
                    Moment([1, 2, 0], symbol=sympy.Symbol("x_1_2_0")),
                    Moment([2, 0, 1], symbol=sympy.Symbol("x_2_0_1")),
                    Moment([2, 1, 0], symbol=sympy.Symbol("x_2_1_0")),
                    Moment([3, 0, 0], symbol=sympy.Symbol("x_3_0_0"))
                ]

        max_order = 2
        prob_moments = self.__problem_moments
        expected = to_sympy_matrix([
            ["c_0-c_1*y_0-(c_2*c_6*yx5)/(c_6+y_0) ** 2-(c_2*y_0*y_2)/(c_6+y_0)+(c_2*c_6*y_2*yx7)/(c_6+y_0) ** 3"],
            ["c_3*y_0-c_4*y_1"],
            ["c_4*y_1-c_5*y_2"],
            ["c_4*y_1+c_5*y_2+2*c_4*yx3-2*c_5*yx2"],
            ["c_3*yx5-c_4*yx3-c_4*y_1+c_4*yx4-c_5*yx3"],
            ["c_3*y_0+c_4*y_1-2*c_4*yx4+2*c_3*yx6"],
            ["c_4*yx6-c_1*yx5-c_5*yx5-(c_2*y_0*yx2)/(c_6+y_0)-(c_2*y_2*yx5)/(c_6+y_0)+(c_2*y_0*y_2*yx5)/(c_6+y_0) ** 2"],
            ["c_3*yx7-c_1*yx6-c_4*yx6-(c_2*y_0*yx3)/(c_6+y_0)-(c_2*y_2*yx6)/(c_6+y_0)+(c_2*y_0*y_2*yx6)/(c_6+y_0) ** 2"],
            ["(c_0*c_6 ** 3+c_0*y_0 ** 3+c_1*y_0 ** 4+c_2*y_0 ** 3*y_2-2*c_2*y_0 ** 3*yx5-2*c_1*y_0 ** 3*yx7+3*c_1*c_6 ** 2*y_0 ** 2+3*c_0*c_6*y_0 ** 2+3*c_0*c_6 ** 2*y_0+3*c_1*c_6*y_0 ** 3+c_1*c_6 ** 3*y_0+c_2*c_6 ** 2*yx5-2*c_1*c_6 ** 3*yx7+c_2*c_6*y_0*yx5-c_2*c_6*y_2*yx7+2*c_2*c_6*y_0 ** 2*y_2+c_2*c_6 ** 2*y_0*y_2-4*c_2*c_6*y_0 ** 2*yx5-2*c_2*c_6 ** 2*y_0*yx5-6*c_1*c_6*y_0 ** 2*yx7-6*c_1*c_6 ** 2*y_0*yx7-2*c_2*c_6 ** 2*y_2*yx7-2*c_2*c_6*y_0*y_2*yx7)/(c_6+y_0) ** 3"]
        ])
        closer = NormalClosure(max_order, multivariate=True)
        answer = closer.close(self.__mfk, central_from_raw_exprs,self.__n_counter, k_counter)

        self.assertTrue(sympy_expressions_equal(answer, expected))
コード例 #16
0
    def test_normal_closer_wrapper(self):

        central_from_raw_exprs = to_sympy_matrix([
            ["x_0_0_2 - y_2**2"],
            ["x_0_1_1 - y_1*y_2"],
            ["x_0_2_0 - y_1**2"],
            ["x_1_0_1 - y_0*y_2"],
            ["x_1_1_0 - y_0*y_1"],
            ["x_2_0_0 - y_0**2"],
            ["-3*x_0_0_2*y_2 + x_0_0_3 + 2*y_2**3"],
            ["-x_0_0_2*y_1 - 2*x_0_1_1*y_2 + x_0_1_2 + 2*y_1*y_2**2"],
            ["-2*x_0_1_1*y_1 - x_0_2_0*y_2 + x_0_2_1 + 2*y_1**2*y_2"],
            ["-3*x_0_2_0*y_1 + x_0_3_0 + 2*y_1**3"],
            ["-x_0_0_2*y_0 - 2*x_1_0_1*y_2 + x_1_0_2 + 2*y_0*y_2**2"],
            ["-x_0_1_1*y_0 - x_1_0_1*y_1 - x_1_1_0*y_2 + x_1_1_1 + 2*y_0*y_1*y_2"],
            ["-x_0_2_0*y_0 - 2*x_1_1_0*y_1 + x_1_2_0 + 2*y_0*y_1**2"],
            ["-2*x_1_0_1*y_0 - x_2_0_0*y_2 + x_2_0_1 + 2*y_0**2*y_2"],
            ["-2*x_1_1_0*y_0 - x_2_0_0*y_1 + x_2_1_0 + 2*y_0**2*y_1"],
            ["-3*x_2_0_0*y_0 + x_3_0_0 + 2*y_0**3"],
            ["6*x_0_0_2*y_2**2 - 4*x_0_0_3*y_2 + x_0_0_4 - 3*y_2**4"],
            ["3*x_0_0_2*y_1*y_2 - x_0_0_3*y_1 + 3*x_0_1_1*y_2**2 - 3*x_0_1_2*y_2 + x_0_1_3 - 3*y_1*y_2**3"],
            ["x_0_0_2*y_1**2 + 4*x_0_1_1*y_1*y_2 - 2*x_0_1_2*y_1 + x_0_2_0*y_2**2 - 2*x_0_2_1*y_2 + x_0_2_2 - 3*y_1**2*y_2**2"],
            ["3*x_0_1_1*y_1**2 + 3*x_0_2_0*y_1*y_2 - 3*x_0_2_1*y_1 - x_0_3_0*y_2 + x_0_3_1 - 3*y_1**3*y_2"],
            ["6*x_0_2_0*y_1**2 - 4*x_0_3_0*y_1 + x_0_4_0 - 3*y_1**4"],
            ["3*x_0_0_2*y_0*y_2 - x_0_0_3*y_0 + 3*x_1_0_1*y_2**2 - 3*x_1_0_2*y_2 + x_1_0_3 - 3*y_0*y_2**3"],
            ["x_0_0_2*y_0*y_1 + 2*x_0_1_1*y_0*y_2 - x_0_1_2*y_0 + 2*x_1_0_1*y_1*y_2 - x_1_0_2*y_1 + x_1_1_0*y_2**2 - 2*x_1_1_1*y_2 + x_1_1_2 - 3*y_0*y_1*y_2**2"],
            ["2*x_0_1_1*y_0*y_1 + x_0_2_0*y_0*y_2 - x_0_2_1*y_0 + x_1_0_1*y_1**2 + 2*x_1_1_0*y_1*y_2 - 2*x_1_1_1*y_1 - x_1_2_0*y_2 + x_1_2_1 - 3*y_0*y_1**2*y_2"],
            ["3*x_0_2_0*y_0*y_1 - x_0_3_0*y_0 + 3*x_1_1_0*y_1**2 - 3*x_1_2_0*y_1 + x_1_3_0 - 3*y_0*y_1**3"],
            ["x_0_0_2*y_0**2 + 4*x_1_0_1*y_0*y_2 - 2*x_1_0_2*y_0 + x_2_0_0*y_2**2 - 2*x_2_0_1*y_2 + x_2_0_2 - 3*y_0**2*y_2**2"],
            ["x_0_1_1*y_0**2 + 2*x_1_0_1*y_0*y_1 + 2*x_1_1_0*y_0*y_2 - 2*x_1_1_1*y_0 + x_2_0_0*y_1*y_2 - x_2_0_1*y_1 - x_2_1_0*y_2 + x_2_1_1 - 3*y_0**2*y_1*y_2"],
            ["x_0_2_0*y_0**2 + 4*x_1_1_0*y_0*y_1 - 2*x_1_2_0*y_0 + x_2_0_0*y_1**2 - 2*x_2_1_0*y_1 + x_2_2_0 - 3*y_0**2*y_1**2"],
            ["3*x_1_0_1*y_0**2 + 3*x_2_0_0*y_0*y_2 - 3*x_2_0_1*y_0 - x_3_0_0*y_2 + x_3_0_1 - 3*y_0**3*y_2"],
            ["3*x_1_1_0*y_0**2 + 3*x_2_0_0*y_0*y_1 - 3*x_2_1_0*y_0 - x_3_0_0*y_1 + x_3_1_0 - 3*y_0**3*y_1"],
            ["6*x_2_0_0*y_0**2 - 4*x_3_0_0*y_0 + x_4_0_0 - 3*y_0**4"]
            ])



        k_counter = [
            Moment([0, 0, 0], symbol=sympy.Symbol("1")),
            Moment([1, 0, 0], symbol=sympy.Symbol("y_0")),
            Moment([0, 1, 0], symbol=sympy.Symbol("y_1")),
            Moment([0, 0, 1], symbol=sympy.Symbol("y_2")),
            Moment([0, 0, 2], symbol=sympy.Symbol("x_0_0_2")),
            Moment([0, 1, 1], symbol=sympy.Symbol("x_0_1_1")),
            Moment([0, 2, 0], symbol=sympy.Symbol("x_0_2_0")),
            Moment([1, 0, 1], symbol=sympy.Symbol("x_1_0_1")),
            Moment([1, 1, 0], symbol=sympy.Symbol("x_1_1_0")),
            Moment([2, 0, 0], symbol=sympy.Symbol("x_2_0_0")),
            Moment([0, 0, 3], symbol=sympy.Symbol("x_0_0_3")),
            Moment([0, 1, 2], symbol=sympy.Symbol("x_0_1_2")),
            Moment([0, 2, 1], symbol=sympy.Symbol("x_0_2_1")),
            Moment([0, 3, 0], symbol=sympy.Symbol("x_0_3_0")),
            Moment([1, 0, 2], symbol=sympy.Symbol("x_1_0_2")),
            Moment([1, 1, 1], symbol=sympy.Symbol("x_1_1_1")),
            Moment([1, 2, 0], symbol=sympy.Symbol("x_1_2_0")),
            Moment([2, 0, 1], symbol=sympy.Symbol("x_2_0_1")),
            Moment([2, 1, 0], symbol=sympy.Symbol("x_2_1_0")),
            Moment([3, 0, 0], symbol=sympy.Symbol("x_3_0_0")),
            Moment([0, 0, 4], symbol=sympy.Symbol("x_0_0_4")),
            Moment([0, 1, 3], symbol=sympy.Symbol("x_0_1_3")),
            Moment([0, 2, 2], symbol=sympy.Symbol("x_0_2_2")),
            Moment([0, 3, 1], symbol=sympy.Symbol("x_0_3_1")),
            Moment([0, 4, 0], symbol=sympy.Symbol("x_0_4_0")),
            Moment([1, 0, 3], symbol=sympy.Symbol("x_1_0_3")),
            Moment([1, 1, 2], symbol=sympy.Symbol("x_1_1_2")),
            Moment([1, 2, 1], symbol=sympy.Symbol("x_1_2_1")),
            Moment([1, 3, 0], symbol=sympy.Symbol("x_1_3_0")),
            Moment([2, 0, 2], symbol=sympy.Symbol("x_2_0_2")),
            Moment([2, 1, 1], symbol=sympy.Symbol("x_2_1_1")),
            Moment([2, 2, 0], symbol=sympy.Symbol("x_2_2_0")),
            Moment([3, 0, 1], symbol=sympy.Symbol("x_3_0_1")),
            Moment([3, 1, 0], symbol=sympy.Symbol("x_3_1_0")),
            Moment([4, 0, 0], symbol=sympy.Symbol("x_4_0_0"))
            ]

        max_order = 3

        expected = to_sympy_matrix([
            ["c_0-c_1*y_0-(c_2*c_6*yx5)/(c_6+y_0) ** 2+(c_2*c_6*yx15)/(c_6+y_0) ** 3-(c_2*y_0*y_2)/(c_6+y_0)+(3*c_2*c_6*y_2*yx7 ** 2)/(c_6+y_0) ** 5+(c_2*c_6*y_2*yx7)/(c_6+y_0) ** 3-(c_2*c_6*y_2*yx17)/(c_6+y_0) ** 4-(3*c_2*c_6*yx5*yx7)/(c_6+y_0) ** 4"],
            ["c_3*y_0-c_4*y_1"],
            ["c_4*y_1-c_5*y_2"],
            ["c_4*y_1+c_5*y_2+2*c_4*yx3-2*c_5*yx2"],
            ["c_3*yx5-c_4*yx3-c_4*y_1+c_4*yx4-c_5*yx3"],
            ["c_3*y_0+c_4*y_1-2*c_4*yx4+2*c_3*yx6"],
            ["-(c_2*y_0 ** 4*yx2+c_1*y_0 ** 4*yx5-c_4*y_0 ** 4*yx6+c_5*y_0 ** 4*yx5-2*c_2*c_6 ** 2*yx5 ** 2+c_1*c_6 ** 4*yx5-c_4*c_6 ** 4*yx6+c_5*c_6 ** 4*yx5+c_2*c_6 ** 3*yx12+3*c_2*c_6*y_0 ** 3*yx2+c_2*c_6 ** 3*y_0*yx2+4*c_1*c_6*y_0 ** 3*yx5+4*c_1*c_6 ** 3*y_0*yx5-2*c_2*c_6*y_0*yx5 ** 2+c_2*c_6 ** 3*y_2*yx5-4*c_4*c_6*y_0 ** 3*yx6-4*c_4*c_6 ** 3*y_0*yx6+4*c_5*c_6*y_0 ** 3*yx5+4*c_5*c_6 ** 3*y_0*yx5+c_2*c_6*y_0 ** 2*yx12+2*c_2*c_6 ** 2*y_0*yx12-c_2*c_6 ** 2*y_2*yx15-c_2*c_6 ** 2*yx2*yx7+3*c_2*c_6 ** 2*y_0 ** 2*yx2+6*c_1*c_6 ** 2*y_0 ** 2*yx5-6*c_4*c_6 ** 2*y_0 ** 2*yx6+6*c_5*c_6 ** 2*y_0 ** 2*yx5-c_2*c_6*y_0*y_2*yx15-c_2*c_6*y_0*yx2*yx7+3*c_2*c_6*y_2*yx5*yx7+c_2*c_6*y_0 ** 2*y_2*yx5+2*c_2*c_6 ** 2*y_0*y_2*yx5)/(c_6+y_0) ** 4"],
            ["-(c_2*y_0 ** 4*yx3+c_1*y_0 ** 4*yx6-c_3*y_0 ** 4*yx7+c_4*y_0 ** 4*yx6+c_1*c_6 ** 4*yx6-c_3*c_6 ** 4*yx7+c_4*c_6 ** 4*yx6+c_2*c_6 ** 3*yx13+3*c_2*c_6*y_0 ** 3*yx3+c_2*c_6 ** 3*y_0*yx3+4*c_1*c_6*y_0 ** 3*yx6+4*c_1*c_6 ** 3*y_0*yx6+c_2*c_6 ** 3*y_2*yx6-4*c_3*c_6*y_0 ** 3*yx7-4*c_3*c_6 ** 3*y_0*yx7+4*c_4*c_6*y_0 ** 3*yx6+4*c_4*c_6 ** 3*y_0*yx6+c_2*c_6*y_0 ** 2*yx13+2*c_2*c_6 ** 2*y_0*yx13-c_2*c_6 ** 2*y_2*yx16-c_2*c_6 ** 2*yx3*yx7-2*c_2*c_6 ** 2*yx5*yx6+3*c_2*c_6 ** 2*y_0 ** 2*yx3+6*c_1*c_6 ** 2*y_0 ** 2*yx6-6*c_3*c_6 ** 2*y_0 ** 2*yx7+6*c_4*c_6 ** 2*y_0 ** 2*yx6-c_2*c_6*y_0*y_2*yx16-c_2*c_6*y_0*yx3*yx7-2*c_2*c_6*y_0*yx5*yx6+3*c_2*c_6*y_2*yx6*yx7+c_2*c_6*y_0 ** 2*y_2*yx6+2*c_2*c_6 ** 2*y_0*y_2*yx6)/(c_6+y_0) ** 4"],
            ["(c_0*c_6 ** 5+c_0*y_0 ** 5+c_1*y_0 ** 6+c_2*y_0 ** 5*y_2-2*c_2*y_0 ** 5*yx5-2*c_1*y_0 ** 5*yx7+10*c_0*c_6 ** 2*y_0 ** 3+10*c_0*c_6 ** 3*y_0 ** 2+10*c_1*c_6 ** 2*y_0 ** 4+10*c_1*c_6 ** 3*y_0 ** 3+5*c_1*c_6 ** 4*y_0 ** 2+5*c_0*c_6*y_0 ** 4+5*c_0*c_6 ** 4*y_0+5*c_1*c_6*y_0 ** 5+c_1*c_6 ** 5*y_0+c_2*c_6 ** 4*yx5-2*c_1*c_6 ** 5*yx7-c_2*c_6 ** 3*yx15-2*c_2*c_6 ** 4*yx15+4*c_2*c_6*y_0 ** 4*y_2+c_2*c_6 ** 4*y_0*y_2+c_2*c_6*y_0 ** 3*yx5+3*c_2*c_6 ** 3*y_0*yx5-8*c_2*c_6*y_0 ** 4*yx5-2*c_2*c_6 ** 4*y_0*yx5-10*c_1*c_6*y_0 ** 4*yx7-10*c_1*c_6 ** 4*y_0*yx7-3*c_2*c_6*y_2*yx7 ** 2-c_2*c_6 ** 3*y_2*yx7-2*c_2*c_6 ** 4*y_2*yx7-c_2*c_6*y_0 ** 2*yx15-2*c_2*c_6 ** 2*y_0*yx15-2*c_2*c_6*y_0 ** 3*yx15-6*c_2*c_6 ** 3*y_0*yx15+c_2*c_6 ** 2*y_2*yx17+2*c_2*c_6 ** 3*y_2*yx17+3*c_2*c_6 ** 2*yx5*yx7+6*c_2*c_6 ** 3*yx5*yx7+6*c_2*c_6 ** 2*y_0 ** 3*y_2+4*c_2*c_6 ** 3*y_0 ** 2*y_2+3*c_2*c_6 ** 2*y_0 ** 2*yx5-12*c_2*c_6 ** 2*y_0 ** 3*yx5-8*c_2*c_6 ** 3*y_0 ** 2*yx5-20*c_1*c_6 ** 2*y_0 ** 3*yx7-20*c_1*c_6 ** 3*y_0 ** 2*yx7-6*c_2*c_6 ** 2*y_2*yx7 ** 2-6*c_2*c_6 ** 2*y_0 ** 2*yx15-6*c_2*c_6 ** 2*y_0 ** 2*y_2*yx7+c_2*c_6*y_0*y_2*yx17+3*c_2*c_6*y_0*yx5*yx7-6*c_2*c_6*y_0*y_2*yx7 ** 2-c_2*c_6*y_0 ** 2*y_2*yx7-2*c_2*c_6 ** 2*y_0*y_2*yx7-2*c_2*c_6*y_0 ** 3*y_2*yx7-6*c_2*c_6 ** 3*y_0*y_2*yx7+2*c_2*c_6*y_0 ** 2*y_2*yx17+4*c_2*c_6 ** 2*y_0*y_2*yx17+6*c_2*c_6*y_0 ** 2*yx5*yx7+12*c_2*c_6 ** 2*y_0*yx5*yx7)/(c_6+y_0) ** 5"],
            ["c_4*y_1-c_5*y_2+3*c_4*yx3+3*c_5*yx2+3*c_4*yx9-3*c_5*yx8"],
            ["c_4*yx4-2*c_4*yx3-c_4*y_1+c_5*yx3-c_4*yx9+2*c_4*yx10-2*c_5*yx9+c_3*yx12"],
            ["c_4*y_1+c_4*yx3+c_3*yx5-2*c_4*yx4-2*c_4*yx10+c_4*yx11-c_5*yx10+2*c_3*yx13"],
            ["c_3*y_0-c_4*y_1+3*c_4*yx4+3*c_3*yx6-3*c_4*yx11+3*c_3*yx14"],
            ["-(c_2*y_0 ** 5*yx8-c_4*y_0 ** 5*yx6-c_5*y_0 ** 5*yx5+c_1*y_0 ** 5*yx12-2*c_4*y_0 ** 5*yx13+2*c_5*y_0 ** 5*yx12-c_4*c_6 ** 5*yx6-c_5*c_6 ** 5*yx5+c_1*c_6 ** 5*yx12-2*c_4*c_6 ** 5*yx13+2*c_5*c_6 ** 5*yx12+4*c_2*c_6*y_0 ** 4*yx8+c_2*c_6 ** 4*y_0*yx8-5*c_4*c_6*y_0 ** 4*yx6-5*c_4*c_6 ** 4*y_0*yx6-5*c_5*c_6*y_0 ** 4*yx5-5*c_5*c_6 ** 4*y_0*yx5+5*c_1*c_6*y_0 ** 4*yx12+5*c_1*c_6 ** 4*y_0*yx12+c_2*c_6 ** 4*y_2*yx12-10*c_4*c_6*y_0 ** 4*yx13-10*c_4*c_6 ** 4*y_0*yx13+10*c_5*c_6*y_0 ** 4*yx12+10*c_5*c_6 ** 4*y_0*yx12+2*c_2*c_6 ** 4*yx2*yx5+c_2*c_6 ** 3*yx2*yx15-2*c_2*c_6 ** 3*y_2*yx5 ** 2+6*c_2*c_6 ** 2*y_0 ** 3*yx8+4*c_2*c_6 ** 3*y_0 ** 2*yx8-10*c_4*c_6 ** 2*y_0 ** 3*yx6-10*c_4*c_6 ** 3*y_0 ** 2*yx6-10*c_5*c_6 ** 2*y_0 ** 3*yx5-10*c_5*c_6 ** 3*y_0 ** 2*yx5+10*c_1*c_6 ** 2*y_0 ** 3*yx12+10*c_1*c_6 ** 3*y_0 ** 2*yx12-20*c_4*c_6 ** 2*y_0 ** 3*yx13-20*c_4*c_6 ** 3*y_0 ** 2*yx13+20*c_5*c_6 ** 2*y_0 ** 3*yx12+20*c_5*c_6 ** 3*y_0 ** 2*yx12-2*c_2*c_6*y_0 ** 2*y_2*yx5 ** 2-4*c_2*c_6 ** 2*y_0*y_2*yx5 ** 2+3*c_2*c_6 ** 2*y_0 ** 2*y_2*yx12+6*c_2*c_6 ** 2*y_0 ** 2*yx2*yx5+c_2*c_6*y_0 ** 3*y_2*yx12+3*c_2*c_6 ** 3*y_0*y_2*yx12+2*c_2*c_6*y_0 ** 3*yx2*yx5+6*c_2*c_6 ** 3*y_0*yx2*yx5+3*c_2*c_6*y_2*yx2*yx7 ** 2+c_2*c_6*y_0 ** 2*yx2*yx15+2*c_2*c_6 ** 2*y_0*yx2*yx15-c_2*c_6 ** 2*y_2*yx2*yx17-3*c_2*c_6 ** 2*yx2*yx5*yx7-c_2*c_6*y_0*y_2*yx2*yx17-3*c_2*c_6*y_0*yx2*yx5*yx7)/(c_6+y_0) ** 5"],
            ["-(c_4*y_0 ** 5*yx6+c_2*y_0 ** 5*yx9+c_1*y_0 ** 5*yx13+c_4*y_0 ** 5*yx13-c_3*y_0 ** 5*yx15-c_4*y_0 ** 5*yx14+c_5*y_0 ** 5*yx13+c_4*c_6 ** 5*yx6+c_1*c_6 ** 5*yx13+c_4*c_6 ** 5*yx13-c_3*c_6 ** 5*yx15-c_4*c_6 ** 5*yx14+c_5*c_6 ** 5*yx13+5*c_4*c_6*y_0 ** 4*yx6+5*c_4*c_6 ** 4*y_0*yx6+4*c_2*c_6*y_0 ** 4*yx9+c_2*c_6 ** 4*y_0*yx9+5*c_1*c_6*y_0 ** 4*yx13+5*c_1*c_6 ** 4*y_0*yx13+c_2*c_6 ** 4*y_2*yx13+5*c_4*c_6*y_0 ** 4*yx13+5*c_4*c_6 ** 4*y_0*yx13-5*c_3*c_6*y_0 ** 4*yx15-5*c_3*c_6 ** 4*y_0*yx15-5*c_4*c_6*y_0 ** 4*yx14-5*c_4*c_6 ** 4*y_0*yx14+5*c_5*c_6*y_0 ** 4*yx13+5*c_5*c_6 ** 4*y_0*yx13+c_2*c_6 ** 4*yx2*yx6+c_2*c_6 ** 4*yx3*yx5+c_2*c_6 ** 3*yx3*yx15+10*c_4*c_6 ** 2*y_0 ** 3*yx6+10*c_4*c_6 ** 3*y_0 ** 2*yx6+6*c_2*c_6 ** 2*y_0 ** 3*yx9+4*c_2*c_6 ** 3*y_0 ** 2*yx9+10*c_1*c_6 ** 2*y_0 ** 3*yx13+10*c_1*c_6 ** 3*y_0 ** 2*yx13+10*c_4*c_6 ** 2*y_0 ** 3*yx13+10*c_4*c_6 ** 3*y_0 ** 2*yx13-10*c_3*c_6 ** 2*y_0 ** 3*yx15-10*c_3*c_6 ** 3*y_0 ** 2*yx15-10*c_4*c_6 ** 2*y_0 ** 3*yx14-10*c_4*c_6 ** 3*y_0 ** 2*yx14+10*c_5*c_6 ** 2*y_0 ** 3*yx13+10*c_5*c_6 ** 3*y_0 ** 2*yx13+3*c_2*c_6 ** 2*y_0 ** 2*y_2*yx13+3*c_2*c_6 ** 2*y_0 ** 2*yx2*yx6+3*c_2*c_6 ** 2*y_0 ** 2*yx3*yx5+c_2*c_6*y_0 ** 3*y_2*yx13+3*c_2*c_6 ** 3*y_0*y_2*yx13+c_2*c_6*y_0 ** 3*yx2*yx6+c_2*c_6*y_0 ** 3*yx3*yx5+3*c_2*c_6 ** 3*y_0*yx2*yx6+3*c_2*c_6 ** 3*y_0*yx3*yx5+3*c_2*c_6*y_2*yx3*yx7 ** 2-2*c_2*c_6 ** 3*y_2*yx5*yx6+c_2*c_6*y_0 ** 2*yx3*yx15+2*c_2*c_6 ** 2*y_0*yx3*yx15-c_2*c_6 ** 2*y_2*yx3*yx17-3*c_2*c_6 ** 2*yx3*yx5*yx7-c_2*c_6*y_0*y_2*yx3*yx17-3*c_2*c_6*y_0*yx3*yx5*yx7-2*c_2*c_6*y_0 ** 2*y_2*yx5*yx6-4*c_2*c_6 ** 2*y_0*y_2*yx5*yx6)/(c_6+y_0) ** 5"],
            ["-(c_2*y_0 ** 5*yx10-c_4*y_0 ** 5*yx6-c_3*y_0 ** 5*yx7+c_1*y_0 ** 5*yx14+2*c_4*y_0 ** 5*yx14-2*c_3*y_0 ** 5*yx16-c_3*c_6 ** 5*yx7-c_4*c_6 ** 5*yx6+c_1*c_6 ** 5*yx14+2*c_4*c_6 ** 5*yx14-2*c_3*c_6 ** 5*yx16-5*c_3*c_6*y_0 ** 4*yx7-5*c_3*c_6 ** 4*y_0*yx7-5*c_4*c_6*y_0 ** 4*yx6-5*c_4*c_6 ** 4*y_0*yx6+4*c_2*c_6*y_0 ** 4*yx10+c_2*c_6 ** 4*y_0*yx10+5*c_1*c_6*y_0 ** 4*yx14+5*c_1*c_6 ** 4*y_0*yx14+c_2*c_6 ** 4*y_2*yx14+10*c_4*c_6*y_0 ** 4*yx14+10*c_4*c_6 ** 4*y_0*yx14-10*c_3*c_6*y_0 ** 4*yx16-10*c_3*c_6 ** 4*y_0*yx16+2*c_2*c_6 ** 4*yx3*yx6+c_2*c_6 ** 3*yx4*yx15-2*c_2*c_6 ** 3*y_2*yx6 ** 2-10*c_3*c_6 ** 2*y_0 ** 3*yx7-10*c_3*c_6 ** 3*y_0 ** 2*yx7-10*c_4*c_6 ** 2*y_0 ** 3*yx6-10*c_4*c_6 ** 3*y_0 ** 2*yx6+6*c_2*c_6 ** 2*y_0 ** 3*yx10+4*c_2*c_6 ** 3*y_0 ** 2*yx10+10*c_1*c_6 ** 2*y_0 ** 3*yx14+10*c_1*c_6 ** 3*y_0 ** 2*yx14+20*c_4*c_6 ** 2*y_0 ** 3*yx14+20*c_4*c_6 ** 3*y_0 ** 2*yx14-20*c_3*c_6 ** 2*y_0 ** 3*yx16-20*c_3*c_6 ** 3*y_0 ** 2*yx16-2*c_2*c_6*y_0 ** 2*y_2*yx6 ** 2-4*c_2*c_6 ** 2*y_0*y_2*yx6 ** 2+3*c_2*c_6 ** 2*y_0 ** 2*y_2*yx14+6*c_2*c_6 ** 2*y_0 ** 2*yx3*yx6+c_2*c_6*y_0 ** 3*y_2*yx14+3*c_2*c_6 ** 3*y_0*y_2*yx14+2*c_2*c_6*y_0 ** 3*yx3*yx6+6*c_2*c_6 ** 3*y_0*yx3*yx6+3*c_2*c_6*y_2*yx4*yx7 ** 2+c_2*c_6*y_0 ** 2*yx4*yx15+2*c_2*c_6 ** 2*y_0*yx4*yx15-c_2*c_6 ** 2*y_2*yx4*yx17-3*c_2*c_6 ** 2*yx4*yx5*yx7-c_2*c_6*y_0*y_2*yx4*yx17-3*c_2*c_6*y_0*yx4*yx5*yx7)/(c_6+y_0) ** 5"],
            ["-(2*c_2*y_0 ** 5*yx12-c_1*y_0 ** 5*yx5-c_2*y_0 ** 5*yx2+2*c_1*y_0 ** 5*yx15-c_4*y_0 ** 5*yx16+c_5*y_0 ** 5*yx15+2*c_2*c_6 ** 3*yx5 ** 2+2*c_2*c_6 ** 4*yx5 ** 2-c_1*c_6 ** 5*yx5-c_2*c_6 ** 4*yx12+2*c_1*c_6 ** 5*yx15-c_4*c_6 ** 5*yx16+c_5*c_6 ** 5*yx15+6*c_2*c_6 ** 2*y_0 ** 2*yx5 ** 2-4*c_2*c_6*y_0 ** 4*yx2-c_2*c_6 ** 4*y_0*yx2-5*c_1*c_6*y_0 ** 4*yx5-5*c_1*c_6 ** 4*y_0*yx5-c_2*c_6 ** 4*y_2*yx5-c_2*c_6*y_0 ** 3*yx12-3*c_2*c_6 ** 3*y_0*yx12+8*c_2*c_6*y_0 ** 4*yx12+2*c_2*c_6 ** 4*y_0*yx12+10*c_1*c_6*y_0 ** 4*yx15+10*c_1*c_6 ** 4*y_0*yx15+c_2*c_6 ** 3*y_2*yx15+2*c_2*c_6 ** 4*y_2*yx15-5*c_4*c_6*y_0 ** 4*yx16-5*c_4*c_6 ** 4*y_0*yx16+5*c_5*c_6*y_0 ** 4*yx15+5*c_5*c_6 ** 4*y_0*yx15+c_2*c_6 ** 3*yx2*yx7+2*c_2*c_6 ** 4*yx2*yx7+2*c_2*c_6 ** 3*yx5*yx15-6*c_2*c_6 ** 2*y_0 ** 3*yx2-4*c_2*c_6 ** 3*y_0 ** 2*yx2-10*c_1*c_6 ** 2*y_0 ** 3*yx5-10*c_1*c_6 ** 3*y_0 ** 2*yx5+2*c_2*c_6*y_0 ** 2*yx5 ** 2+4*c_2*c_6 ** 2*y_0*yx5 ** 2+2*c_2*c_6*y_0 ** 3*yx5 ** 2+6*c_2*c_6 ** 3*y_0*yx5 ** 2-3*c_2*c_6 ** 2*y_0 ** 2*yx12+12*c_2*c_6 ** 2*y_0 ** 3*yx12+8*c_2*c_6 ** 3*y_0 ** 2*yx12+20*c_1*c_6 ** 2*y_0 ** 3*yx15+20*c_1*c_6 ** 3*y_0 ** 2*yx15-10*c_4*c_6 ** 2*y_0 ** 3*yx16-10*c_4*c_6 ** 3*y_0 ** 2*yx16+10*c_5*c_6 ** 2*y_0 ** 3*yx15+10*c_5*c_6 ** 3*y_0 ** 2*yx15-6*c_2*c_6 ** 2*yx5 ** 2*yx7-3*c_2*c_6 ** 2*y_0 ** 2*y_2*yx5+6*c_2*c_6 ** 2*y_0 ** 2*y_2*yx15+6*c_2*c_6 ** 2*y_0 ** 2*yx2*yx7-c_2*c_6*y_0 ** 3*y_2*yx5-3*c_2*c_6 ** 3*y_0*y_2*yx5+c_2*c_6*y_0 ** 2*y_2*yx15+2*c_2*c_6 ** 2*y_0*y_2*yx15+2*c_2*c_6*y_0 ** 3*y_2*yx15+6*c_2*c_6 ** 3*y_0*y_2*yx15+c_2*c_6*y_0 ** 2*yx2*yx7+2*c_2*c_6 ** 2*y_0*yx2*yx7+2*c_2*c_6*y_0 ** 3*yx2*yx7+6*c_2*c_6 ** 3*y_0*yx2*yx7-6*c_2*c_6*y_0*yx5 ** 2*yx7+6*c_2*c_6*y_2*yx5*yx7 ** 2-3*c_2*c_6 ** 2*y_2*yx5*yx7-4*c_2*c_6 ** 3*y_2*yx5*yx7+2*c_2*c_6*y_0 ** 2*yx5*yx15+4*c_2*c_6 ** 2*y_0*yx5*yx15-2*c_2*c_6 ** 2*y_2*yx5*yx17-3*c_2*c_6*y_0*y_2*yx5*yx7-2*c_2*c_6*y_0*y_2*yx5*yx17-4*c_2*c_6*y_0 ** 2*y_2*yx5*yx7-8*c_2*c_6 ** 2*y_0*y_2*yx5*yx7)/(c_6+y_0) ** 5"],
            ["-(2*c_2*y_0 ** 5*yx13-c_1*y_0 ** 5*yx6-c_2*y_0 ** 5*yx3+2*c_1*y_0 ** 5*yx16-c_3*y_0 ** 5*yx17+c_4*y_0 ** 5*yx16-c_1*c_6 ** 5*yx6-c_2*c_6 ** 4*yx13+2*c_1*c_6 ** 5*yx16-c_3*c_6 ** 5*yx17+c_4*c_6 ** 5*yx16-4*c_2*c_6*y_0 ** 4*yx3-c_2*c_6 ** 4*y_0*yx3-5*c_1*c_6*y_0 ** 4*yx6-5*c_1*c_6 ** 4*y_0*yx6-c_2*c_6 ** 4*y_2*yx6-c_2*c_6*y_0 ** 3*yx13-3*c_2*c_6 ** 3*y_0*yx13+8*c_2*c_6*y_0 ** 4*yx13+2*c_2*c_6 ** 4*y_0*yx13+10*c_1*c_6*y_0 ** 4*yx16+10*c_1*c_6 ** 4*y_0*yx16+c_2*c_6 ** 3*y_2*yx16+2*c_2*c_6 ** 4*y_2*yx16-5*c_3*c_6*y_0 ** 4*yx17-5*c_3*c_6 ** 4*y_0*yx17+5*c_4*c_6*y_0 ** 4*yx16+5*c_4*c_6 ** 4*y_0*yx16+c_2*c_6 ** 3*yx3*yx7+2*c_2*c_6 ** 3*yx5*yx6+2*c_2*c_6 ** 4*yx3*yx7+2*c_2*c_6 ** 4*yx5*yx6+2*c_2*c_6 ** 3*yx6*yx15-6*c_2*c_6 ** 2*y_0 ** 3*yx3-4*c_2*c_6 ** 3*y_0 ** 2*yx3-10*c_1*c_6 ** 2*y_0 ** 3*yx6-10*c_1*c_6 ** 3*y_0 ** 2*yx6-3*c_2*c_6 ** 2*y_0 ** 2*yx13+12*c_2*c_6 ** 2*y_0 ** 3*yx13+8*c_2*c_6 ** 3*y_0 ** 2*yx13+20*c_1*c_6 ** 2*y_0 ** 3*yx16+20*c_1*c_6 ** 3*y_0 ** 2*yx16-10*c_3*c_6 ** 2*y_0 ** 3*yx17-10*c_3*c_6 ** 3*y_0 ** 2*yx17+10*c_4*c_6 ** 2*y_0 ** 3*yx16+10*c_4*c_6 ** 3*y_0 ** 2*yx16-3*c_2*c_6 ** 2*y_0 ** 2*y_2*yx6+6*c_2*c_6 ** 2*y_0 ** 2*y_2*yx16+6*c_2*c_6 ** 2*y_0 ** 2*yx3*yx7+6*c_2*c_6 ** 2*y_0 ** 2*yx5*yx6-c_2*c_6*y_0 ** 3*y_2*yx6-3*c_2*c_6 ** 3*y_0*y_2*yx6+c_2*c_6*y_0 ** 2*y_2*yx16+2*c_2*c_6 ** 2*y_0*y_2*yx16+2*c_2*c_6*y_0 ** 3*y_2*yx16+6*c_2*c_6 ** 3*y_0*y_2*yx16+c_2*c_6*y_0 ** 2*yx3*yx7+2*c_2*c_6 ** 2*y_0*yx3*yx7+2*c_2*c_6*y_0 ** 2*yx5*yx6+2*c_2*c_6*y_0 ** 3*yx3*yx7+4*c_2*c_6 ** 2*y_0*yx5*yx6+6*c_2*c_6 ** 3*y_0*yx3*yx7+2*c_2*c_6*y_0 ** 3*yx5*yx6+6*c_2*c_6 ** 3*y_0*yx5*yx6+6*c_2*c_6*y_2*yx6*yx7 ** 2-3*c_2*c_6 ** 2*y_2*yx6*yx7-4*c_2*c_6 ** 3*y_2*yx6*yx7+2*c_2*c_6*y_0 ** 2*yx6*yx15+4*c_2*c_6 ** 2*y_0*yx6*yx15-2*c_2*c_6 ** 2*y_2*yx6*yx17-6*c_2*c_6 ** 2*yx5*yx6*yx7-3*c_2*c_6*y_0*y_2*yx6*yx7-2*c_2*c_6*y_0*y_2*yx6*yx17-6*c_2*c_6*y_0*yx5*yx6*yx7-4*c_2*c_6*y_0 ** 2*y_2*yx6*yx7-8*c_2*c_6 ** 2*y_0*y_2*yx6*yx7)/(c_6+y_0) ** 5"],
            ["-(c_1*y_0 ** 6-c_0*y_0 ** 5-c_0*c_6 ** 5+c_2*y_0 ** 5*y_2-3*c_2*y_0 ** 5*yx5-3*c_1*y_0 ** 5*yx7+3*c_2*y_0 ** 5*yx15+3*c_1*y_0 ** 5*yx17-10*c_0*c_6 ** 2*y_0 ** 3-10*c_0*c_6 ** 3*y_0 ** 2+10*c_1*c_6 ** 2*y_0 ** 4+10*c_1*c_6 ** 3*y_0 ** 3+5*c_1*c_6 ** 4*y_0 ** 2-5*c_0*c_6*y_0 ** 4-5*c_0*c_6 ** 4*y_0+5*c_1*c_6*y_0 ** 5+c_1*c_6 ** 5*y_0+c_2*c_6 ** 4*yx5-3*c_1*c_6 ** 5*yx7-c_2*c_6 ** 3*yx15-3*c_2*c_6 ** 4*yx15+3*c_1*c_6 ** 5*yx17+4*c_2*c_6*y_0 ** 4*y_2+c_2*c_6 ** 4*y_0*y_2+c_2*c_6*y_0 ** 3*yx5+3*c_2*c_6 ** 3*y_0*yx5-12*c_2*c_6*y_0 ** 4*yx5-3*c_2*c_6 ** 4*y_0*yx5-15*c_1*c_6*y_0 ** 4*yx7-15*c_1*c_6 ** 4*y_0*yx7-3*c_2*c_6*y_2*yx7 ** 2+9*c_2*c_6*y_2*yx7 ** 3-c_2*c_6 ** 3*y_2*yx7-3*c_2*c_6 ** 4*y_2*yx7-c_2*c_6*y_0 ** 2*yx15-2*c_2*c_6 ** 2*y_0*yx15-3*c_2*c_6*y_0 ** 3*yx15-9*c_2*c_6 ** 3*y_0*yx15+12*c_2*c_6*y_0 ** 4*yx15+3*c_2*c_6 ** 4*y_0*yx15+15*c_1*c_6*y_0 ** 4*yx17+15*c_1*c_6 ** 4*y_0*yx17+c_2*c_6 ** 2*y_2*yx17+3*c_2*c_6 ** 3*y_2*yx17+3*c_2*c_6 ** 4*y_2*yx17+3*c_2*c_6 ** 2*yx5*yx7+9*c_2*c_6 ** 3*yx5*yx7+6*c_2*c_6 ** 4*yx5*yx7+3*c_2*c_6 ** 3*yx7*yx15+6*c_2*c_6 ** 2*y_0 ** 3*y_2+4*c_2*c_6 ** 3*y_0 ** 2*y_2+3*c_2*c_6 ** 2*y_0 ** 2*yx5-18*c_2*c_6 ** 2*y_0 ** 3*yx5-12*c_2*c_6 ** 3*y_0 ** 2*yx5-30*c_1*c_6 ** 2*y_0 ** 3*yx7-30*c_1*c_6 ** 3*y_0 ** 2*yx7-9*c_2*c_6 ** 2*y_2*yx7 ** 2-6*c_2*c_6 ** 3*y_2*yx7 ** 2-9*c_2*c_6 ** 2*y_0 ** 2*yx15+18*c_2*c_6 ** 2*y_0 ** 3*yx15+12*c_2*c_6 ** 3*y_0 ** 2*yx15+30*c_1*c_6 ** 2*y_0 ** 3*yx17+30*c_1*c_6 ** 3*y_0 ** 2*yx17-9*c_2*c_6 ** 2*yx5*yx7 ** 2-6*c_2*c_6*y_0 ** 2*y_2*yx7 ** 2-12*c_2*c_6 ** 2*y_0*y_2*yx7 ** 2-9*c_2*c_6 ** 2*y_0 ** 2*y_2*yx7+9*c_2*c_6 ** 2*y_0 ** 2*y_2*yx17+18*c_2*c_6 ** 2*y_0 ** 2*yx5*yx7+c_2*c_6*y_0*y_2*yx17+3*c_2*c_6*y_0*yx5*yx7-9*c_2*c_6*y_0*y_2*yx7 ** 2-c_2*c_6*y_0 ** 2*y_2*yx7-2*c_2*c_6 ** 2*y_0*y_2*yx7-3*c_2*c_6*y_0 ** 3*y_2*yx7-9*c_2*c_6 ** 3*y_0*y_2*yx7+3*c_2*c_6*y_0 ** 2*y_2*yx17+6*c_2*c_6 ** 2*y_0*y_2*yx17+3*c_2*c_6*y_0 ** 3*y_2*yx17+9*c_2*c_6 ** 3*y_0*y_2*yx17-9*c_2*c_6*y_0*yx5*yx7 ** 2+9*c_2*c_6*y_0 ** 2*yx5*yx7+18*c_2*c_6 ** 2*y_0*yx5*yx7+6*c_2*c_6*y_0 ** 3*yx5*yx7+18*c_2*c_6 ** 3*y_0*yx5*yx7+3*c_2*c_6*y_0 ** 2*yx7*yx15+6*c_2*c_6 ** 2*y_0*yx7*yx15-3*c_2*c_6 ** 2*y_2*yx7*yx17-3*c_2*c_6*y_0*y_2*yx7*yx17)/(c_6+y_0) ** 5"]
        ])


        closer = NormalClosure(max_order, multivariate=True)
        answer = closer.close(self.__mfk, central_from_raw_exprs,self.__n_counter, k_counter)

        self.assertTrue(sympy_expressions_equal(answer, expected))
コード例 #17
0
 def __eq__(self, other):
     if not isinstance(other, self.__class__):
         return False
     return self.parameters == other.parameters \
                and other.left_hand_side_descriptors == self.left_hand_side_descriptors \
                and sympy_expressions_equal(other.right_hand_side, self.right_hand_side)