示例#1
0
 def test_chisq(self):
     x = 1.
     d = {'x': 1, 'a*x': 2}
     ls = linsolve.LinearSolver(d, a=1.0, sparse=self.sparse)
     sol = ls.solve()
     chisq = ls.chisq(sol)
     np.testing.assert_equal(chisq, .5)
     x = 1.
     d = {'x': 1, '1.0*x': 2}
     ls = linsolve.LinearSolver(d, sparse=self.sparse)
     sol = ls.solve()
     chisq = ls.chisq(sol)
     np.testing.assert_equal(chisq, .5)
示例#2
0
 def setUp(self):
     eqs = ['x+y', 'x-y']
     x, y = 1, 2
     d, w = {}, {}
     for eq in eqs:
         d[eq], w[eq] = eval(eq), 1.
     self.ls = linsolve.LinearSolver(d, w)
示例#3
0
 def test_wgt_const_arrays(self):
     x,y = 1.,2.
     a,b = 3.*np.ones(4),1.
     eqs = ['a*x+y','x+b*y']
     d,w = {}, {}
     for eq in eqs: d[eq],w[eq] = eval(eq)*np.ones(4), np.ones(4)
     ls = linsolve.LinearSolver(d,w,a=a,b=b)
     sol = ls.solve()
     np.testing.assert_almost_equal(sol['x'], x*np.ones(4,dtype=np.float))
     np.testing.assert_almost_equal(sol['y'], y*np.ones(4,dtype=np.float))
示例#4
0
 def test_solve_arrays(self):
     x = np.arange(100,dtype=np.float); x.shape = (10,10)
     y = np.arange(100,dtype=np.float); y.shape = (10,10)
     eqs = ['2*x+y','-x+3*y']
     d,w = {}, {}
     for eq in eqs: d[eq],w[eq] = eval(eq), 1.
     ls = linsolve.LinearSolver(d,w)
     sol = ls.solve()
     np.testing.assert_almost_equal(sol['x'], x)
     np.testing.assert_almost_equal(sol['y'], y)
示例#5
0
 def test_const_arrays(self):
     x,y = 1.,2.
     a = np.array([3.,4,5])
     b = np.array([1.,2,3])
     eqs = ['a*x+y','x+b*y']
     d,w = {}, {}
     for eq in eqs: d[eq],w[eq] = eval(eq), 1.
     ls = linsolve.LinearSolver(d,w,a=a,b=b)
     sol = ls.solve()
     np.testing.assert_almost_equal(sol['x'], x*np.ones(3,dtype=np.float))
     np.testing.assert_almost_equal(sol['y'], y*np.ones(3,dtype=np.float))
示例#6
0
 def test_eval(self):
     x, y = 1., 2.
     a, b = 3. * np.ones(4), 1.
     eqs = ['a*x+y', 'x+b*y']
     d, w = {}, {}
     for eq in eqs:
         d[eq], w[eq] = eval(eq) * np.ones(4), np.ones(4)
     ls = linsolve.LinearSolver(d, w, a=a, b=b, sparse=self.sparse)
     sol = ls.solve()
     np.testing.assert_almost_equal(sol['x'],
                                    x * np.ones(4, dtype=np.float))
     np.testing.assert_almost_equal(sol['y'],
                                    y * np.ones(4, dtype=np.float))
     result = ls.eval(sol)
     for eq in d:
         np.testing.assert_almost_equal(d[eq], result[eq])
     result = ls.eval(sol, 'a*x+b*y')
     np.testing.assert_almost_equal(3 * 1 + 1 * 2, result.values()[0])
示例#7
0
 def test_dtypes(self):
     ls = linsolve.LinearSolver({'x_': 1.0 + 1.0j}, sparse=self.sparse)
     self.assertEqual(ls.dtype, float)
     ls = linsolve.LinearSolver({'x': 1.0 + 1.0j}, sparse=self.sparse)
     self.assertEqual(ls.dtype, complex)
     ls = linsolve.LinearSolver({'x_': np.ones(1, dtype=np.complex64)[0]},
                                sparse=self.sparse)
     self.assertEqual(ls.dtype, np.float32)
     ls = linsolve.LinearSolver({'x': np.ones(1, dtype=np.complex64)[0]},
                                sparse=self.sparse)
     self.assertEqual(ls.dtype, np.complex64)
     ls = linsolve.LinearSolver({'c*x': 1.0},
                                c=1.0 + 1.0j,
                                sparse=self.sparse)
     self.assertEqual(ls.dtype, complex)
     d = {'c*x': np.ones(1, dtype=np.float32)[0]}
     wgts = {'c*x': np.ones(1, dtype=np.float64)[0]}
     c = np.ones(1, dtype=np.float32)[0]
     ls = linsolve.LinearSolver(d, wgts=wgts, c=c, sparse=self.sparse)
     self.assertEqual(ls.dtype, np.float64)
示例#8
0
 def test_A_shape(self):
     consts = {'a': np.arange(10), 'b': np.zeros((1, 10))}
     ls = linsolve.LinearSolver({'a*x+b*y': 0.}, {'a*x+b*y': 1}, **consts)
     self.assertEqual(ls._A_shape(), [1, 2, 10, 10])