Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
Clase 11: Matrices
Profesoras de Cátedra:Pía CortésAntonia Larrañaga
¿Quiénes somos?
Pía Cortés
Soy casi Astrónoma, estoy terminando el Magíster en Astronomía en la Universidad de Chile. Estudio planetas extrasolares y programo todo el día. Me gusta leer, las hamburguesas y los gatos.
Antonia Larrañaga
Estudié Ingeniería Eléctrica en la U. de Chile. Actualmente trabajo en The Not Company, donde hacemos comida vegana a partir de inteligencia artificial. Me gusta cocinar, tejer, hacer yoga y los gatos.
Temario de la clase
1. Definición de matrices
2. Ejemplos con matrices
3. Transpuesta de una matriz
Definición de matrices
¿Qué es una matriz?
Las matrices pueden ser descritas como arreglos de arreglos.
Permite almacenar un conjunto de datos de un mismo tipo.
0 1 2 3 4
0 31 22 13 5 45
1 73 51 8 99 2
2 26 14 91 66 82
filas
columnasParece una tabla.
¿Qué es una matriz?
1ra dim.
0 1 2 3 4
0 18 6 32 88 59
1 73 51 8 99 20
2 26 14 91 66 93
2da dim.
3ra dim.
0 1 2 3 4
0 56 47 19 4 45
1 73 51 8 99 12
2 26 14 91 66 76
0 1 2 3 4
0 31 22 13 5 45
1 73 51 8 99 2
2 26 14 91 66 82
Pueden tener más de 2 dimensiones!
0
1
2
Matrices en C++
int poblacion [4][3];
float precios [3][3];
bool disponibles[5][7];
string ciudades [20][5];
Tipo Tamaño
La matriz ciudades puede contener el nombre de
hasta 100 (20*5) ciudades!
filas cols
Matrices en C++
int calendario [5][7][12];
float precios [3][3][7];
Tipo TamañoEn calendario
podemos registrar hasta 420 (5*7*12) valores enteros.
1d 2d 3d
Matrices en C++
float precios[3][3] = {{1.5, 1.7, 1.2},{0.7, 2.3, 3.6}, {1.0, 0.5, 2.1}};
int notas[3][2][4] = {{{4,3,6,5}, {1,7,4,5}}, {{5,6,4,2}, {4,5,4,7}}, {{7,6,4,5}, {6,3,5,4}}};
string nombres [3][4] = {{“Ana”, “Maria”, “Galvez”, “Ruiz”}, {“Karen”, “Sofia”, “Bustos”, “Diaz”}, {“Lucia”, “”, “Gomez”, “Vela”}};
Tipo
Si conoces tus datos, puedes
ponerlos directamente
Operaciones con matrices
Creamos una matriz (arreglo multidimensional) de números enteros de la siguiente forma:
int x [3][2] = {{31, 22},{73, 51},{26, 14}};
0 1
0 31 22
1 73 51
2 26 14
x =
Operaciones con matrices
Podemos acceder al elemento resaltado de la siguiente forma:
cout << x[1][0]; // nombre_matriz[indice_fila][indice_columna]
0 1
0 31 22
1 73 51
2 26 14
x =
Y ¿cómo accedo a un valor
específico?
Ejemplos con matrices
Ingresar elementos en una matriz
int main(){ int numeros[2][3][2]; // capacidad: 2*3*2 = 12 cout << "Ingrese 12 valores: \n"; for (int i = 0; i < 2; ++i){ // limita 1ra dim for (int j = 0; j < 3; ++j){ // limita 2da dim for (int k = 0; k < 2; ++k ){ // limita 3ra dim
cin >> numeros[i][j][k]; } }
} return 0;}
¿Cómo se guardarán los valores 2, 31, 6, 25, 11, 65, 47, 16, 79, 33, 82, 95?
Imprimir una matriz numeros
contiene lo siguiente!0 1 2
0 31 25 65
1 16 33 950 1 2
0 2 6 11
1 47 79 82
0
1
Imprimir una matriz
int main(){ int x[3][2] = {{0,1}, {2,3}, {4,5}}; for (int fil = 0; fil < 3; fil++){ for (int col = 0; col < 2; col++){ cout << "x[" << fil << "][" << col << "]="
<< x[fil][col] << " "; }
cout << endl; } return 0;}
¿Qué se imprime?
Imprimir una matriz
x[0][0]=6 x[0][1]=1x[1][0]=2 x[1][1]=3x[2][0]=4 x[2][1]=0
Imprime el siguiente mensaje!
Multiplicación de matrices
Ejemplo: Multiplicar dos matricesEl programa toma dos matrices y las multipla devolviendo una tercera matrix resultante. La multiplicación de matrices se realiza como se muestra a continuación:
0 1 2
0 4 2 4
1 8 3 1
0 1
0 44 72
1 37 73
0 1
0 3 5
1 2 8
2 7 9
2 filas
3 columnas
3 filas
2 columnas
2 filas
2 columnas
Ejemplo: Multiplicar dos matrices0 1 2
0 4 2 4
1 8 3 1
0 1
0 44 72
1 37 73
0 1
0 3 5
1 2 8
2 7 9
4*3 + 2*2 + 4*7 = 44
4*5 + 2*8 + 4*9 = 72
8*3 + 3*2 + 1*7 = 37
8*5 + 3*8 + 1*9 = 73
#include <iostream>using namespace std;int main(){ // Declaramos las dos matrices matriz a multiplicar y la resultante int a[10][10]; int b[10][10]; int multi[10][10]; // Guardamos los datos cout << "Ingresa los elementos de la matriz a: ";
for (int i = 0; i < 10; i++)
for (int j = 0; j < 10; j++)
cin >> a[i][j];
cout << "Ingresa los elementos de la matriz b: "; for (int i = 0; i < 10; i++)
for (int j = 0; j < 10; j++)
cin >> b[i][j];
// Inicializamos la matriz resultante con ceros
for (int i = 0; i < 10; i++)
for (int j = 0; j < 10; j++)
multi[i][j] = 0;
// Realizamos la multiplicación
for(i = 0; i < 10; ++i)
for(j = 0; j < 10; ++j)
for(k = 0; k < 10; ++k) {
mult[i][j] += a[i][k] * b[k][j];}
cout << "La multiplicación entre ambas es : \n ";
for (int i = 0; i < 10; i++)
for (int j = 0; j< 10; j++)
cout << multi[i][j] << " ";
cout << "\n ";}
return 0;
}
Transpuesta de una matriz
Ejemplo: Encontrar la transpuesta de una matriz El programa toma una matriz e imprime su transpuesta
La transpuesta de una matriz se obtiene cambiando ordenadamente las filas por las columnas.
.
0 1 2 3
0 1 3 9 5
1 4 2 7 10
0 1
0 1 4
1 3 2
2 9 7
3 5 10
#include<iostream>using namespace std;int main (){ int a[10][10], f, c, i, j; cout << "Ingresar número de filas y columnas : "; cin >> f >> c; cout << "Ingresa los elementos de la matriz : "; for (i = 0; i < f; i++) for (j = 0; j < c; j++) cin >> a[i][j]; cout << "La matriz transpuesta es : \n "; for (i = 0; i < c; i++) { for (j = 0; j < f; j++) cout << a[j][i] << " "; cout << "\n "; } return 0;}
Créditos diseños
● Macarena Ibsen, diseñadora gráfica, Branding NiñasPRO.
● Íconos de Freepik usados en estas diapositivas,
licenciados bajo Creative Commons BY 3.0.
https://www.flaticon.com/authors/freepik
¿Preguntas?