Crie uma matriz
com elementos aleatórios no intervalo [0, 20]:
Imprima a matriz triangular superior, em relação à diagonal secundária.
Imprima a matriz triangular superior, em relação à diagonal secundária.
Passo 1
O enunciado pede para criar uma matriz de ordem 10 com valores inteiros aleatórios no intervalo [0,20] e, a partir dela, imprimir apenas a parte triangular superior em relação à diagonal secundária (ou seja, mantendo só os elementos que estão ‘acima’ dessa diagonal). Vamos usar conceitos de índices de matriz e máscaras lógicas para fazer isso.
Passo 2
Primeiro geramos a matriz 10×10 de inteiros aleatórios entre 0 e 20. Em Python com NumPy fica bem simples: usamos em
.
np.random.randint(0, 21, (10,10))
. Essa função retorna uma matriz A
com entradas
Passo 3
A seguir, identificamos a diagonal secundária. Numa matriz de dimensão
(aqui
), essa diagonal é dada pelos pares de índices que satisfazem
. Para obter a região triangular superior a ela (incluindo a própria diagonal), observamos que os elementos que queremos satisfazem
Passo 4
Construímos, então, uma máscara booleana
com essa condição:
Passo 5
Por fim, aplicamos a máscara à matriz original, substituindo por zero todos os elementos fora da região desejada:
A matriz
Resposta
Segue um exemplo em Python usando NumPy (com semente fixa para reproduzir resultados):
import numpy as np
np.random.seed(42) # garante reprodutibilidade
A = np.random.randint(0, 21, (10, 10))
n = A.shape[0]
# máscara para i+j <= n-1
mask = np.fromfunction(lambda i, j: i + j <= n-1, (n, n), dtype=int)
# aplica máscara: mantém A onde mask==True, senão 0
B = np.where(mask, A, 0)
print("Matriz original A:")
print(A)
print("\nTriangular superior em relação à diagonal secundária:")
print(B)