elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Ejemplo Python suma_matrices
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ejemplo Python suma_matrices  (Leído 4,920 veces)
Meta


Desconectado Desconectado

Mensajes: 3.439



Ver Perfil WWW
Ejemplo Python suma_matrices
« en: 16 Noviembre 2010, 06:33 am »

Buenas:

Estoy haciendo un ejemplo llamado suma_matrices_4.py de la página 197 que PDF que puedes ver en mi firma abajo.

Código
  1. # encoding: utf-8
  2. # Pedimos la dimensión de las matrices,
  3. m = int(raw_input('Dime el número de filas: '))
  4. n = int(raw_input('Dime el número de columnas: '))
  5.  
  6. # Creamos dos matrices nulas...
  7. A = []
  8. for i in range(m):
  9.    A.append( [0] * n)
  10.  
  11. B = []
  12. for i in range(m):
  13.    B.append ( [0] * n)
  14.  
  15. # ...y leemos sus contenidos de teclado.
  16. print 'Lectura de la matriz A'
  17. for i in range(m):
  18.    for j in range(n):
  19.        A[i][j] = float(raw_input('Dame el componente (%d, %d): ' % (i, j)))
  20.  
  21. print 'Lectura de la matriz B'
  22. for i in range(m):
  23.    for j in range(n):
  24.        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.
Citar
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

Desconectado Desconectado

Mensajes: 22



Ver Perfil WWW
Re: Ejemplo Python suma_matrices
« Respuesta #1 en: 16 Noviembre 2010, 09:04 am »

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. ;D


En línea

Meta


Desconectado Desconectado

Mensajes: 3.439



Ver Perfil WWW
Re: Ejemplo Python suma_matrices
« Respuesta #2 en: 16 Noviembre 2010, 14:55 pm »

JEjeje.

Si no me lo dices no me entero, no lo iba a poner todo junto.

Código
  1. # encoding: utf-8
  2. # Pedimos la dimensión de las matrices,
  3. m = int(raw_input('Dime el número de filas: '))
  4. n = int(raw_input('Dime el número de columnas: '))
  5.  
  6. # Creamos dos matrices nulas...
  7. A = []
  8. for i in range(m):
  9.    A.append( [0] * n)
  10.  
  11. B = []
  12. for i in range(m):
  13.    B.append ( [0] * n)
  14.  
  15. # ...y leemos sus contenidos de teclado.
  16. print 'Lectura de la matriz A'
  17. for i in range(m):
  18.    for j in range(n):
  19.        A[i][j] = float(raw_input('Dame el componente (%d, %d): ' % (i, j)))
  20.  
  21. print 'Lectura de la matriz B'
  22. for i in range(m):
  23.    for j in range(n):
  24.        B[i][j] = float(raw_input('Dame el componente (%d, %d): ' % (i, j)))
  25.  
  26. #------------------
  27.  
  28. C =[]
  29. for i in range(m):
  30.    C.append( [0] * n)
  31.  
  32. # Empieza el cálculo de la suma.
  33. for i in range(m):
  34.    for j in range(n):
  35.        C[i][j] = A[i][j] + B[i][j]
  36.  
  37. # Y mostramos el resultado por pantalla.
  38. print 'Suma:'
  39. for i in range(m):
  40.    for j in range(n):
  41.        print C[i][j],
  42.    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.

Citar
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ódigo
  1. C[i][j] = A[i][j] - B[i][j]
« Última modificación: 16 Noviembre 2010, 16:49 pm por Meta » En línea

Meta


Desconectado Desconectado

Mensajes: 3.439



Ver Perfil WWW
Re: Ejemplo Python suma_matrices
« Respuesta #3 en: 16 Noviembre 2010, 17:24 pm »

Haciendo la multiplicación del ejercicio 251) he copiado y modificado parte del código del PDF y he puesto esto.

Código
  1. # Pedimos la dimensión de las matrices,
  2. p = int(raw_input('Dime el número de filas de A: '))
  3. q = int(raw_input('Dime el número de columnas de A (y filas de B): '))
  4. r = int(raw_input('Dime el número de columnas de B: '))
  5.  
  6. # Creamos dos matrices nulas...
  7. A = []
  8. for i in range(p):
  9.    A.append( [0] * q)
  10.  
  11. B = []
  12. for i in range(q):
  13.    B.append ( [0] * r)
  14.  
  15. # ...y leemos sus contenidos de teclado.
  16. print 'Lectura de la matriz A'
  17. for i in range(p):
  18.    for j in range(q):
  19.        A[i][j] = float(raw_input('Dame el componente (%d, %d): ' % (i, j)))
  20.  
  21. print 'Lectura de la matriz B'
  22. for i in range(q):
  23.    for j in range(r):
  24.        B[i][j] = float(raw_input('Dame el componente (%d, %d): ' % (i, j)))
  25.  
  26. # Creamos una matriz nula más para el resultado...
  27.  
  28. C =[]
  29. for i in range(p):
  30.    C.append( [0] * r)
  31.  
  32. # Y efectuamos el cálculo del producto.
  33. for i in range(p):
  34.    for j in range(r):
  35.        for k in range(q):
  36.            C[i][j] += A[i][k] * B[k][j]
  37.  
  38. # Y mostramos el resultado por pantalla.
  39. print 'Multiplicación:'
  40. for i in range(q):
  41.    for j in range(p):
  42.        print C[i][j],
  43.    print

En la multipicación me vuelto loco. Quiero saber si realmente lo hice bien como indica el resultado abajo.

Citar
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 Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: Ejemplo Python suma_matrices
« Respuesta #4 en: 16 Noviembre 2010, 19:09 pm »

Es que no lees detenidamente las letras! :-(
Citar
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.)
Código:
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


Desconectado Desconectado

Mensajes: 3.439



Ver Perfil WWW
Re: Ejemplo Python suma_matrices
« Respuesta #5 en: 17 Noviembre 2010, 05:31 am »

¿No será con p y q?

Código
  1. p = [[1,2,3],[4,5,1]]
  2. q = 5
  3. 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.

Código
  1. # Pedimos la dimensión de las matrices,
  2. p = int(raw_input('Dime el número de filas de A: '))
  3. q = int(raw_input('Dime el número de columnas de A (y filas de B): '))
  4. r = int(raw_input('Dime el número de columnas de B: '))
  5.  
  6. # Creamos dos matrices nulas...
  7. A = []
  8. for i in range(p):
  9.    A.append( [0] * q)
  10.  
  11. B = []
  12. for i in range(q):
  13.    B.append ( [0] * r)
  14.  
  15. # ...y leemos sus contenidos de teclado.
  16. print 'Lectura de la matriz A'
  17. for i in range(p):
  18.    for j in range(q):
  19.        A[i][j] = float(raw_input('Dame el componente (%d, %d): ' % (i, j)))
  20.  
  21. print 'Lectura de la matriz B'
  22. for i in range(q):
  23.    for j in range(r):
  24.        B[i][j] = float(raw_input('Dame el componente (%d, %d): ' % (i, j)))
  25.  
  26. # Creamos una matriz nula más para el resultado...
  27.  
  28. C =[]
  29. for i in range(p):
  30.    C.append( [0] * r)
  31.  
  32. # Y efectuamos el cálculo del producto.
  33. for i in range(p):
  34.    for j in range(r):
  35.        for k in range(q):
  36.            C[i][j] += A[i][k] * B[k][j]
  37.  
  38. # Y mostramos el resultado por pantalla.
  39. print 'Multiplicación:'

Citar
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.

Citar
[[0, 0], [0, 0]]
[[0, 0], [0, 0]]

Lo se porque puse de prueba esto para ver que me muestra.

Código
  1. print A
  2. print B

Al final se me termina rellenándoce las litas A y B de esta manera pero no hace la multiplicación.

Citar
[[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.
Código
  1. # Y mostramos el resultado por pantalla.
  2. print 'Multiplicación:'
  3. for i in range(q):
  4.    for j in range(p):
  5.        print C[i][j],
  6.    print

Me muestra este resultado.
Citar
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 Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: Ejemplo Python suma_matrices
« Respuesta #6 en: 17 Noviembre 2010, 11:10 am »

Meta, ¿por que tiene que ser p y q? Le pongo los nombres que quiero :xD 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


Desconectado Desconectado

Mensajes: 3.439



Ver Perfil WWW
Re: Ejemplo Python suma_matrices
« Respuesta #7 en: 17 Noviembre 2010, 16:23 pm »

Por lo que te entiendo.

Código
  1. # Pedimos la dimensión de las matrices,
  2. p = int(raw_input('Dime el número de filas de A: '))
  3. q = int(raw_input('Dime el número de columnas de A (y filas de B): '))
  4. r = int(raw_input('Dime el número de columnas de B: '))
  5.  
  6. # Creamos dos matrices nulas...
  7. A = []
  8. for i in range(p):
  9.    A.append( [0] * q)
  10.  
  11. B = []
  12. for i in range(q):
  13.    B.append ( [0] * r)
  14.  
  15. # ...y leemos sus contenidos de teclado.
  16. print 'Lectura de la matriz A'
  17. for i in range(p):
  18.    for j in range(q):
  19.        A[i][j] = float(raw_input('Dame el componente (%d, %d): ' % (i, j)))
  20.  
  21. print 'Lectura de la matriz B'
  22. for i in range(q):
  23.    for j in range(r):
  24.        B[i][j] = float(raw_input('Dame el componente (%d, %d): ' % (i, j)))
  25.  
  26. # Creamos una matriz nula más para el resultado...
  27.  
  28. C =[]
  29. for i in range(p):
  30.    C.append( [0] * r)
  31.  
  32. # Y efectuamos el cálculo del producto.
  33. for i in range(p):
  34.    for j in range(r):
  35.        for k in range(q):
  36.            C[i][j] += A[i][k] * B[k][j]
  37.  
  38. # Y mostramos el resultado por pantalla.
  39. print 'Multiplicación:'
  40. #for i in range(q):
  41. #    for j in range(p):
  42. #        print C[i][j],
  43. #    print
  44.  
  45. print B * r

Código
  1. print A
  2. r = 2
  3. 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.

Código
  1. M = [[1,2,3],[4,5,1]]
  2. n = 5
  3. M x n = [[5,10,15],[20,25,5]]

En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: Ejemplo Python suma_matrices
« Respuesta #8 en: 17 Noviembre 2010, 17:05 pm »

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 :¬¬
Código
  1. n = input('Ingresa el lado de la matriz: ')
  2. # Voy a crear una matriz cuadrada
  3.  
  4. M = [[0 for i in range(n)]for e in range(n)]
  5. # Creo la matriz 'vacia', en realidad la he llenado de ceros
  6. for i in range(n):
  7. # Cargo cada uno de los elementos
  8.    for e in range(n):
  9.        M[i][e] = input('Ingresa el valor para [%i][%i]: '%(i,e))
  10. print M
  11.  
  12. m = input('Ingresa un numero por el cual multiplicar: ')
  13. for i in range(m):
  14. # Vuelvo a cargar los elementos pero esta vez multiplandolos
  15.    for e in range(m):
  16.        M[i][e] *= m
  17. 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


Desconectado Desconectado

Mensajes: 3.439



Ver Perfil WWW
Re: Ejemplo Python suma_matrices
« Respuesta #9 en: 18 Noviembre 2010, 06:48 am »

Gracias por la pacienca.

No sabía que puedes meter instrucciones dentro de una matriz como hiciste por aquí.

Código
  1. M = [[0 for i in range(n)]for e in range(n)]

:)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[PYTHON]Ejemplo: transferir archivos por internet
Scripting
WaAYa HaCK 5 7,328 Último mensaje 22 Febrero 2012, 11:26 am
por MacGyver87
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines