Práctica 7: Matrices para aplicaciones especiales#
En el ambiente de programación MATLAB® es posible generar matrices con características especiales, por ejemplo, la creación de una matriz identidad de dimenciones \(4\times 4\):
I=eye(4)
I = 4×4 double 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1
Una matriz \(V\) de dimensiones \(1\times 5\), formada con unos, para escalarla o generar constantes:
V=ones(1,5)
V = 1×5 double 1 1 1 1 1
La transpuesta de una matriz se usa en ciertas aplicaciones de las matemáticas y el álgebra lineal. En MATLAB®, la comilla simple implica hacer transpuesta a una matriz, por ejemplo, sean las matrices \(A\) y \(B\):
A=[-1 4 3;-4 10 15; 3 6 11]
B=[-2 7 5]
A = 3×3 double -1 4 3 -4 10 15 3 6 11
B = 1×3 double -2 7 5
Las transpuestas de estas dos matrices son:
En MATLAB se ecribe:
A'
B'
ans = 3×3 double -1 -4 3 4 10 6 3 15 11
ans = 3×1 double -2 7 5
Operaciones con matrices#
Cuando se realizan operaciones con matrices, es muy importante que exista compatibilidad entre las dimensiones de las mismas. Para que sea posible una multiplicación entre matrices, bebe existrir un puente que genera compatibilidad entre las matrices para poder multiplicarlas, además de que las dimensiones de las matrices que se están multiplicando dicatrán las dimenciones de la matriz resultante:
La matriz \(X\) que resulta de multiplicar la matriz \(A\) por la matriz \(C\) tendrá dimensiones \(3\times 1\):
Se obtiene este resultado debido a las dimensiones de las matrices involucradas en el producto: \(A \in \mathbb{R}^{3\times 3}\) y \(C\in \mathbb{R}^{3\times 1}\). Se observa la compatibilidad de las matrices para la operación de multiplicación:
Por otro lado, si una matriz \(Y\) es el resultado de la multiplicacion de la matriz \(C\) por su transpuesta, se obtiene una matriz de dimensiones \(3 \times 3\) debido a que \(C \in \mathbb{R}^{3\times 1} \) y \(C^{T} \in \mathbb{R}^{1\times 3} \), dando como resultado las dimensiones:
A=[-1 4 3;-4 10 15; 3 6 11]
C=[-2;7;5]
X=A*B'
Y=C*C'
A = 3×3 double -1 4 3 -4 10 15 3 6 11
C = 3×1 double -2 7 5
X = 3×1 double 45 153 91
Y = 3×3 double 4 -14 -10 -14 49 35 -10 35 25
Una operación muy popular en el álgebra lienal y de matrices es la represntación de una forma cuadrática, sean las matrices \(V\) y \(A\):
La forma cuadrática del vector \(V\) es:
Matrices diagonales#
La extracción de la diagonal principal de una matriz se puede realizar en MATLAB®, accediendo manuelamente a las localidade de la diagonal de interés y alamacenandolos en una matriz o arreglo para su posterior manipulación, por ejemplo, para una matriz:
Un vector que contiene a los elementos diagonal principal \(D=\begin{bmatrix}-1&10&15\end{bmatrix}^T\)es:
En MATLAB®, esta extracción de la diagonal pirncipal se realiza con el siguiente código:
A=[-1 4 3;-4 10 15; 3 6 11]
D=[A(1,1) A(2,2) A(3,3)]'
A = 3×3 double -1 4 3 -4 10 15 3 6 11
D = 3×1 double -1 10 11
La extracción atomática se realiza usando el comando o función diag()
como sigue:
D=diag(A)
D = 3×1 double -1 10 11
Es posible también extraer otras diagonales aparte de la diagonal principal si se define una segunda entrada o argumento j a la función o instrucción diag()
. Por ejemplo, para la matriz \(A\) antes definida, se puede extraer la diagonal formada a partir de la segunda columna:
diag(A,1)
ans = 2×1 double 4 15
Se crear una matriz diagonal a partir de un vector, de manera tal que los elementos del vector formarán la diagonal principal de la matriz creada:
D=[1 -4 5 6]
diag(D)
D = 1×4 double 1 -4 5 6
ans = 4×4 double 1 0 0 0 0 -4 0 0 0 0 5 0 0 0 0 6
Tambien se puede desplazar la diagonal principal en la matriz a crear, especicifando la columna de inicio deseada, en el momento de la creación de la matriz:
D=[1 -4 5 6]
diag(D,2)
D = 1×4 double 1 -4 5 6
ans = 6×6 double 0 0 1 0 0 0 0 0 0 -4 0 0 0 0 0 0 5 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 0
Matriz mágica#
Una matriz mágica es aquella que que tiene la característica de que la suma de los elementos de sus filas, colunas y diagonales es igual a la misma constante:
En esta matriz especial se cumple que la suma de los elementos en las columnas:
Es igual a la suma de los elementos en las filas:
A su vez igual a la suma de los elementos de la diagonal principal;
En MATLAB®, el comando o instrucción magic(n)
crea una matriz de dimensiones \(n\times n\) denominada matriz mágica, que cumple con las características antes mencionadas. Lo anterior se ejemplifica con las siguientes líneas de código:
M=magic(3) %Se crea una matriz mágica de dimensiones 3x3
suma_columnas=sum(M)%Se calcula la suma de los elementos de las columnas
suma_diagonal=sum(diag(M))%Se calcula la suma de los elementos en la diagonal principal
%Para poder hacer la suma de los elementos en las filas se utiliza la transpuesta
suma_filas=sum(M')
M = 3×3 double 8 1 6 3 5 7 4 9 2
suma_columnas = 1×3 double 15 15 15
suma_diagonal = 15
suma_filas = 1×3 double 15 15 15
Manipulación de dos variables usando matrices#
En MATLAB®, el comando meshgrid()
toma los dos vectores de entrada y crea dos matrices bidimensionales que tiene el mismo número de filas y columnas. Por ejemplo, considérese la Tabla 7, donde cada uno de los elementos del vector X
se multiplica por los elementos del vector V. Este conjuto de multiplicaciones equivale a la conversión se unidades si se considera a los elementos del vector V como los factores de conversión. En la Tabla 7 se muestran algunas conversiones, el resto se podría calcular a mano para poder completar la tabla, por ejemplo el producto \(0.1\times 0.35=0.035\) se colocaría en la primera fila y tercera columna de la tabla.
V |
|||
---|---|---|---|
X |
0.15 |
0.35 |
0.24 |
0.1 |
0.015 |
||
0.2 |
0.07 |
||
0.3 |
0.072 |
||
0.4 |
0.014 |
Para aplicar el comando mesgrid()
, el número de columnas se determina por el número de elementos en un vector V, y el número de filas se determina mediante el número de elementos de un segundo vector X. Esta operación se llama mapeo de vectores en un arreglo bidimensional, el mapeo de vectores permitirá completar de forma automática la Tabla 7 como se muestra abajo:
V=[0.15 0.35 0.24]
X=[0.1:0.1:0.4]
[nuevo_V,nuevo_X]=meshgrid(V,X)
V = 1×3 double 0.1500 0.3500 0.2400
X = 1×4 double 0.1000 0.2000 0.3000 0.4000
nuevo_V = 4×3 double 0.1500 0.3500 0.2400 0.1500 0.3500 0.2400 0.1500 0.3500 0.2400 0.1500 0.3500 0.2400
nuevo_X = 4×3 double 0.1000 0.1000 0.1000 0.2000 0.2000 0.2000 0.3000 0.3000 0.3000 0.4000 0.4000 0.4000
La Tabla 7 se completa con el resultado de multiplicar los factores de conversión y los valores a convertir con la siguente instrucción:
nuevo_V.*nuevo_X
ans = 4×3 double 0.0150 0.0350 0.0240 0.0300 0.0700 0.0480 0.0450 0.1050 0.0720 0.0600 0.1400 0.0960
Dado que todas las filas del arreglo nuevo_V se repiten y, de la mismma manera las columnas nuevo_X se han copiado, es posible combinar a los arreglos nuevo_V y nuevo_X, por medio de un producto y obtener una tabla de resultados en los que la primera columna del arreglo nuevo_X es un arreglo con valores de referencia y nuevo_V es un arreglo de factores de conversión:
cm=[1:1.5:33];
% Se crea el vector con las equivalencias o factores de conversión
% de centímetros a pulgadas pies y yardas.
conversion= [0.393701 0.0328084 0.0109361];
% Se crean los vectores que almacenan la conversión
[factor_conversion,longitud]=meshgrid(conversion,cm);
% En la matriz llamada equivalencias se almacenan las
% conversiones, una vez que se aplica la multiplicación por el
% conjunto de factores correspondiente
equivalencias=(factor_conversion.*longitud);
% Tabla de conversión de centímetros a pulgadas, pies y yardas
tabla=[cm;equivalencias']; % Se agrupan los datos convertidos
%en una matriz que será la tabla de datos
% Finalmente, se imprime en la pantalla la tabla de equivalencias
disp(" Tabla de equivalencias de distancias ")
disp("centímetros pulgadas pies yardas")
fprintf(" %6.3f %6.3f %6.3f %6.3f \n",tabla)
Tabla de equivalencias de distancias
centímetros pulgadas pies yardas
1.000 0.394 0.033 0.011
2.500 0.984 0.082 0.027
4.000 1.575 0.131 0.044
5.500 2.165 0.180 0.060
7.000 2.756 0.230 0.077
8.500 3.346 0.279 0.093
10.000 3.937 0.328 0.109
11.500 4.528 0.377 0.126
13.000 5.118 0.427 0.142
14.500 5.709 0.476 0.159
16.000 6.299 0.525 0.175
17.500 6.890 0.574 0.191
19.000 7.480 0.623 0.208
20.500 8.071 0.673 0.224
22.000 8.661 0.722 0.241
23.500 9.252 0.771 0.257
25.000 9.843 0.820 0.273
26.500 10.433 0.869 0.290
28.000 11.024 0.919 0.306
29.500 11.614 0.968 0.323
31.000 12.205 1.017 0.339
32.500 12.795 1.066 0.355
En el ambiente de programación MATLAB® es posible generar matrices con características especiales como las que se muestran en la Tabla 7.
Comando de creación |
Descripción |
Resultado |
---|---|---|
|
Construye una matriz \(m\times m\) de unos |
|
|
Construye una matriz \(m\times n\) de unos |
|
|
Construye una matriz identidad \(m\times m\) |
|
|
Construye una matriz \(n\times n\) de ceros |
|
|
Obtiene la diagonal principal de una matriz |
\(A=\begin{bmatrix}1&4&7\\2&-3&5\\-8&5&7\end{bmatrix}\),\(~~~~~~\) |
Si se trata de un vector de tamaño \(n\), el comando creará una matriz cuadrada de dimensiones \(n \times n\) donde el vecor es la diagonal principal |
\(V=\begin{bmatrix}-2&3&4\end{bmatrix}\),\(~~~~~~~~~~~~~~~~\) |
|
|
Refleja una matriz de forma vertical |
\(A=\begin{bmatrix}11&0&0\\0&-13&0\\0&0&7\end{bmatrix}\),\(~~~~\) |
|
Construye una matriz mágica de dimensiones \(n\times n\) |
|
|
El operador : sirve para crear y seleccionar datos en matrices |
\(V=\begin{bmatrix}-2&3&14&15&9\end{bmatrix}\),\(~~~~~~~~~~~~~~\) |
|
El operador elipsis … indica continuación en la línea siguiente |
|
Ejercicio de la práctica 7#
Construya una matriz \(A\) de ceros de dimensiones \(4\times4\).
Construya una matriz identidad \(I\) de dimensiones \(4\times4\).
Construya una matriz \(B\) de dimensiones \(4\times 3\), tal que todos sus elementos sean iguales a \(\frac{\pi}{2}\)
Obtenga el resultado de la forma cuadrática de las matrices:
Construya una matriz mágica de tamaño \(7\times 7\).
a. Extraiga la diagonal inferior izquierda de la matriz
b. Extraiga la diagonal pricipal
c. Confirme que la suma de las filas, las columnas y las diagonales son iguales.
d. Multiplique la matriz mágica por su inversa.
Genere una matriz \(E\) de dimensiones \(3\times 3\) a partir de los vectores
Aplique el comando
meshgrid()
para resolver el siguiente problema:
La presión \(P\) medida por un barómetro es igual al producto de la altura de la columna de un fluido \(h\), la densidad del fluido \(\rho\) y la aceleración de la gravedad, \(g\) como lo indica la sigiente ecuación:
DE manera tal que la altura \(h\) se expresa como:
Escriba un programa que despliegue una tabla con los valores de altura \(h\) a los que se elevará una columna de líquido ante un rango de presiones de 0 a 8 kilo Pascales, para dos líquidos diferentes, agua pesada con \(\rho =1110kg/m^3\) y mercurio con una densidad \(\rho =13560kg/m^3\). Considere que un kilo Pascal equivale a 1000 Pascales.
Encuentre el área de un grupo de triángulos en centímetros cuadrados, cuya base varía de 2 a 15 pulgadas y cuya altura varía de 2 a 18 pulgadas. Reporte los cálculos en una tabla. Use un espaciamiento adecuado para sus variables de cálculo.