def test_conj_matrix_line(self): le = linsolve.LinearEquation('x_-y') m = np.zeros((2, 4), dtype=np.float) le.put_matrix(m, 0, {'x': 0, 'y': 1}, True) np.testing.assert_equal(m, np.array([[1, 0, -1., 0], [0, -1, 0, -1]])) le = linsolve.LinearEquation('x-y_') m = np.zeros((2, 4), dtype=np.float) le.put_matrix(m, 0, {'x': 0, 'y': 1}, True) np.testing.assert_equal(m, np.array([[1, 0, -1., 0], [0, 1, 0, 1]]))
def test_eval(self): le = linsolve.LinearEquation('a*x-b*y', a=2, b=4) sol = {'x': 3, 'y': 7} self.assertEqual(2 * 3 - 4 * 7, le.eval(sol)) sol = {'x': 3 * np.ones(4), 'y': 7 * np.ones(4)} np.testing.assert_equal(2 * 3 - 4 * 7, le.eval(sol)) le = linsolve.LinearEquation('x_-y') sol = {'x': 3 + 3j * np.ones(10), 'y': 7 + 2j * np.ones(10)} ans = np.conj(sol['x']) - sol['y'] np.testing.assert_equal(ans, le.eval(sol))
def test_basics(self): le = linsolve.LinearEquation('x+y') self.assertEqual(le.terms, [['x'], ['y']]) self.assertEqual(le.consts, {}) self.assertEqual(len(le.prms), 2) le = linsolve.LinearEquation('x-y') self.assertEqual(le.terms, [['x'], [-1, 'y']]) le = linsolve.LinearEquation('a*x+b*y', a=1, b=2) self.assertEqual(le.terms, [['a', 'x'], ['b', 'y']]) self.assertTrue(le.consts.has_key('a')) self.assertTrue(le.consts.has_key('b')) self.assertEqual(len(le.prms), 2) le = linsolve.LinearEquation('a*x-b*y', a=1, b=2) self.assertEqual(le.terms, [['a', 'x'], [-1, 'b', 'y']])
def test_order_terms(self): le = linsolve.LinearEquation('x+y') terms = [[1,1,'x'],[1,1,'y']] self.assertEqual(terms, le.order_terms([[1,1,'x'],[1,1,'y']])) terms2 = [[1,1,'x'],[1,'y',1]] self.assertEqual(terms, le.order_terms([[1,1,'x'],[1,'y',1]])) le = linsolve.LinearEquation('a*x-b*y',a=2,b=4) terms = [[1,'a','x'],[1,'b','y']] self.assertEqual(terms, le.order_terms([[1,'a','x'],[1,'b','y']])) terms2 = [[1,'x','a'],[1,'b','y']] self.assertEqual(terms, le.order_terms([[1,'x','a'],[1,'b','y']])) le = linsolve.LinearEquation('g5*bl95+g1*bl111',g5=1,g1=1) terms = [['g5','bl95'],['g1','bl111']] self.assertEqual(terms, le.order_terms([['g5','bl95'],['g1','bl111']]))
def test_matrix_line(self): le = linsolve.LinearEquation('x-y') m = np.zeros((1, 2), dtype=np.float) le.put_matrix(m, 0, {'x': 0, 'y': 1}, False) np.testing.assert_equal(m[0], np.array([1, -1.])) le = linsolve.LinearEquation('a*x-b*y', a=2, b=4) m = np.zeros((1, 2), dtype=np.float) le.put_matrix(m, 0, {'x': 0, 'y': 1}, False) np.testing.assert_equal(m[0], np.array([2, -4.])) le = linsolve.LinearEquation('a*x-b*y', a=2, b=4) m = np.zeros((1, 2), dtype=np.float) le.put_matrix(m, 0, {'x': 1, 'y': 0}, False) np.testing.assert_equal(m[0], np.array([-4, 2.])) le = linsolve.LinearEquation('a*b*c*x-b*y', a=2, b=4, c=3) m = np.zeros((2, 4), dtype=np.float) le.put_matrix(m, 0, {'x': 0, 'y': 1}, True) np.testing.assert_equal(m, np.array([[24, 0., -4, 0], [0, 24, 0, -4]]))
def test_term_check(self): le = linsolve.LinearEquation('a*x-b*y', a=2, b=4) terms = [[1, 'a', 'x'], [1, 'b', 'y']] self.assertEqual(terms, le.order_terms([[1, 'a', 'x'], [1, 'b', 'y']])) terms4 = [['c', 'x', 'a'], [1, 'b', 'y']] self.assertRaises(AssertionError, le.order_terms, terms4) terms5 = [[1, 'a', 'b'], [1, 'b', 'y']] self.assertRaises(AssertionError, le.order_terms, terms5)
def test_unary(self): le = linsolve.LinearEquation('-a*x-b*y', a=1, b=2) self.assertEqual(le.terms, [[-1, 'a', 'x'], [-1, 'b', 'y']])
def test_more(self): consts = {'g5': 1, 'g1': 1} for k in ['g5*bl95', 'g1*bl111', 'g1*bl103']: le = linsolve.LinearEquation(k, **consts) self.assertEqual(le.terms[0][0][0], 'g')