Пример #1
0
 def test_row_mul_scalar_01(self):
     m.row_mul_scalar(self.mat_i, 1, 0.5)
     self.mat_exp = [
         [1, 0],
         [0, 0.5],
     ]
     self.assertSequenceEqual(self.mat_i, self.mat_exp)
Пример #2
0
 def test_row_mul_scalar_00(self):
     m.row_mul_scalar(self.mat_i, 0, 2)
     self.mat_exp = [
         [2, 0],
         [0, 1],
     ]
     self.assertSequenceEqual(self.mat_i, self.mat_exp)
Пример #3
0
def gauss_jordan(mat_a):
    mat_ai = generate_mat_ai(mat_a)

    for i_pivot in range(len(mat_ai)):
        matrix.row_mul_scalar(mat_ai, i_pivot, 1.0 / mat_ai[i_pivot][i_pivot])
        for j_row in range(len(mat_ai)):
            if i_pivot != j_row:
                matrix.row_mul_add(mat_ai, j_row, i_pivot,
                                   -mat_ai[j_row][i_pivot])

    inv_mat = matrix.alloc_mat(
        len(mat_ai),
        len(mat_ai),
    )

    for i in range(len(mat_ai)):
        for j in range(len(mat_ai)):
            inv_mat[i][j] = mat_ai[i][len(mat_ai) + j]

    del mat_ai[:]
    del mat_ai

    return inv_mat
Пример #4
0
 def test_row_mul_scalar_03(self):
     m.row_mul_scalar(self.mat_g, 2, 0.5)
     self.mat_exp = [[1, 0, -1], [0, 1, 2], [-1.0, -0.5, 0.0]]
     self.assertSequenceEqual(self.mat_g, self.mat_exp)
Пример #5
0
 def test_row_mul_scalar_02(self):
     m.row_mul_scalar(self.mat_g, 1, -1)
     self.mat_exp = [[1, 0, -1], [0, -1, -2], [-2, -1, 0]]
     self.assertSequenceEqual(self.mat_g, self.mat_exp)