Sie sind auf Seite 1von 8

UNIVERSIDAD GABRIELA MISTRAL

FACULTAD DE INGENIERA
INGENIERIA CIVIL VESPERTINO
Prof: Carolina Venegas

25-05-2012

Matrices. Sistemas de ecuaciones lineales.


1. Matrices en MATLAB
El nombre MATLAB es una contraccin de matrix laboratory, y como su nombre indica,
este paquete es especialmente til para efectuar operaciones con matrices.
1.1. Definiendo Matrices

Si queremos definir la siguiente matriz en MATLAB:


Los valores de los elementos de una matriz A 3 x 3 se indican mediante una sentencia de la
forma:
A=[3, 2, 1 ; 0, 2, 2 ; 1, 3, 4]

donde los tres primeros nmeros, separados por comas (,), son los elementos de la primera
fila de la matriz. El signo punto y coma (;) indica que comienza la segunda _la, cuyos
elementos se separan de nuevo por comas, y as sucesivamente. La sentencia anterior
corresponde a la matriz:
3 2 1

A = 0 2 2
1 3 4

como nos indica MATLAB. De la misma forma,


B=[3; 1 ; 2]

representa un vector columna (matriz 3x1) y


C=[5, 4, 3]

1.2. Aritmtica de Matrices


Considere las siguientes matrices:
4 5

A =
2 3

1 1 2

B =
4 3 1

1 2

C =
2 4

Entonces las operaciones A*B (producto matricial de A con B), A+B (suma de A mas B),
3*A (multiplicacin escalar de 3 por A) tienen los siguientes resultados:
A*B
ans =
16 19 13
10 11 7
A+B
??? Error using ==> +
Matrix dimensions must agree.
un vector fila (matriz 1x3).
Las operaciones ms sencillas son:
i) + : Suma de matrices.
ii) _ : Producto de matrices.
Veamos algunos ejemplos:
D =[4, 6, 1 ; 2, 4, 7 ; 3, 2, 5];
AMD = A + D
APD = A * D

Podemos multiplicar las matrices A(3x3) y B (3x1) definidas previamente para obtener una
nueva matriz columna (3_1)
APB = A*B

pero no es posible multiplicar A(3x3) y C (1x3), como podemos comprobar escribiendo:


APC = A*C

A partir de las matrices A(3x3) y B (3x1)podemos construir una matriz de dimensiones 3x4
aadiendo B como cuarta columna de la matriz A, mediante la instruccin [A B].
Comprobmoslo escribiendo:
A
B
AB=[A B]

Cmo cambiar elementos en una matriz A dada


A(3, 2) = 7 coloca un 7 en el elemento (3, 2).
A(3,:) = v sustituye los valores de la tercera fila por los de v.
A(:, 2) = w sustituye los valores de la segunda columna por los de w. El smbolo de los dos
puntos : significa todo (todas las columnas o todas las filas).
A([2 3],:) = A([3 2],:) intercambia las filas 2 y 3 de A.

Cmo crear submatrices de una matriz A de m n


A(i, j) muestra el elemento (i, j) de la matriz A (escalar = matriz de 1 1).
A(i, :) muestra la fila i-sima de A (como vector de fila).
A(:, j) muestra la columna j-sima de A (como vector de columna).
A(2: 4,3: 7) muestra las filas de la 2 a la 4 y las columnas de la 3 a la 7 (en forma de matriz
de 3 5).
A([2 4],:) muestra las filas 2 y 4 y todas las columnas (en forma de matriz de 2 n).
A(:) muestra una sola columna larga formada a partir de las columnas de A
(matriz de mn 1).
triu(A) coloca ceros en todos los elementos por debajo de la diagonal (triangular superior).
tril(A) coloca ceros en todos lo elementos por encima de la diagonal (triangular inferior).

Sistemas de ecuaciones lineales. Mtodo de eliminacin de Gauss


Consideremos como ejemplo el sistema de ecuaciones:
3 x1 + 3 x2 + 2 x3 = 1
2 x1 + x2 + 6 x3 = 2
4 x1 + x3 = 3
que puede escribirse en notacin matricial como: Ax = b
3 3 2

A = 2 1 6
4 0 1

1

b = 2
3

Vamos a utilizar este sistema como ejemplo para introducir el mtodo de eliminacin
de Gauss, para lo que disponemos de la rutina Gaussm. En este mtodo se combinan
linealmente las ecuaciones hasta lograr que la matriz de coeficientes A sea una matriz
triangular superior. Podemos esquematizarlo de la siguiente forma:
1. Se forma la matriz aumentada [A b] (en nuestro ejemplo una matriz 3x4).
Escribimos:
A=[3, 3, 2 ; 2, 1, 6 ; 4, 0, 1];
b=[1 ; 2 ; 3]

2. Pivotaje: Se permutan _las y columnas de la matriz aumentada hasta lograr que el


mximo elemento de la matriz A aparezca en la posicin 1,1. (Pulsar retorno para
que continue el proceso y comprobar este segundo paso)
3. Eliminacin: Se combinan las _las de la matriz aumentada para anular los
elementos 2,1 y 3,1 (Pulsar retorno para que continue el proceso y comprobar este
paso)
4. Se repiten los pasos 2 y 3 para anular el elemento 3,2, con lo que se obtiene la
matriz triangular. (volver a pulsar retorno).
5. El sistema de ecuaciones se resuelve por sustitucin "hacia atrs".
El paquete MATLAB contiene la operacin A\C que esencialmente es un programa
como el que hemos empleado anteriormente. Comprobmoslo escribiendo
y=A \ C;
format long
x
y

2. Comparacin mtodos
Considere el sistema lineal
x1 2 x2 + 3x3 = 1
4 x1 + x2 2 x3 = 1
2 x1 x2 + 4 x3 = 2
Definimos la matriz de coeficientes y el lado derecho por las instrucciones:
A=[1 2 3; 4 1 2; 2 1 4];
b=[1 1 2]';
Note que la transpuesta en b se usa para hacerlo un vector columna.
Vamos a resolver este sistema por tres mtodos:
i) eliminacin Gaussiana
ii) mtodo de GaussJordan
iii) mtodo de la inversa
Para comparar los tres mtodos utilizamos la instruccin flops de MATLAB que estima el
nmero de operaciones de punto flotante entre dos llamadas sucesivas a flops. Una llamada
de la forma flops(0) inicializa el contador de operaciones a cero.
i)
La sucesin de instrucciones:
flops( 0 )
x=A\b
x=
0.0417
0.4167
0.6250
flops
La eliminacin Gaussiana en el sistema de arriba y produce como resultado: 73
operaciones de punto flotantes (sumas, restas, multiplicaciones divisiones) para resolver
el sistema.

ii)
Para el mtodo de GaussJordan tenemos:
flops(0)
rref([A b])
ans =
1.0000 0 0 0.0417
0 1.0000 0 0.4167
0 0 1.0000 0.6250
flops
El cual requiere 483 operaciones de punto flotante.
iii)
El mtodo de la inversa se realiza con la siguiente secuencia de instrucciones:
flops(0)
x=inv(A)*b
x=
.0417
0.4167
0.6250
flops
El cual toma 108 operaciones.
Vemos pues que la eliminacin Gaussiana es el mejor de los tres mtodos lo cual es cierto
en general. Usando MATLAB podemos estudiar la relacin entre la solubilidad del sistema
Ax=b y la invertibilidad de la matriz de coeficientes A. En clase vimos que el sistema Ax=b
tiene solucin nica para cualquier lado derecho b si y solo si la matriz A tiene inversa.
Qu sucede si A no es invertible? Entonces Ax=b no tiene solucin? Si A es no es
invertible el sistema Ax=b puede tener solucin para algunos b's pero de seguro hay al
menos un b* para el cual Ax=b* no tiene solucin.

3. Otras operaciones matriciales con MATLAB.


Sea A una matriz cuadrada, en MATLAB se define:

()

~
A' obtiene la matriz transpuesta. A
det(A) calcula el determinante de la matriz.
A^ - 1 o inv(A) calcula la matriz inversa.
A^ n calcula la matriz n-esima potencia.
rank(A) es el rango (nmero de pivotes = dimensin del espacio de filas y
del espacio de columnas).
trace(A) es la traza = suma de los elementos de la diagonal = suma de
autovalores.
rref([A]) matriz escalonada reducida usando eliminacin de Gaus-Jordan
Como ejemplo de estas funciones, considerar la matriz:
1.360 0.733 0.530

A = 0.733 0.970 0.228


0.530 0.228 0.657

Se trata de una matriz simtrica. Comprobarlo calculando la transpuesta:


transA= A'

Calcular su determinante, escribiendo:


dA= det(A)

Copiar el valor obtenido en la hoja de resultados. Calcular la matriz inversa:


invA= A^ -1

4. Cmo generar matrices especiales


diag(v) genera una matriz diagonal con el vector v como diagonal.
toeplitz(v) define una matriz simtrica de diagonal constante con v como primera fila y
primera columna.
toeplitz(w, v) define una matriz simtrica de diagonal constante con w como primera
columna y v como primera fila.
ones(n) genera una matriz de n n con todos los valores iguales a uno.
zeros(n) genera una matriz de n n con todos los valores iguales a cero.
eye(n) genera una matriz identidad de n n.
rand(n) genera una matriz de n n con elementos de valor aleatorio entre 0 y 1
(distribucin uniforme).
randn(n) genera una matriz de n n cuyos elementos siguen una distribucin normal
(media 0 y varianza 1).
ones(m, n), zeros(m, n), rand(m, n) generan matrices de m n.
ones(size(A)),zeros(size(A)), eye(size(A)) generan matrices de la misma forma que A.
Se pueden generar directamente matrices \sparse":
sparse(i,j,s,m,n) donde: i,j son los subndices de los elementos no nulos (i,j son vectores)
s es un vector con los valores de los elementos no nulos
(m,n) es el tamao de la matriz.

De modo que, en el ejemplo, para generar s deberamos escribir:


>>i=[1 2 2 3 3 4];
>>j=[4 3 4 1 4 4];
>>s=[3 -1 2 3 1 -2];
>>m=4;n=4;
>>A=sparse(i,j,s,m,n)
Y obtenemos s. Para obtener la matriz inicial >>full(A)