Crie uma matriz 10 times 10 com elementos aleatórios no intervalo [0, 20]:
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 np.random.randint(0, 21, (10,10)). Essa função retorna uma matriz A com entradas aij em 0,1,dots,20.

Passo 3

A seguir, identificamos a diagonal secundária. Numa matriz de dimensão ntimes n (aqui n=10), essa diagonal é dada pelos pares de índices que satisfazem j = n-1 - i. Para obter a região triangular superior a ela (incluindo a própria diagonal), observamos que os elementos que queremos satisfazem
i + j <= n-1

Passo 4

Construímos, então, uma máscara booleana M com essa condição:
Mij = (i + j <= 9)

Passo 5

Por fim, aplicamos a máscara à matriz original, substituindo por zero todos os elementos fora da região desejada:
Bij = Aij, & se Mij=True,0, & caso contrárioá
A matriz B resultante é justamente a parte triangular superior em relação à diagonal secundária. Só falta imprimir B.

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)

Exercícios relacionados