Exemplo n.º 1
0
    def test_symbolic_evaluation(self):
        e = ExpressionVector([['a * b + c', 'a + d'], ['a', 3]])
        params = {'a': 2, 'b': 1.5, 'c': -7, 'd': 9}

        expected = ExpressionVector([[2 * 1.5 - 7, 2 + 9], [2, 3]])
        evaluated = e.evaluate_symbolic(params)

        np.testing.assert_equal(evaluated.underlying_expression,
                                expected.underlying_expression)
Exemplo n.º 2
0
    def test_evaluate_numeric_2d(self) -> None:
        e = ExpressionVector([['a * b + c', 'a + d'], ['a', 3]])
        params = {'a': 2, 'b': 1.5, 'c': -7, 'd': 9}
        np.testing.assert_equal(np.array([[2 * 1.5 - 7, 2 + 9], [2, 3]]),
                                e.evaluate_numeric(**params))

        with self.assertRaises(NonNumericEvaluation):
            params['a'] = sympify('h')
            e.evaluate_numeric(**params)
Exemplo n.º 3
0
    def test_partial_evaluation(self):
        e = ExpressionVector(['a * b + c', 'a + d'])

        params = {'a': 2, 'b': 1.5, 'c': -7}

        expected = ExpressionVector([2 * 1.5 - 7, '2 + d'])
        evaluated = e.evaluate_symbolic(params)

        np.testing.assert_equal(evaluated.underlying_expression,
                                expected.underlying_expression)
Exemplo n.º 4
0
    def test_make(self):
        self.assertTrue(Expression.make('a') == 'a')
        self.assertTrue(Expression.make('a + b') == 'a + b')
        self.assertTrue(Expression.make(9) == 9)

        self.assertIsInstance(Expression.make([1, 'a']), ExpressionVector)

        self.assertIsInstance(ExpressionScalar.make('a'), ExpressionScalar)
        self.assertIsInstance(ExpressionVector.make(['a']), ExpressionVector)
Exemplo n.º 5
0
    def test_partial_evaluation_vectorized(self) -> None:
        e = ExpressionScalar('a[i] * c')

        params = {'c': np.array([[1, 2], [3, 4]])}

        evaluated = e.evaluate_symbolic(params)
        expected = ExpressionVector([['a[i] * 1', 'a[i] * 2'],
                                     ['a[i] * 3', 'a[i] * 4']])

        np.testing.assert_equal(evaluated.underlying_expression,
                                expected.underlying_expression)
Exemplo n.º 6
0
    def test_eq(self):
        e1 = ExpressionVector([1, 2])
        e2 = ExpressionVector(['1', '2'])
        e3 = ExpressionVector(['1', 'a'])
        e4 = ExpressionVector([1, 'a'])
        e5 = ExpressionVector([1, 'a', 3])
        e6 = ExpressionVector([1, 1, '1'])
        e7 = ExpressionVector(['a'])

        self.assertEqual(e1, e2)
        self.assertEqual(e3, e4)
        self.assertNotEqual(e4, e5)

        self.assertEqual(e1, [1, 2])
        self.assertNotEqual(e6, 1)
        self.assertEqual(e7, ExpressionScalar('a'))
Exemplo n.º 7
0
    def test_numeric_expression(self):
        numbers = np.linspace(1, 2, num=5)

        e = ExpressionVector(numbers)

        np.testing.assert_equal(e.underlying_expression, numbers)