Em Álgebra Linear, a diagonal principal de uma matriz é definida como os elementos Matrix [i][j] onde i=j.
Por exemplo, na matriz
M=[ccc 1 & 5 & 1 4 & 4 & 46 3 & 12 & 17 ]
A diagonal principal são os elementos 1,4 e 17 .
Escreva uma função que recebe uma matriz como entrada, e tem como saída um vetor com a diagonal principal. A matriz da entrada sempre será uma matriz quadrada.
Desafio: Você consegue achar a diagonal principal da matriz com apenas um loop for?

Passo 1

O enunciado pede para criar uma função que receba como entrada uma matriz quadrada e retorne um vetor contendo os elementos da diagonal principal dessa matriz. O conteúdo é Álgebra Linear (diagonal principal) combinado com programação de algoritmos simples. Para resolver, precisamos apenas percorrer uma vez os índices de 0 até n-1, onde n é a dimensão da matriz, e coletar os elementos cujo índice de linha é igual ao índice de coluna.

Passo 2

Seja M uma matriz quadrada de ordem n. Os elementos da diagonal principal são aqueles M[i][i] para i = 0,1,dots,n-1. Basta, portanto, definir um vetor vazio e, num único laço for, iterar sobre i de 0 até n-1 para extrair M[i][i].

Passo 3

Mostramos a seguir a função em Python que faz exatamente isso usando um único for. Primeiro determinamos , depois criamos uma lista vazia diag, e em cada iteração pegamos M[i][i] e damos um append nessa lista.
def \(diagonal_principal\)(M):
    """
    Recebe uma matriz quadrada M e retorna um vetor
    com os elementos da diagonal principal.
    Usa apenas um loop for.
    """
    n \(=\) len(M)
    diag \(=\) []
    for i in range(n):
        diag.append(M[i][i])
    return diag

Passo 4

Testando com o exemplo do enunciado:
M \(=\) [
    [\(1\), \(5\), \(1\)],
    [\(4\), \(4\), \(46\)],
    [\(3\), \(12\), \(17\)]
]
print(\(diagonal_principal\)(M))  # saída: [\(1\), \(4\), \(17\)]
Funciona perfeitamente e usa somente um loop for.

Resposta

def \(diagonal_principal\)(M):
    n \(=\) len(M)
    diag \(=\) []
    for i in range(n):
        diag.append(M[i][i])
    return diag

Exercícios relacionados