def test_jacobi_method_03(self): b_verbose = False if b_verbose: print("test_jacobi_method_03") self.mat_lambda, self.mat_x = evp.jacobi_method(self.mat_h) if b_verbose: print("L =") matrix.mat_xt = matrix.transpose_mat(self.mat_x) print("X =") matrix.show_mat(self.mat_x) self.mat_xt = matrix.transpose_mat(self.mat_x) self.mat_x_labda = matrix.mul_mat(self.mat_x, self.mat_labda) self.mat_x_labda_xt = matrix.mul_mat(self.mat_x_labda, self.mat_xt) if b_verbose: print("X L XT") matrix.show_mat(self.mat_x_lambda_xt) n = len(self.mat_h) for i in range(n): for j in range(n): st = "X L XT[%d][%d] = %g vs A[%d][%d] = %g" % ( i, j, self.mat_x_labda_xt[i][j], i, j, self.mat_h[i][j]) self.assertAlmostEqual(self.mat_x_lambda_xt[i][j], self.mat_h[i][j], msg=st)
def test_jacobi_method(self): self.mat_a = [[-1.0, -0.5, -0.2], [-0.5, -2.0, -1.0], [-0.2, -1.0, -3.0]] lamda1, x1 = evp.jacobi_method(self.mat_a) self.assertEqul(len(self.mat_a), len(lamda1)) self.assertEqual(len(self.mat_a[0]), len(lamda1[0])) self.assertEqual(len(self.mat_a), len(x1)) self.mat_a_x1 = matrix.mul_mat(self.mat_a_x1) for k_pivot in range(len(self.mat_a)): lambda_i = lamda1[k_pivot][k_pivot] for i_row in range(len(self.mat_a)): self.assertAlmostEqual(self.mat_a_x[i_row][k_pivot], lambda_i * x1[i_row][k_pivot]) self.mat_x1_t_a_x1 = matrix.mul_mat(zip(*x1), self.mat_a_x1) for i_row in range(0, len(self.mat_a) - 1): self.assertAlmostEqual(self.mat_x1_t_a_x[i_row][i_row], lamda1[i_row][i_row]) for j_column in range(i_row * 1, len(self.mat_a)): self.assertAlmostEqual(self.mat_x1_t_a_x1[i_row][j_column], 0.0)
def test_jacobi_method_01(self): b_verbose = 0 if b_verbose: print("test_jacobi_method_01") self.mat_lambda, self.mat_x = evp.jacobi_method(self.mat_h) if b_verbose: print("L =") matrix.show_mat(self.mat_lambda) print("X =") matrix.show_mat(self.mat_x) self.mat_x_transpose = matrix.transpose_mat(self.mat_x) self.mat_xt_h = matrix.mul_mat(self.mat_x_transpose, self.mat_h) self.mat_xt_h_x = matrix.mul_mat(self.mat_xt_h, self.mat_x) if b_verbose: print("XT A X") matrix.show_mat(self.mat_xt_h_x) n = len(self.mat_h) for i in range(n): for j in range(n): st = "XT A X [%d][%d] = %g" % (i, j, self.mat_xt_h_x[i][j], i, j, self.mat_lambda[i][j]) self.assertAlmostEqual(self.mat_xt_h_x[i][j], self.mat_lambda[i][j], msg=st)
def test_jacobi_method(self): A = [[-1.0, -0.5, -0.2], [-0.5, -2.0, -1.0], [-0.2, -1.0, -3.0]] lamda1, x1 = ea.jacobi_method(A) self.assertEqual(len(A), len(lamda1)) self.assertEqual(len(A[0]), len(lamda1[0])) self.assertEqual(len(A), len(x1)) self.assertEqual(len(A[0]), len(x1[0])) Ax1 = la.multiply_matrix_matrix(A, x1) # check A V = Lambda V for k_pivot in xrange(len(A)): # diagonal term lambda_i = lamda1[k_pivot][k_pivot] # off diagonal for i_row in xrange(len(A)): self.assertAlmostEqual(Ax1[i_row][k_pivot], lambda_i * x1[i_row][k_pivot]) # check VT A V = Lambda x1TAx1 = la.multiply_matrix_matrix(zip(*x1), Ax1) for i_row in xrange(0, len(A) - 1): # check diagonal self.assertAlmostEqual(x1TAx1[i_row][i_row], lamda1[i_row][i_row]) # check off-diagonal for j_column in xrange(i_row + 1, len(A)): self.assertAlmostEqual(x1TAx1[i_row][j_column], 0.0)
def test_jacobi_method(self): A = [[-1.0, -0.5, -0.2], [-0.5, -2.0, -1.0], [-0.2, -1.0, -3.0]] lamda1, x1 = ea.jacobi_method (A) self.assertEqual(len(A), len(lamda1)) self.assertEqual(len(A[0]), len(lamda1[0])) self.assertEqual(len(A), len(x1)) self.assertEqual(len(A[0]), len(x1[0])) Ax1 = la.multiply_matrix_matrix(A, x1) # check A V = Lambda V for k_pivot in xrange(len(A)): # diagonal term lambda_i = lamda1[k_pivot][k_pivot] # off diagonal for i_row in xrange(len(A)): self.assertAlmostEqual(Ax1[i_row][k_pivot],lambda_i * x1[i_row][k_pivot]) # check VT A V = Lambda x1TAx1 = la.multiply_matrix_matrix(zip(*x1), Ax1) for i_row in xrange(0, len(A) - 1): # check diagonal self.assertAlmostEqual(x1TAx1[i_row][i_row], lamda1[i_row][i_row]) # check off-diagonal for j_column in xrange(i_row + 1, len(A)): self.assertAlmostEqual(x1TAx1[i_row][j_column], 0.0)
def test_jacobi_metohd_00(self): b_verbose = 0 if b_verbose: print("test_jacobi_method_00") self.mat_lambda, self.mat_x = evp.jacobi_method(self.mat_h) if b_verbose: print("X =") matrix.show.mat(self.mat_lambda) print("XT =") matrix.show_mat(self.mat_x) k = 0 lam = self.mat_lambda[k][k] x0 = [row[0] for row in self.mat_x] x1 = matrix.mul_mat_vec(self.mat_h, x0) x0l = [lam * x0k for x0k in x0] self.assertSequenceAlmostEqual(x0l, x1)
def test_jacobi_method_02(self): b_verbose = False self.mat_lambda, self.mat_x_t = evp.jacobi_method(self.mat_h, 1e-12) self.assertAlmostEqual(self.mat_lambda[0][0], 14.744562646538027) self.assertAlmostEqual(self.mat_lambda[1][1], 6.000000000000003) self.assertAlmostEqual(self.mat_lambda[2][2], 3.255437353461972)