Objetivos de la Practica
La práctica desarrollada a continuación persigue una serie de objetivos, dentro de los cuales
figuran:
1. Practicar con cada uno de los problemas donde es necesaria la implementación de los
conocimientos obtenidos a cerca de arreglos bidimensionales o matrices. Para desarrollar los
programas de esta práctica, el alumno debe crear distintos archivos y obtener los ejecutables.
(Acompañados de una memoria escrita)
2. Introducirse en los conceptos básicos relacionados con matrices, en el lenguaje Python de
programación.
3. Implementar las recomendaciones y estándares de programación, aprendidos a lo largo del
trimestre Agosto - octubre 2016
Para ello, nos centraremos en programas independientes que manejan matrices. Los problemas
que se proponen requieren ser realizados de la manera más eficiente, eficaz y estándar posible.
#3-) multiplicar matriz
def main():
MatrizA = []
MatrizB = []
MatrizR = []
filasA = int(raw_input("Introduzca el numero de filas de la
matriz A: "))
columnasA = int(raw_input("Introduzca el numero de columnas
de la matriz A: "))
filasB = int(raw_input("Introduzca el numero de filas de la
matriz B: "))
columnasB = int(raw_input("Introduzca el numero de columnas
de la matriz B: "))
if columnasA != filasB:
print "Operacion sin Solucion"
else:
print "**** Matriz A ****"
for i in range (filasA):
[Link] ([0]*columnasA)
for f in range (filasA):
for c in range (columnasA):
MatrizA[f][c] = int(raw_input("Elemento %d,%d: "
% (f,c)))
print "**** Matriz B ****"
for i in range (filasB):
[Link] ([0]*columnasB)
for f in range (filasB):
for c in range (columnasB):
MatrizB[f][c] = int(raw_input("Elemento %d,%d: "
% (f,c)))
print "**** Matrices ****"
print "Matriz A"
print MatrizA
print "Matriz B"
print MatrizB
print "**** Multiplicar Matrices ****"
for k in range(filasA):
[Link]([0]*columnasB)
for i in range(columnasB):
MatrizR[k][i] = 0
for i in range(filasA):
for j in range(columnasA):
for k in range(columnasB):
MatrizR[i][k] = MatrizR[i][k] +
(MatrizA[i][j] * MatrizB[j][k])
print MatrizR
main()
#4-) mover los elementos de una matriz a otra
def main():
MatrizA = []
MatrizB = []
filasA = int(raw_input("Introduzca el numero de filas de la
matriz A: "))
columnasA = int(raw_input("Introduzca el numero de columnas
de la matriz A: "))
filasB = filasA
columnasB = columnasA
print "**** Matriz A ****"
for i in range (filasA):
[Link] ([0]*columnasA)
for f in range (filasA):
for c in range (columnasA):
MatrizA[f][c] = int(raw_input("Elemento %d,%d: " %
(f,c)))
MatrizB = MatrizA
print " La matriz con los elementos movidos es", MatrizB
main()
#5-) volver nulos o ceros todos los elementos de una matriz
import random
def matrizcero(fil,col): #crea la matriz
matriz = []
for i in range (fil):
[Link]([5]*col)#se llena la matriz completa de 5
for i in range (fil):# recorre las filas
for p in range (col):# recorre las columnas
matriz[i][p]= 0 #vuelve todos los elementos 0 de la
matriz
return matriz
def imprimir_matriz(matriz,fil,col):
for i in range(fil):
for p in range(col):
print matriz[i][p]
def main():
fil= [Link](1,8)#genera un numero aleatorio de 1
al 8
col= [Link](1,8)
matriz= matrizcero(fil,col)
imprimir_matriz(matriz,fil,col)#otra forma de imprimir la
matriz
print matrizcero(fil,col)#este es una forma de imprimir la
matriz
main()
#6-) imprimir una matriz o vector
import random
def vecto(x):#crea y llena el vector de elementos
vector= []#se declara vector vacio
for i in range(x):#recorre el vector
n= [Link](0,100)#numero aleatorio de 1 a 100
[Link](n)#se le a?ade el numero aleatorio
generado al vector
return vector
def imprimir(vector,x):
for i in range (x):
print vector[i]#imprime cada elemento del vector
def main():
x= [Link](2,20)
vector1= vecto(x)
imprimir(vector1,x)
main()
#7-) intercambiar dos filas
def intercambiarFilas(matriz, m, n):
p=int(raw_input("fila a intercambiar (0-" + str(m-1) +
str(")")))
q=int(raw_input("fila a intercabiar (0-" + str(m-1) +
str(")")))
if p < m and q < m:
for j in range(n):
a = matriz[q][j]
matriz[q][j] = matriz[p][j]
matriz[p][j] = a
print "intercambio filas \n"
printMatrix(matriz, m, n)
else:
print "Solo son", m,"filas"
return
#8-) intercambiar dos columnas
def intercambiarColumnas(matriz,m , n):
p=int(raw_input("columna a intercambiar (0-" + str(n-1) +
str(")")))
q=int(raw_input("columna a intercabiar (0-" + str(n-1) +
str(")")))
if (p < n) and (q < n):
for i in range(m):
a = matriz[i][p]
matriz[i][p] = matriz[i][q]
matriz[i][q] = a
print "intercambio columnas \n"
printMatrix(matriz, m, n)
else:
print "La matriz solo consta de", n, "columnas"
return
#9-) calculo de determinante
def determinanteGauss(matrix, m, n):
if m == n:
ver = 0
for i in range(n):
for j in range (n):
if matrix[i][j] == 0:
ver = ver + 1
if ver == (n * n):
print "EL determinante es 0"
else:
c = 0
l = 0
k = 0
if matrix[k][k] == 0:
l = k + 1
c = 1
while matrix[l][k] == 0:
l = l + 1
i = 0
for j in range(n):
a = matrix[i][j]
matrix[i][j] = matrix[l][j]
matrix[l][j] = a
for k in range(n):
for i in range(k + 1, n):
if matrix[k ][k ] == 0:
print "No se puede realizar por este
método "
break
else:
m = (matrix[i][k] / matrix[k][k])
for j in range(n):
matrix[i][j] = matrix[i][j] - m *
matrix[k][j]
if c == 1:
d = -1.0
else:
d = 1.0
printMatrix(matrix, n, n)
for p in range(n):
d *= matrix[p][p]
print d
else:
print "Solo se aceptan matrices cuadradas"
return