Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/11/2018, 13:44
Gooppy
 
Fecha de Ingreso: julio-2005
Ubicación: México
Mensajes: 148
Antigüedad: 18 años, 9 meses
Puntos: 0
Busqueda Explicación de la lógica de estos códigos (matriz, traspuesta y diagonal)

Hola, buenas tardes. Leyendo en el foro me encontré con algunos temas que me ayudaron a resolver problemas que tenía con el código de una matriz.

Tenía que generar una matriz con números aleatorios y obtener un vector con los números de su diagonal principal, también tenía que obtener la matriz traspuesta de dicha matriz.

Para obtener la matriz traspuesta utilicé el siguiente código que me encontré en uno de los temas del foro:
Código Python:
Ver original
  1. M1 = [[1, 2,  3], [2, 12, 6], [1, 0, -3], [10, -1, 0]]
  2. M2 = [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
  3.  
  4. for i in range(4):
  5.     for j in range(3):
  6.         M2[j][i] = M1[i][j]
  7.  
  8.  
  9. for i in range(3):
  10.     print(M2[i])

tomado de este tema --->>> http://www.forosdelweb.com/f130/como...matriz-851460/

El código que tengo funciona y hace lo que requería que hiciera, sin embargo no logro entender como es que funciona, su lógica. ¿Cómo es que "M2[j][i] = M1[i][j]" logra generar la matriz traspuesta?

Me pasa igual con la diagonal de la matriz.

n son las filas y columnas, es una matriz cuadrada. En este caso ¿cómo es que "matriz[i][i]" genera los números de la diagonal?

Código Python:
Ver original
  1. matriz =  []
  2. diagonal = []
  3.  
  4. for i in range(n):
  5.     diagonal.append(matriz[i][i])
  6. print (diagonal)

Quisiera entender por qué es que funciona como funciona. Muchas gracias a quien pueda darme esta clase. Saludos!