예제 #1
0
    def testIterative(self):
        a = numpy.matrix([[0.0,0.1,0.0],\
                          [0.0,0.0,0.1],\
              [0.0,0.0,0.0]])

        b = numpy.matrix([[1.0,0.0], \
              [0.0,0.0], \
              [0.0,1.0]])

        r = numpy.matrix([[0.0,0.0], \
              [0.0,1.0]])

        q = numpy.matrix([[10.0**5.0, 0.0,0.0], \
                          [0.0,10.0**3.0,0.0], \
              [0.0,0.0,-10.0]])

        ds = DareSolver(a, b, q, r)

        ds.iterative = True

        x = ds.solve()

        self.assertAlmostEqual(10.0**5.0, x[0, 0], 3)
        self.assertAlmostEqual(10.0**3.0, x[1, 1], 3)
        self.assertAlmostEqual(0.0, x[2, 2], 3)

        for i in range(0, 3):
            for j in range(0, 3):
                if i != j:
                    self.assertAlmostEqual(0.0, x[i, j], 3)
예제 #2
0
	def testIterative(self):
		a = numpy.matrix([[0.0,0.1,0.0],\
		                  [0.0,0.0,0.1],\
						  [0.0,0.0,0.0]])
						   
		b = numpy.matrix([[1.0,0.0], \
						  [0.0,0.0], \
						  [0.0,1.0]])
						   
		r = numpy.matrix([[0.0,0.0], \
						  [0.0,1.0]])
						   
		q = numpy.matrix([[10.0**5.0, 0.0,0.0], \
		                  [0.0,10.0**3.0,0.0], \
						  [0.0,0.0,-10.0]])

		ds = DareSolver(a,b,q,r)
		
		ds.iterative = True

		x = ds.solve()
		
		self.assertAlmostEqual(10.0**5.0,x[0,0],3)
		self.assertAlmostEqual(10.0**3.0,x[1,1],3)
		self.assertAlmostEqual(0.0,x[2,2],3)
		
		for i in range(0,3):
			for j in range(0,3):
				if i != j:
					self.assertAlmostEqual(0.0,x[i,j],3)
예제 #3
0
    def testSLICOT(self):
        a = numpy.matrix([[0.8147, 0.1270], [0.9058, 0.9134]])
        b = numpy.matrix([[0.6324, 0.2785], [0.0975, 0.5469]])
        q = numpy.eye(2)
        r = numpy.matrix([[1.0, 0.0], [0.0, 1.0]])

        ds = DareSolver(a, b, q, r)

        x = ds.solve_slycot()
        self.assertAlmostEqual(2.6018, x[0, 0], 3)
        self.assertAlmostEqual(0.9969, x[0, 1], 3)
        self.assertAlmostEqual(0.9969, x[1, 0], 3)
        self.assertAlmostEqual(1.8853, x[1, 1], 3)
예제 #4
0
	def testSLICOT(self):
		a = numpy.matrix([[0.8147, 0.1270],[0.9058, 0.9134]])
		b = numpy.matrix([[0.6324, 0.2785],[0.0975, 0.5469]])
		q = numpy.eye(2)
		r = numpy.matrix([[1.0,0.0],[0.0,1.0]])
		
		ds = DareSolver(a,b,q,r)
		
		x = ds.solve_slycot()
		self.assertAlmostEqual(2.6018,x[0,0],3)
		self.assertAlmostEqual(0.9969,x[0,1],3)
		self.assertAlmostEqual(0.9969,x[1,0],3)
		self.assertAlmostEqual(1.8853,x[1,1],3)
예제 #5
0
    def testCyclic(self):
        a = numpy.eye(2)
        b = -1.0 * numpy.eye(2)
        r = numpy.eye(2)
        q = numpy.matrix([[1.0, 0.0], [0.0, 0.5]])

        ds = DareSolver(a, b, q, r)

        ds.use_cyclic = True

        x = ds.solve()

        self.assertAlmostEqual(1.6180, x[0, 0], 3)
        self.assertAlmostEqual(1.0, x[1, 1], 3)

        self.assertAlmostEqual(0.0, x[0, 1], 3)
        self.assertAlmostEqual(0.0, x[1, 0], 3)
예제 #6
0
	def testCyclic(self):
		a = numpy.eye(2)
		b = -1.0*numpy.eye(2)
		r = numpy.eye(2)
		q = numpy.matrix([[1.0,0.0],[0.0,0.5]])
		
		ds = DareSolver(a,b,q,r)
		
		ds.use_cyclic = True
		
		x = ds.solve()
		
		self.assertAlmostEqual(1.6180,x[0,0],3)
		self.assertAlmostEqual(1.0,x[1,1],3)
		
		self.assertAlmostEqual(0.0,x[0,1],3)
		self.assertAlmostEqual(0.0,x[1,0],3)