Autor
|
Tema: Ejemplo Python suma_matrices (Leído 5,196 veces)
|
Meta
|
Buenas: Estoy haciendo un ejemplo llamado suma_matrices_4.py de la página 197 que PDF que puedes ver en mi firma abajo. # encoding: utf-8 # Pedimos la dimensión de las matrices, m = int(raw_input('Dime el número de filas: ')) n = int(raw_input('Dime el número de columnas: ')) # Creamos dos matrices nulas... A = [] for i in range(m): A.append( [0] * n) B = [] for i in range(m): B.append ( [0] * n) # ...y leemos sus contenidos de teclado. print 'Lectura de la matriz A' for i in range(m): for j in range(n): A[i][j] = float(raw_input('Dame el componente (%d, %d): ' % (i, j))) print 'Lectura de la matriz B' for i in range(m): for j in range(n): B[i][j] = float(raw_input('Dame el componente (%d, %d): ' % (i, j)))
Ahora mismo estoy con Ubuntu 10.10 y Python 2.6.6. Su resultado es este. Dime el número de filas: 2 Dime el número de columnas: 2 Lectura de la matriz A Dame el componente (0, 0): 1 Dame el componente (0, 1): 2 Dame el componente (1, 0): 3 Dame el componente (1, 1): 4 Lectura de la matriz B Dame el componente (0, 0): 5 Dame el componente (0, 1): 6 Dame el componente (1, 0): 7 Dame el componente (1, 1): 8 ¿Qué es lo que ocurre exactamente? ¿Qué es la matriz que suma?
|
|
|
En línea
|
|
|
|
Yeison.Eng
|
Wow, si que estas de preguntón últimamente pero tranquilo, solo trata de fijarte bien en la pagina siguiente esta la continuación del código, la suma de A y B, es C. Fijate bien antes de preguntar.
|
|
|
En línea
|
|
|
|
Meta
|
JEjeje. Si no me lo dices no me entero, no lo iba a poner todo junto. # encoding: utf-8 # Pedimos la dimensión de las matrices, m = int(raw_input('Dime el número de filas: ')) n = int(raw_input('Dime el número de columnas: ')) # Creamos dos matrices nulas... A = [] for i in range(m): A.append( [0] * n) B = [] for i in range(m): B.append ( [0] * n) # ...y leemos sus contenidos de teclado. print 'Lectura de la matriz A' for i in range(m): for j in range(n): A[i][j] = float(raw_input('Dame el componente (%d, %d): ' % (i, j))) print 'Lectura de la matriz B' for i in range(m): for j in range(n): B[i][j] = float(raw_input('Dame el componente (%d, %d): ' % (i, j))) #------------------ C =[] for i in range(m): C.append( [0] * n) # Empieza el cálculo de la suma. for i in range(m): for j in range(n): C[i][j] = A[i][j] + B[i][j] # Y mostramos el resultado por pantalla. print 'Suma:' for i in range(m): for j in range(n): print C[i][j], print
Por fin ya entiendo esta parte, ya decía yo que lago no me cuadraba. Y si, si había leído la siguiente página, no me quedé que continuaba el código. Gracias por las aclaraciones. Esto de aprender programación Python autodidacta me cuesta lo suyo. Dime el número de filas: 2 Dime el número de columnas: 2 Lectura de la matriz A Dame el componente (0, 0): 4 Dame el componente (0, 1): 5 Dame el componente (1, 0): 6 Dame el componente (1, 1): 7 Lectura de la matriz B Dame el componente (0, 0): 4 Dame el componente (0, 1): 5 Dame el componente (1, 0): 6 Dame el componente (1, 1): 7 Suma: 8.0 10.0 12.0 14.0 Ahora estoy haciendo el ejercicio 250) de la página 198. A ver si es tan fácil como la suma. Por lo que veo es cambiar el + por el -. C[i][j] = A[i][j] - B[i][j]
|
|
« Última modificación: 16 Noviembre 2010, 16:49 pm por Meta »
|
En línea
|
|
|
|
Meta
|
Haciendo la multiplicación del ejercicio 251) he copiado y modificado parte del código del PDF y he puesto esto. # Pedimos la dimensión de las matrices, p = int(raw_input('Dime el número de filas de A: ')) q = int(raw_input('Dime el número de columnas de A (y filas de B): ')) r = int(raw_input('Dime el número de columnas de B: ')) # Creamos dos matrices nulas... A = [] for i in range(p): A.append( [0] * q) B = [] for i in range(q): B.append ( [0] * r) # ...y leemos sus contenidos de teclado. print 'Lectura de la matriz A' for i in range(p): for j in range(q): A[i][j] = float(raw_input('Dame el componente (%d, %d): ' % (i, j))) print 'Lectura de la matriz B' for i in range(q): for j in range(r): B[i][j] = float(raw_input('Dame el componente (%d, %d): ' % (i, j))) # Creamos una matriz nula más para el resultado... C =[] for i in range(p): C.append( [0] * r) # Y efectuamos el cálculo del producto. for i in range(p): for j in range(r): for k in range(q): C[i][j] += A[i][k] * B[k][j] # Y mostramos el resultado por pantalla. print 'Multiplicación:' for i in range(q): for j in range(p): print C[i][j], print
En la multipicación me vuelto loco. Quiero saber si realmente lo hice bien como indica el resultado abajo. Dime el número de filas de A: 2 Dime el número de columnas de A (y filas de B): 2 Dime el número de columnas de B: 2 Lectura de la matriz A Dame el componente (0, 0): 2 Dame el componente (0, 1): 3 Dame el componente (1, 0): 4 Dame el componente (1, 1): 5 Lectura de la matriz B Dame el componente (0, 0): 2 Dame el componente (0, 1): 3 Dame el componente (1, 0): 4 Dame el componente (1, 1): 5 Multiplicación: 16.0 21.0 28.0 37.0 Edito: Le he estado dando vueltas a la cabeza y no consigo saber de donde saca estos resultados. Multiplicación: 16.0 21.0 28.0 37.0 Quizás no lo entiendo como se hace, antes que nada, quiero saber si son los resultados correctos.
|
|
« Última modificación: 16 Noviembre 2010, 17:54 pm por Meta »
|
En línea
|
|
|
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
Es que no lees detenidamente las letras! 251 Diseña un programa que lea una matriz y un número y devuelva una nueva matriz: la que resulta de multiplicar la matriz por el número. (El producto de un número por una matriz es la matriz que resulta de multiplicar cada elemento por dicho número.) M = [[1,2,3],[4,5,1]] n = 5 M x n = [[5,10,15],[20,25,5]] Saludos
|
|
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
Meta
|
¿No será con p y q? p = [[1,2,3],[4,5,1]] q = 5 p * q = [[5,10,15],[20,25,5]]
Aún así no lo entiendo. Voy a leer otra vez bien, bien. Falta el código nada más de la multiplicación. # Pedimos la dimensión de las matrices, p = int(raw_input('Dime el número de filas de A: ')) q = int(raw_input('Dime el número de columnas de A (y filas de B): ')) r = int(raw_input('Dime el número de columnas de B: ')) # Creamos dos matrices nulas... A = [] for i in range(p): A.append( [0] * q) B = [] for i in range(q): B.append ( [0] * r) # ...y leemos sus contenidos de teclado. print 'Lectura de la matriz A' for i in range(p): for j in range(q): A[i][j] = float(raw_input('Dame el componente (%d, %d): ' % (i, j))) print 'Lectura de la matriz B' for i in range(q): for j in range(r): B[i][j] = float(raw_input('Dame el componente (%d, %d): ' % (i, j))) # Creamos una matriz nula más para el resultado... C =[] for i in range(p): C.append( [0] * r) # Y efectuamos el cálculo del producto. for i in range(p): for j in range(r): for k in range(q): C[i][j] += A[i][k] * B[k][j] # Y mostramos el resultado por pantalla. print 'Multiplicación:'
Multiplicar matrices es un poco más difícil que sumarlas (y, por descontado, el operador * no calcula el producto de matrices). Una matriz A de dimensión p×q se puede multiplicar por otra matriz B si ésta es de dimensión q × r, es decir, si el número de columnas de la primera es igual al número de filas de la segunda. Hemos de pedir, pues, el número de filas y columnas de la primera matriz y sólo el número de columnas de la segunda. Supuestamente he creado 2 filas y 2 columnas de esta manera. [[0, 0], [0, 0]] [[0, 0], [0, 0]] Lo se porque puse de prueba esto para ver que me muestra. print A print B
Al final se me termina rellenándoce las litas A y B de esta manera pero no hace la multiplicación. [[2.0, 3.0], [4.0, 5.0]] [[2.0, 3.0], [4.0, 5.0]] Si hago lo que puse antes de estas manera. # Y mostramos el resultado por pantalla. print 'Multiplicación:' for i in range(q): for j in range(p): print C[i][j], print
Me muestra este resultado. Multiplicación: 16.0 21.0 28.0 37.0 Quiero saber si ese resultado es lo que tiene que dar justo el ejercicio 251) de la página 198. Muchas gracias. Edito:Lo coloco así para que se entienda. A: [[2.0, 3.0], [4.0, 5.0]] B: [[2.0, 3.0], [4.0, 5.0]] Ni yo me entiendo.
|
|
« Última modificación: 17 Noviembre 2010, 06:29 am por Meta »
|
En línea
|
|
|
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
Meta, ¿por que tiene que ser p y q? Le pongo los nombres que quiero Y sigues leyendo mal!¿En que punto el ejercicio 251 te pide que multipliques dos matrices? Dices que multipliques la matriz por un número, solo tienes que multiplicar cada valor de la matriz por ese número! Saludos
|
|
« Última modificación: 17 Noviembre 2010, 11:18 am por Novlucker »
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
Meta
|
Por lo que te entiendo. # Pedimos la dimensión de las matrices, p = int(raw_input('Dime el número de filas de A: ')) q = int(raw_input('Dime el número de columnas de A (y filas de B): ')) r = int(raw_input('Dime el número de columnas de B: ')) # Creamos dos matrices nulas... A = [] for i in range(p): A.append( [0] * q) B = [] for i in range(q): B.append ( [0] * r) # ...y leemos sus contenidos de teclado. print 'Lectura de la matriz A' for i in range(p): for j in range(q): A[i][j] = float(raw_input('Dame el componente (%d, %d): ' % (i, j))) print 'Lectura de la matriz B' for i in range(q): for j in range(r): B[i][j] = float(raw_input('Dame el componente (%d, %d): ' % (i, j))) # Creamos una matriz nula más para el resultado... C =[] for i in range(p): C.append( [0] * r) # Y efectuamos el cálculo del producto. for i in range(p): for j in range(r): for k in range(q): C[i][j] += A[i][k] * B[k][j] # Y mostramos el resultado por pantalla. print 'Multiplicación:' #for i in range(q): # for j in range(p): # print C[i][j], # print print B * r
print A r = 2 print B * r
No, no me sale, entiendo la explicación que me pussite aquí de esta manera pero no logro cuajarlo al mio. Me siento muy torpe, programación no es lo mio. M = [[1,2,3],[4,5,1]] n = 5 M x n = [[5,10,15],[20,25,5]]
|
|
|
En línea
|
|
|
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
Me doy por vencido ... ¿En que punto el ejercicio 251 te pide que multipliques dos matrices? Dices que multipliques la matriz por un número, solo tienes que multiplicar cada valor de la matriz por ese número! Insistes con pedir dos matrices, solo necesitas pedir una n = input('Ingresa el lado de la matriz: ') # Voy a crear una matriz cuadrada M = [[0 for i in range(n)]for e in range(n)] # Creo la matriz 'vacia', en realidad la he llenado de ceros for i in range(n): # Cargo cada uno de los elementos for e in range(n): M[i][e] = input('Ingresa el valor para [%i][%i]: '%(i,e)) print M m = input('Ingresa un numero por el cual multiplicar: ') for i in range(m): # Vuelvo a cargar los elementos pero esta vez multiplandolos for e in range(m): M[i][e] *= m print M
Lo podrías hacer todo en el mismo bucle (el primero), pero lo he hecho por separado para que lo notes un poco mejor Saludos
|
|
« Última modificación: 17 Noviembre 2010, 17:08 pm por Novlucker »
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
Meta
|
Gracias por la pacienca. No sabía que puedes meter instrucciones dentro de una matriz como hiciste por aquí. M = [[0 for i in range(n)]for e in range(n)]
|
|
|
En línea
|
|
|
|
|
|