Está en la página 1de 11

INSTITUTO POLITÉCNICO NACIONAL

ESCUELA SUPERIOR DE INGENIERÍA


MECÁNICA Y ELÉCTRICA

COMPUTACIÓN APLICADA

“OPERACIONES BASICAS DE MATRICES”

1
Contenido

Matrices ................................................................................................................................... 3

Orden de una matriz ............................................................................................................. 3

Suma .................................................................................................................................... 4

Resta .................................................................................................................................... 4

Producto de matrices. ........................................................................................................... 5

Programación ........................................................................................................................... 6

Diagrama de flujo ................................................................................................................. 7

Código fuente ........................................................................................................................... 8

Capturas de pantalla del programa anterior .................................... ¡Error! Marcador no definido.

Bibliografía ..................................................................................... ¡Error! Marcador no definido.

2
Matrices

Una matriz es una tabla bidimensional de números en cantidades abstractas que pueden sumarse y
multiplicarse. Las matrices se utilizan en el cálculo numérico, en la resolución de sistemas de
ecuaciones lineales y registrar los datos que dependen de varios parámetros. las matrices aparecen
de forma natural en geometría, estadística, economía, informática, física, etc...

Orden de una matriz


Una matriz es una tabla cuadrada o rectangular de datos (llamados elementos) ordenados en filas y
columnas, donde una fila es cada una de las líneas horizontales de la matriz y una columna es cada
una de las líneas verticales. A una matriz con m filas y n columnas se le denomina matriz m-por-n
(escrito m×n), y a m y n dimensiones de la matriz.

Matriz fila

Matriz columna

Orden de una matriz

Como se puede observar las matrices se denotan con letras mayúsculas: A, B, C, ... y los elementos
de las mismas con letras minúsculas y subíndices que indican el lugar ocupado: a, b, c, ... Un
elemento genérico que ocupe la fila i y la columna j se escribe aij. Si el elemento genérico aparece
entre paréntesis también representa a toda la matriz: A = (aij )

3
Matriz cuadrada. Es aquella que tiene el mismo número de filas que de columnas, m = n. En una
matriz cuadrada se llama diagonal principal a la línea oblicua formada por los elementos aij cuyos
subíndices son iguales.

Suma.
Dadas dos matrices del mismo orden, A y B, se define su suma como otra matriz, C, del mismo
orden que las matrices sumando cuyos elementos se obtienen sumando a cada elemento de la
primera matriz, A, el correspondiente elemento de la segunda matriz sumando, B:

Ejemplo:

Resta
La resta de dos matrices del mismo orden A y B, se define como la suma de A más la matriz opuesta
de B, por lo que resultará ser otra matriz del mismo orden, D, cuyos elementos se obtienen de restar
a cada elemento de la primera matriz A (minuendo) el elemento correspondiente de la matriz que
resta, B (sustraendo).

4
Ejemplo:

Producto de matrices.
Para poder multiplicar dos matrices A y B, (B *A ), el número de columnas de la matriz que multiplica
en primer lugar, A, debe ser igual al número de filas de la matriz que multiplica en segundo lugar, B.
Así pues, dadas dos matrices A(mxn), B(nxp), el resultado de multiplicar A por B, A*B, es otra matriz
C = A*B, con tantas filas como la matriz que multiplica en primer lugar y tantas columnas como la
matriz que aparece en el producto en segundo lugar, C(mxp). Los elementos de la matriz C se
obtienen de multiplicar las filas de la primera matriz por las columnas de la segunda matriz. Ese
producto consiste en multiplicar un elemento de la fila por el correspondiente de la columna y sumar
el resultado al resto de productos de elementos de esa fila por esa columna.

Ejemplo:

5
Nuevamente se realiza una multiplicación de matrices cambiando el orden de los productos:

NOTA: Dado como está definida la multiplicación de matrices, y tal como se aprecia, se tiene que la
multiplicación de matrices, en general, no cumple la propiedad conmutativa:

Está claro para el caso de dos matrices de distinto orden y en donde uno de los dos productos no
exista (porque no se cumple el requisito para poderse multiplicar). El resultado que exista no
coincidirá con el otro que no existe, por lo que no se cumple la propiedad conmutativa. Para el caso
de que las dos matrices sean de distinto orden y los dos productos existan, porque se cumple el
requisito o condición necesaria para poderse multiplicar, el resultado de B A ⋅ será una matriz de
distinto orden que el resultado de A*B, por lo que tampoco se cumple la propiedad conmutativa,
como se ha visto en el ejemplo anterior. Si las dos matrices son del mismo orden, para que los dos
productos existan, deben ser matrices cuadradas, para que se cumpla el requisito para poderse
multiplicar, pero tampoco se cumple, en general, la propiedad conmutativa. En el siguiente ejemplo
se da el caso de la existencia de los dos productos dando como resultado una matriz cuadrada del
mismo orden en ambos casos, pero que no coincide:

Programación
En base a los principios de las operaciones básicas en matrices se procede a desarrollar un código
fuente en el lenguaje C, que realice tales cálculos.

6
Diagrama de flujo

Diagrama de flujo de operaciones elementales con matrices cuadradas

7
Código fuente

#include<stdio.h>
#include<stdlib.h>

float** allocMtz(size_t row, size_t col);


void setMtz(float** ptr, size_t row, size_t col);
void sum(float** ptr_a, float** ptr_b, size_t row_a, size_t col_a, size_t row_b, size_t col_b);
void sub(float** ptr_a, float** ptr_b, size_t row_a, size_t col_a, size_t row_b, size_t col_b);
void mult(float** ptr_a, float** ptr_b, size_t row_a, size_t col_a, size_t row_b, size_t col_b);
void display(float** ptr, size_t row, size_t col);

int main(void) {

float** mtz_a, ** mtz_b;


size_t fila_a, col_a, fila_b, col_b;
unsigned int opc;

puts("Matriz A:\n");
printf("Numero de filas: ");
scanf("%zu", &fila_a);
printf("Numero de columnas: ");
scanf("%zu", &col_a);

printf("Matriz B:\n\n");
printf("Numero de filas: ");
scanf("%zu", &fila_b);
printf("Numero de columnas: ");
scanf("%zu", &col_b);

mtz_a = allocMtz(fila_a, col_a);


mtz_b = allocMtz(fila_b, col_b);

puts("\t\tIntroduce la Matriz A: \n");


setMtz(mtz_a, fila_a, col_a);
puts("\t\tIntroduce la Matriz B: \n");
setMtz(mtz_b, fila_b, col_b);

puts("\t\tCalculadora de Matrices\n\n1.Suma\n2.Resta\n3.Multiplicacion");
scanf("%u", &opc);

switch (opc) {
case 1: sum(mtz_a, mtz_b, fila_a, col_a, fila_b, col_b); break;
case 2: sub(mtz_a, mtz_b, fila_a, col_a, fila_b, col_b); break;
case 3: mult(mtz_a, mtz_b, fila_a, col_a, fila_b, col_b); break;
default: puts("Opcion invalida...");

8
}

return 0;
}

float** allocMtz(size_t row, size_t col) {


float** ptr = malloc(sizeof *ptr * row);

if (!ptr)
exit(EXIT_FAILURE);

for (size_t i = 0; i < row; i++) {


ptr[i] = malloc(sizeof **ptr * col);
if (!ptr[i])
exit(EXIT_FAILURE);
}

return ptr;
}

void setMtz(float** ptr, size_t row, size_t col) {


for (size_t i = 0; i < row; i++) {
for (size_t j = 0; j < col; j++)
scanf("%f", &ptr[i][j]);
}
return;
}

void display(float** ptr, size_t row, size_t col) {


for (size_t i = 0; i < row; i++) {
for (size_t j = 0; j < col; j++)
printf("%g\t", ptr[i][j]);
putchar('\n');
}
return;
}
void sum(float** ptr_a, float** ptr_b, size_t row_a, size_t col_a, size_t row_b, size_t col_b) {
if (row_a == row_b && col_a == col_b) {
float** res = allocMtz(row_a, col_a);

for (size_t i = 0; i < row_a; i++) {


for (size_t j = 0; j < col_a; j++)
res[i][j] = (double)ptr_a[i][j] + ptr_b[i][j];
}
printf("\t\tA + B\n\n");
display(res, row_a, col_a);
}

9
else
puts("No se puede realizar la suma porque las matrices no son del mismo tam!");
return;
}

void sub(float** ptr_a, float** ptr_b, size_t row_a, size_t col_a, size_t row_b, size_t col_b) {
if (row_a == row_b && col_a == col_b) {
float** res = allocMtz(row_a, col_a);

for (size_t i = 0; i < row_a; i++) {


for (size_t j = 0; j < col_a; j++)
res[i][j] = (double)ptr_a[i][j] - ptr_b[i][j];
}
printf("\t\tA - B\n\n");
display(res, row_a, col_a);
}
else
puts("No se puede realizar la resta porque las matrices no son del mismo tam!");
return;
}

void mult(float** ptr_a, float** ptr_b, size_t row_a, size_t col_a, size_t row_b, size_t col_b) {
if (col_a == row_b) {
float** res = allocMtz(row_a, col_b);

for (size_t i = 0; i < row_a; i++) {


for (size_t j = 0; j < col_b; j++)
res[i][j] = 0.0;
}

for (size_t i = 0; i < row_a; i++) {


for (size_t j = 0; j < col_b; j++) {
for (size_t k = 0; k < col_a; k++)
res[i][j] += ptr_a[i][k] * ptr_b[k][j];
}
}
printf("\t\tA x B\n\n");
display(res, row_a, col_b);
}
else
puts("No se puede realizar A x B");
return;
}

10
https://www.uv.mx/personal/aherrera/files/2014/08/11d.-ALGEBRA-DE-MATRICES-4.pdf

http://www.recursos-virtuales.com/blog/metodos1/matrices.pdf

https://www.uv.es/~perezsa/docencia/material/IMEE/Matrices.pdf

http://cb.mty.itesm.mx/ma1010/materiales/ma1010-06.pdf

https://ydadsi409862.wordpress.com/2012/11/08/d-operaciones-matematicas/

11

También podría gustarte