Пример #1
0
def test_private_inversa_por_fila_de_operacoes_elementares():
    A = MatrizBiDimensional([[1,2,3],\
                             [3,5,6],\
                             [7,1,9]])
    identidade = A * A._MatrizBiDimensional__inversa_por_fila_de_operacoes_elementares()
    for i in range(identidade.linhas):
        for j in range(identidade.colunas):
            identidade[i][j] = round(identidade[i][j], 0)
    assert identidade == MatrizBiDimensional.identidade(3)
Пример #2
0
def test_ii_propriedade_multiplicacao_matrizes_distributividade():
    A = MatrizBiDimensional([[1, 2, 3]])
    B = MatrizBiDimensional([[4],\
                             [5],\
                             [6]])
    C = MatrizBiDimensional([[7],\
                             [8],\
                             [9]])
    assert A*(B + C) == A*B + A*C
Пример #3
0
def test_iv_propriedade_associatividade_matrizes_quadradas_aleatorias_ordem_mxn_nxo_oxp_m_n_o_p_aleatorios():
    m = random.randint(1,100)
    n = random.randint(1,100)
    o = random.randint(1,100)
    p = random.randint(1,100)
    A = MatrizBiDimensional([[random.randint(1,1000) for j in range(n)] for i in range(m)])
    B = MatrizBiDimensional([[random.randint(1,1000) for j in range(o)] for i in range(n)])
    E = MatrizBiDimensional([[random.randint(1,1000) for i in range(p)] for i in range(o)])
    assert (A*B)*E == A*(B*E)
Пример #4
0
def forma_escada_linha_reduzida_matriz_aleatoria_com_verificacao_no_wolfram_alpha():
    linhas  = random.randint(4, 6)
    colunas = random.randint(3, 8)
    A = MatrizBiDimensional([[random.randint(-10,10) for j in range(colunas)] for i in range(linhas)])
    A_felr = A.forma_escada_linha_reduzida()
    A_welr = wolfram_escalonamento_linha_reduzido(A)
    A_felr = MatrizBiDimensional([[round(A_felr[i][j], 4) for j in range(A_felr.colunas)] for i in range(A_felr.linhas)])
    A_welr = MatrizBiDimensional([[round(A_welr[i][j], 4) for j in range(A_welr.colunas)] for i in range(A_welr.linhas)])
    return A_felr == A_welr
Пример #5
0
def test_multiplica_matriz_4_1_por_matriz_1_4():
    A = MatrizBiDimensional([[1],\
                             [1],\
                             [1],\
                             [1]])
    B = MatrizBiDimensional([[4, 4, 4, 4]])
    assert A * B == MatrizBiDimensional([[4, 4, 4, 4],\
                                         [4, 4, 4, 4],\
                                         [4, 4, 4, 4],\
                                         [4, 4, 4, 4]])
Пример #6
0
def test_private_transformar_demais_elementos_kj_em_nulos():
    A = MatrizBiDimensional([[1,  1,  1,  6],\
                             [4, -3,  2,  0],\
                             [2, -1,  3, 11],\
                             [3,  1,  1,  4]])
    A._MatrizBiDimensional__transformar_demais_elementos_kj_em_nulos(0, 0)
    assert A == MatrizBiDimensional([[1,  1,  1,   6],\
                                     [0, -7, -2, -24],\
                                     [0, -3,  1,  -1],\
                                     [0, -2, -2, -14]])
Пример #7
0
def test_excecao_multiplicar_matrizes_dimensoes_inconsistentes():
    with pytest.raises(MatrizInconsistenteException) as excinfo:
        A = MatrizBiDimensional([[1],\
                                 [1],\
                                 [1],\
                                 [1]])
        B = MatrizBiDimensional([[4],\
                                 [4],\
                                 [4],\
                                 [4]])
        A * B
    assert "O numero de colunas da matriz multiplicanda deve ser igual ao numero de linhas da matriz multiplicadora" in str(excinfo.value)
Пример #8
0
def test_multiplica_matriz_4_3_por_matriz_3_1():
    A = MatrizBiDimensional([[1, 1, 1],\
                             [2, 2, 2],\
                             [3, 3, 3],\
                             [4, 4, 4]])
    B = MatrizBiDimensional([[1],\
                             [2],\
                             [3]])
    assert A * B == MatrizBiDimensional([[6],\
                                         [12],\
                                         [18],\
                                         [24]])
Пример #9
0
def test_repr_matriz_3x3_1_a_9():
    matriz = MatrizBiDimensional([[1, 2, 3],\
                                  [4, 5, 6],\
                                  [7, 8, 9]])
    assert repr(matriz) == '[[1, 2, 3]\n'+\
                           ' [4, 5, 6]\n'+\
                           ' [7, 8, 9]]'
Пример #10
0
def test_v_propriedade_transposicao_se_A_simetrica_A_transposta_igual_A():
    m = random.randint(1,100)
    A = MatrizBiDimensional.zeros(m)
    for i in range(m):
        for j in range(i, m):
            A[i][j] = A[j][i] = random.randint(-100,100)
    assert A.transpor() == A
Пример #11
0
def test_repr_matriz_3x3_9_a_1():
    matriz = MatrizBiDimensional([[9, 8, 7],
                                  [6, 5, 4],
                                  [3, 2, 1]])
    assert repr(matriz) == '[[9, 8, 7]\n'+\
                           ' [6, 5, 4]\n'+\
                           ' [3, 2, 1]]'
Пример #12
0
def test_v_propriedade_se_A_matriz_hermitiana_A_transposto_hermitiano_igual_A():
    m = random.randint(1,100)
    A = MatrizBiDimensional.zeros(m)
    complexo_e_conjugado = lambda x: (x, x.conjugate())
    for i in range(m):
        for j in range(i, m):
            A[i][j],A[j][i] = complexo_e_conjugado(random.uniform(-100,100)) if i == j else complexo_e_conjugado(complex(random.uniform(-100,100),random.uniform(-100,100)))
    assert A.transposto_hermitiano() == A
Пример #13
0
def test_excecao_multiplicar_tipo_nao_implementado():
    with pytest.raises(TermoMultiplicacaoInvalidoException) as excinfo:
        A = MatrizBiDimensional([[1],\
                                 [1],\
                                 [1],\
                                 [1]])
        A * 'a'
    assert "O termo da multiplicação é inválido! Somente são aceitos termos dos tipos int, float, complex e MatrizBiDimensional" in str(excinfo.value)
Пример #14
0
def __produzir_matriz_bi_dimensional_a_partir_de_wolfram_subpod(subpod):
    resultado_wolfram = subpod['plaintext'].replace('(', '').replace(
        ')', '').replace('|', ',').replace(' ', '')
    return MatrizBiDimensional([[
        float(numero) if len(numero.split('/')) != 2 else
        float(numero.split('/')[0]) / float(numero.split('/')[1])
        for numero in linha.split(',')
    ] for linha in resultado_wolfram.split('\n')])
Пример #15
0
def test_iv_propriedade_conjugacao_hermitiana_matrizes_A_B_complexas_aleatorias_mxn_aleatorios():
    m = random.randint(1,100)
    n = random.randint(1,100)
    o = random.randint(1,100)
    A = MatrizBiDimensional([[complex(random.randint(-10,10),random.randint(-10,10)) for j in range(n)] for i in range(m)])
    B = MatrizBiDimensional([[complex(random.randint(-10,10),random.randint(-10,10)) for j in range(o)] for i in range(n)])
    assert (A * B).transposto_hermitiano() == B.transposto_hermitiano() * A.transposto_hermitiano()
Пример #16
0
def test_iv_propriedade_transposicao_A_B_multiplicados_transposta_igual_B_transposta_multiplicado_A_transposta():
    m = random.randint(1,100)
    n = random.randint(1,100)
    o = random.randint(1,100)
    A = MatrizBiDimensional([[random.randint(1,1000) for j in range(n)] for i in range(m)])
    B = MatrizBiDimensional([[random.randint(1,1000) for j in range(o)] for i in range(n)])
    assert (A*B).transpor() == B.transpor() * A.transpor()
Пример #17
0
def test_inversa_adjunta_classica_igual_inversa_fila_operacoes_elementares():
    A = MatrizBiDimensional([[1,2,3],\
                             [3,5,6],\
                             [7,1,9]])
    
    assert [[round(A.inversa(metodo_adjunta_classica=True)[i][j], 4) for j in range(3)] for i in range(3)] == [[round(A.inversa(metodo_adjunta_classica=False)[i][j], 4) for j in range(3)] for i in range(3)] 
Пример #18
0
def test_matriz_adjunta():
    A = MatrizBiDimensional([[1,2,3],\
                             [3,5,6],\
                             [7,1,9]])
    assert A.adjunta() == MatrizBiDimensional([[39, -15, -3], [15, -12, 3], [-32, 13, -1]])
Пример #19
0
def test_excecao_matriz_cofatores_nao_quadrada():
    with pytest.raises(MatrizInconsistenteException) as excinfo:
        a = MatrizBiDimensional([[1,2,3],\
                                 [4,5,6]])
        a.cofatores()
    assert 'A matriz especificada não é quadrada, portanto, não pode ter matriz de cofatores calculada!'
Пример #20
0
def test_comparacao_determinantes_5_matrizes_aleatorias_ordem_3():
    for execucao in range(5):
        A = MatrizBiDimensional([[random.uniform(-5,5) for i in range(3)] for i in range(3)])
        assert round(A.determinante(), 4) == round(wolfram_determinante(A), 4)
Пример #21
0
def test_getitem_linha_2_coluna_3():
    matriz = MatrizBiDimensional([[1, 2, 3],\
                                  [4, 5, 6],\
                                  [7, 8, 9]])
    assert matriz[1][2] == 6
Пример #22
0
def test_excecao_determinante_matriz_nao_quadrada():
    with pytest.raises(MatrizInconsistenteException) as excinfo:
        a = MatrizBiDimensional([[1, 2, 3],\
                             [4, 5, 6]])
        a.determinante()
    assert "A ordem da matriz deve ser quadrada para que seu determinante possa ser calculado" in str(excinfo.value) 
Пример #23
0
def test_private_determinante_somatorio_produtorio_das_permutacoes():
    A = MatrizBiDimensional([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
    assert A._MatrizBiDimensional__determinante_somatorio_produtorio_das_permutacoes() == 0
Пример #24
0
def test_private_produtorio_permutacao_2_1_0():
    A = MatrizBiDimensional([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
    assert A._MatrizBiDimensional__produtorio([2, 1, 0]) == 3*5*7
Пример #25
0
def test_private_produtorio_permutacao_0_2_1():
    A = MatrizBiDimensional([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
    assert A._MatrizBiDimensional__produtorio([0, 2, 1]) == 1*6*8
Пример #26
0
def test_private_sinal_permutacao_1_0_2():
    A = MatrizBiDimensional.identidade(3)
    assert A._MatrizBiDimensional__sinal_permutacao([1, 2, 0]) == 1
Пример #27
0
def test_private_sinal_permutacao_0_2_1():
    A = MatrizBiDimensional.identidade(3)
    assert A._MatrizBiDimensional__sinal_permutacao([0, 2, 1]) == -1
Пример #28
0
def test_property_colunas():
    matriz = MatrizBiDimensional([[1, 2, 3],\
                                  [4, 5, 6],\
                                  [7, 8, 9]])
    assert matriz.colunas == 3
Пример #29
0
def test_property_ordem():
    matriz = MatrizBiDimensional([[1, 2, 3],\
                                  [4, 5, 6]])
    assert matriz.ordem == (2, 3)
Пример #30
0
def test_private_pares_ordenados_para_verificacao_de_sinal_de_permutacoes_matriz_ordem_5():
    A = MatrizBiDimensional.identidade(5)
    assert A._MatrizBiDimensional__pares_ordenados_para_verificacao_de_sinal_de_permutacoes() == [(0,1),(0,2),(0,3),(0,4),(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)]