Foros del Web » Programando para Internet » Python »

Explicación de la lógica de estos códigos (matriz, traspuesta y diagonal)

Estas en el tema de Explicación de la lógica de estos códigos (matriz, traspuesta y diagonal) en el foro de Python en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 12/11/2018, 13:44
 
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!
  #2 (permalink)  
Antiguo 23/11/2018, 07:43
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Explicación de la lógica de estos códigos (matriz, traspuesta y diagonal)

A ver, la diagonal no es necesario un doble for, ya que como i=j, con i filas j columnas con uno basta, ADEMÁS una matriz tiene diagonal si esta es cuadrada, es decir, misma cantidad de filas y columnas

Código Python:
Ver original
  1. M1 = [[1, 2,  3, 4], [2, 12, 6, 12], [1, 0, -3, 4], [10, -1, 0, 1]]
  2. M2 = [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
  3.  
  4. for i in range(0,len(M1),1):
  5.     M2[i][i] = M1[i][i]
Y la traspuesta es cambiar las filas por columas, acá no hay restricción.


Código Python:
Ver original
  1. M1 = [[1, 2,  3, 4], [2, 12, 6, 12], [1, 0, -3, 4]]
  2. M2 = [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
  3.  
  4. for i in range(0,len(M1),1):
  5.     for j in range(0,len(M1[i]),1):
  6.         M2[j][i] = M1[i][j]

Edite: tenia error de sintaxis en el último for de matriz traspuesta

Última edición por alvaro_trewhela; 23/11/2018 a las 08:26

Etiquetas: diagonal, matriz
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:43.