def test_taylor_model(self):
        a, b = parameters('a, b')
        x, y, z = variables('x, y, z')

        model = Model({y: a * x + b})
        appr = TaylorModel(model)
        self.assertEqual(set([a, b]), set(appr.params))
        appr.p0 = {a: 2.0, b: 5.0}
        self.assertEqual(set(appr.p0.keys()),
                         set(appr.params_0[p] for p in appr.params))
        self.assertTrue(LinearLeastSquares.is_linear(appr))

        model = Model({z: a * x**2 + b * y**2})
        appr = TaylorModel(model)
        appr.p0 = {a: 2, b: 5}
        model = Model({z: a * x**2 + b * y**2})
        appr_2 = TaylorModel(model)
        appr_2.p0 = {a: 1, b: 1}
        self.assertTrue(appr == appr_2)

        model = Model({y: a * sympy.exp(x * b)})
        appr = TaylorModel(model)
        appr.p0 = {a: 2.0, b: 5.0}
        self.assertTrue(LinearLeastSquares.is_linear(appr))

        model = Model({y: sympy.sin(a * x)})
        appr = TaylorModel(model)
        appr.p0 = {a: 0.0}
        self.assertTrue(LinearLeastSquares.is_linear(appr))
Beispiel #2
0
    def test_taylor_model(self):
        a, b = parameters('a, b')
        x, y, z = variables('x, y, z')

        model = Model({y: a * x + b})
        appr = TaylorModel(model)
        self.assertEqual(set([a, b]), set(appr.params))
        appr.p0 = {a: 2.0, b: 5.0}
        self.assertEqual(set(appr.p0.keys()), set(appr.params_0[p] for p in appr.params))
        self.assertTrue(LinearLeastSquares.is_linear(appr))

        model = Model({z: a * x**2 + b * y**2})
        appr = TaylorModel(model)
        appr.p0 = {a: 2, b: 5}
        model = Model({z: a * x**2 + b * y**2})
        appr_2 = TaylorModel(model)
        appr_2.p0 = {a: 1, b: 1}
        self.assertTrue(appr == appr_2)

        model = Model({y: a * sympy.exp(x * b)})
        appr = TaylorModel(model)
        appr.p0 = {a: 2.0, b: 5.0}
        self.assertTrue(LinearLeastSquares.is_linear(appr))

        model = Model({y: sympy.sin(a * x)})
        appr = TaylorModel(model)
        appr.p0 = {a: 0.0}
        self.assertTrue(LinearLeastSquares.is_linear(appr))
    def test_is_linear(self):
        a, b, c, d = parameters('a, b, c, d')
        x, y = variables('x, y')

        model = Model({y: (a * x + c * x**2) + b})
        self.assertTrue(LinearLeastSquares.is_linear(model))

        model = Model({y: (a * x + c * x**2) + b + 2})
        self.assertTrue(LinearLeastSquares.is_linear(model))

        # This test should be made to work in a future version.
        # model = Model({y: a * x**2 + sympy.exp(x * b)})
        # t_model = (2 * y / g)**0.5
        # self.assertTrue(LinearLeastSquares.is_linear(model))

        model = Model({y: a * sympy.exp(x * b)})
        self.assertFalse(LinearLeastSquares.is_linear(model))

        model = Model({y: a * x**3 + b * c})
        self.assertFalse(LinearLeastSquares.is_linear(model))

        model = Model({y: a * x**3 + b * x + c})
        self.assertTrue(LinearLeastSquares.is_linear(model))
Beispiel #4
0
    def test_is_linear(self):
        a, b, c, d = parameters('a, b, c, d')
        x, y = variables('x, y')

        model = Model({y: (a * x + c*x**2) + b})
        self.assertTrue(LinearLeastSquares.is_linear(model))

        model = Model({y: (a * x + c*x**2) + b + 2})
        self.assertTrue(LinearLeastSquares.is_linear(model))

        # This test should be made to work in a future version.
        # model = Model({y: a * x**2 + sympy.exp(x * b)})
        # t_model = (2 * y / g)**0.5
        # self.assertTrue(LinearLeastSquares.is_linear(model))

        model = Model({y: a * sympy.exp(x * b)})
        self.assertFalse(LinearLeastSquares.is_linear(model))

        model = Model({y: a * x**3 + b * c})
        self.assertFalse(LinearLeastSquares.is_linear(model))

        model = Model({y: a * x**3 + b * x + c})
        self.assertTrue(LinearLeastSquares.is_linear(model))