Vous êtes sur la page 1sur 13

Algebra lineal y Matrices.

Una matriz en MATLAB es un arreglo rectangular de nmeros de m renglones por n


columnas. Una matriz de 1x1 recibe el nombre de escalar y una matriz de 1 columna por
m renglones el nombre de vector.
Para definir una matriz no hace falta establecer de antemano su tamao (de hecho, se
puede definir un tamao y cambiarlo posteriormente). MATLAB determina el nmero de
renglones y de columnas en funcin del nmero de elementos que se proporcionan (o se
utilizan). Las matrices se definen por renglones; los elementos de un mismo rengln
estn separados por espacios en blanco o por comas (,), mientras que las filas estn
separadas por caracteres punto y coma (;). Por ejemplo, el siguiente comando define una
matriz A de dimensin (3x3):
>> A=[1 2 3; 4 5 6; 7 8 9]

La respuesta del programa es la siguiente:


A =
1 2 3
4 5 6
7 8 9
A partir de este momento la matriz A est disponible para hacer cualquier tipo de
operacin con ella (adems de valores numricos, en la definicin de una matriz o vector
se pueden utilizar expresiones y funciones matemticas).
La transpuesta de una matriz es una nueva matriz en la que las filas de la matriz original
son las columnas de la nueva. Por ejemplo, una sencilla operacin con A es hallar su
matriz transpuesta, AT. En MATLAB el apstrofo (') es el smbolo de transposicin
matricial. Para calcular A' (transpuesta de A) basta teclear lo siguiente:
>> A'
ans =
1 4 7
2 5 8
3 6 9
Como el resultado de la operacin no ha sido asignado a ninguna otra matriz, MATLAB
utiliza un nombre de variable por defecto (ans, de answer), que contiene el resultado de
la ltima operacin. La variable ans puede ser utilizada como operando en la siguiente
expresin que se introduzca. Tambin podra haberse asignado el resultado a otra matriz
llamada B:

>> B=A'
B =
1 4 7
2 5 8
3 6 9
Ahora ya estn definidas las matrices A y B, y es posible seguir operando con ellas. Por
ejemplo, se puede hacer el producto B*A (deber resultar una matriz simtrica):
>> B*A
ans =
66 78 90
78 93 108
90 108 126
Tambin puede definirse una matriz listando cada fila en una lnea aparte, como se
muestra a continuacin:
>> c=[-1, 0,
1, 1,
1,-1,
0, 0,
c =
-1
1
1
0

0
1
-1
0

0
0
0
2]

0
0
0
2

Si hay demasiados nmeros en una fila de una matriz para que quepan en una lnea, se
puede continuar la instruccin en la siguiente lnea, pero se requieren tres puntos (puntos
suspensivos) al final de la lnea para indicar que la fila continua. Por ejemplo, si se quiere
definir el vector fila F con 10 valores, se puede usar cualquier de las instrucciones
siguientes:
>> F=[1 52 64 197 42 -42 55 82 22 109]
F=
1 52 64 197 42 -42 55 82 22 109
>> F=[1,52,64,197,42,-42,...
55,82,22,109]
F=
1 52 64 197 42 -42 55 82 22 109
Operador de dos puntos.
Es un operador muy potente para crear matrices nuevas. Se se usa el operador de dos
puntos en una referencia de matriz en lugar de un subndice especfico, el signo de dos
puntos representa la fila o columna. Por ejemplo, despus de definir una matriz c, los

siguientes comandos almacenan la primera columna de c en x, la segunda en y, y la


tercera en z:
>>C = [-1 0 0;1 1 0;1 -1 0; 0 0 2]
C=
-1 0 0
1 1 0
1 -1 0
0 0 2
>> x = C(:,1)
x=
-1
1
1
0

>> y = C(:,2)
y=
0
1
-1
0

>> z = C(:,3)
z=
0
0
0
2

Si se usa un signo de dos puntos para separar dos enteros, el operador de dos puntos
generara todos los enteros entre los dos enteros especificados. Por ejemplo H=1:8, genera
un vector llamado H que contiene los nmeros del 1 al 8.
Si se usan signos de dos puntos para separar tres nmeros, el operador de dos puntos
generara valores entre el primer numero y el tercero, usando como el nmero como
incremento. Por ejemplo, la notacin siguiente genera un vector fila llamado tiempo que
contiene los nmeros de 0.0 a 5.0 en incrementos de 0.5:
>>tiempo = 0.0:0.5:5.0
El incremento tambin puede ser negativo, como se muestra en el ejemplo siguiente que
genera los nmeros 10, 9, 8, 0 en el vector fila llamado valores:
>>valores = 10:-1:0;
Accesando a los elementos de una matriz
Para referenciar un elemento particular de una matriz, se usa la referencia del rengln y
columna del elemento empleando la sintaxis siguiente
A(rengln, columna)
donde A es una variable que contiene una matriz. Siempre se especifica primero el
rengln y luego la columna. Por ejemplo para la matriz,
>>A =[16 2 3 13;5 11 10 8;9 7 6 12;4 14 15 1];

A=
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
Para accesar al elemento del rengln 4 columna 2 se emplea
>>A(4,2)
ans =
14
En MATLAB se accede a los elementos de un vector poniendo el ndice entre parntesis
(por ejemplo x(3) x(i)). Los elementos de las matrices se acceden poniendo los dos
ndices entre parntesis, separados por una coma (por ejemplo A(1,2) A(i,j)). Las
matrices se almacenan por columnas (aunque se introduzcan por filas, como se ha dicho
antes), y teniendo en cuenta esto puede accederse a cualquier elemento de una matriz con
un slo subndice. Por ejemplo, si A es una matriz (3x3) se obtiene el mismo valor
escribiendo A(1,2) que escribiendo A(4). Invertir una matriz es casi tan fcil como
trasponerla. A continuacin se va a definir una nueva matriz A -no singular- en la forma:
>> A=[1 4 -3; 2 1 5; -2 5 3]
A =
1 4 -3
2 1 5
-2 5 3
De forma anloga a las matrices, es posible definir un vector rengln x en la forma
siguiente (si los tres nmeros estn separados por blancos o comas, el resultado ser un
vector fila):
>> x=[10 20 30] % vector rengln
x =
10 20 30
MATLAB considera comentarios todo lo que va desde el carcter tanto por ciento (%)
hasta el final de la lnea.
Por el contrario, si los nmeros estn separados por puntos y coma (;) se obtendr un
vector columna:
>> y=[11; 12; 13] % vector columna
y =
11
12
13

MATLAB tiene en cuenta la diferencia entre vectores rengln y vectores columna. Por
ejemplo, si se intenta sumar los vectores x e y se obtendr el siguiente mensaje de error:
>> x+y
??? Error using ==> +
Matrix dimensions must agree.
Estas dificultades desaparecen si se suma x con el vector transpuesto de y:
>> x+y'
ans =
21 32 43

Ejercicio.
Indique el contenido de las siguientes matrices. Luego verifique sus respuestas
introduciendo los comandos en MATLAB.

2.3 0.5
0.6 1.5
8.2 0.5 0.1 2.0

G = 5.7 8.2 9.0 1.5

0.5 0.5 2.4 0.5


1.2 2.3 4.5 0.5
1.
2.
3.
4.
5.
6.

A = G(:,2);
C = 10:15;
D = [4:9;1:6];
F = 0.0:0.1:1.0;
T1 = G(4:5,1:3);
T2 = G(1:2:5,:);

Operaciones con matrices

MATLAB puede operar con matrices por medio de operadores y por medio de funciones.
Se han visto ya los operadores suma (+), producto (*) y transpuesta ('), as como la
funcin invertir inv( ).
Los operadores matriciales de MATLAB son los siguientes:
+
adicin o suma

sustraccin o resta
*
multiplicacin

'
^
\
.*
./
.^

transpuesta
potenciacin
divisin-izquierda
producto elemento a elemento
divisin elemento a elemento
elevar a una potencia elemento a elemento

Estos operadores se aplican tambin a las variables o valores escalares, aunque con
algunas diferencias. Todos estos operadores son coherentes con las correspondientes
operaciones matriciales: no se puede por ejemplo sumar matrices que no sean del mismo
tamao. Si los operadores no se usan de modo correcto se obtiene un mensaje de error.
Los operadores anteriores se pueden aplicar tambin de modo mixto, es decir con un
operando escalar y otro matricial. En este caso la operacin con el escalar se aplica a cada
uno de los elementos de la matriz. Considrese el siguiente ejemplo:
>> A=[1 2; 3 4]
A =
1 2
3 4
>> A*2
ans =
2 4
6 8
>> A-4
ans =
-3 -2
-1 0

Los operadores de divisin requieren una cierta explicacin adicional. Considrese el


siguiente sistema de ecuaciones lineales, Ax = b (1) en donde x y b son vectores
columna, y A una matriz cuadrada invertible. La resolucin de este sistema de ecuaciones
se puede escribir en las 2 formas siguientes (Atencin a la 2 forma, basada en la barra
invertida (\), que puede resultar un poco extraa!):
x = inv(A)*b (2a)
x = A\b
(2b)

As pues, el operador divisin-izquierda por una matriz (barra invertida \) equivale a


premultiplicar por la inversa de esa matriz.
La inversa de una matriz en MATLAB se calcula con la funcin inv( ), por ejemplo
defina la matriz A en MATLAB como sigue

>> A=[1 4 -3; 2 1 5; -2 5 3]


A =
1 4 -3
2 1 5
-2 5 3

Ahora para se emplea la funcion inv( ) para calcular la inversa de A y el resultado se


guarda en B:

>> B=inv(A)
B =
0.1803 0.2213 -0.1885
0.1311 0.0246 0.0902
-0.0984 0.1066 0.0574

Para comprobar que este resultado es correcto basta pre-multiplicar A por B;


>> B*A
ans =
1.0000 0.0000 0.0000
0.0000 1.0000 0.0000
0.0000 0.0000 1.0000

Con la funcion rank ( ) se puede calcular el rango de una matriz, que es el nmero de
ecuaciones independientes representadas por las filas de la matriz. Por lo tanto, si el
rango de una matriz es igual al nmero de las filas que tiene, la matriz no es singular y
existe su inversa. Considere las siguientes instrucciones que usan la matriz de la
explicacin anterior:
>> A = [2 1 ;4 3];
>> rank (A)
ans =
2
>>B = inv (A)
B=
1.5 -0.5
-2
1
Como el rango de la matriz es igual al nmero de filas que tiene si existe su inversa.
Ahora encuentre el rengo de la siguiente matriz y calcule su inversa:
>> A=[-2 1;-2 1]
A=
-2 1
-2 1

>> rank(A)
ans =
1
>> inv(A)
Warning: Matrix is singular to working precision.
ans =
Inf Inf
Inf Inf
La matriz no se puede invertir debido a que el nmero de ecuaciones es diferente al
rango, la matriz es singular.
Para calcular el determinante de una matriz cuadrada se emplea la funcin det ( ). Un
determinante es un escalar calculado a partir de los elementos de una matriz cuadrada.
Los determinantes tienen varias aplicaciones en ingeniera, incluido el clculo de inversas
y la resolucin de sistemas de ecuaciones simultaneas. Por ejemplo, para calcular el
determinante de la matriz A (A) siguiente se emplea la sintaxis que se muestra a
continuacin:
>> A = [ 1 3 ; -1 5];
>> det (A)
ans =
8
En MATLAB existe tambin la posibilidad de aplicar elemento a elemento los
operadores matriciales (*, ^, \ y /). Para ello basta precederlos por un punto (.). Por
ejemplo:
>> [1 2 3 4]^2
??? Error using ==> ^
Matrix must be square.
Esto es debido a que para elevar al cuadrado un vector se
tiene que hacer elemento por elemento como sigue:
>> [1 2 3 4].^2
ans =
1 4 9 16
Lo mismo pasa para el producto
>> [1 2 3 4]*[1 -1 1 -1]
??? Error using ==> *
Inner matrix dimensions must agree.

>> [1 2 3 4].*[1 -1 1 -1]


ans =
1 -2 3 -4

La diferencia entre usar y no usar el producto (*) o producto elemento por elemento (.*)
se muestra en el ejemplo siguiente: considrese las matrices A=[1 2; 3 4] y B = [1 2; 3 4],
el resultado de hacer el producto normal entre ellas es:
>> A*B
ans =
7 10
15 22
y el resultado de el producto elemento por elemento es:
>> A.*B
ans =
1 4
9 16

Solucin de sistemas de ecuaciones lineales


Considere el siguiente sistema de tres ecuaciones con tres incgnitas:
3x1 + 2x 2 x 3 = 10

x1 + 3x 2
x1 x 2

+ 2x 3
x3

= 5
= 1

Podemos reescribir este sistema de ecuaciones usando las siguientes matrices:


3 2 1
x1
10

A=2 3 2
X = x2
B = 5
1
1 1 1
x 3
Usando multiplicacin de matrices, el sistema de ecuaciones puede escribirse de esta
forma:
AX = B
A 1AX = A 1B
1X = A 1B
X = A 1B
En MATLAB se calcula esta solucin usando el siguiente comando:
x = inv (A) * B

Defina la matriz A y el vector B en MATLAB y resulta el sistema de ecuaciones como


sigue:
>> A=[3 2 -1; -1 3 2; 1 -1 -1]
A=
3 2 -1
-1 3 2
1 -1 -1
>> B=[10; 5; -1]
B=
10
5
-1
>> x=inv(A)*B
x=
-2.0000
5.0000
-6.0000

Ejercicio.
Use MATLAB para definir las siguientes matrices, y luego calcule las matrices
especificadas, si es que existen.
2 1
3 2
1 3

B=
D = [1 2]
A = 0 1
C = 1 2

1
5

0 2
3 0

1.
2.
3.
4.
5.
6.

7.

DB2
BCT
(CB)DT
ACT
(ACT)-1
B

ACT

8. (CTA)-1
Respuestas:
1. -14 62

2. 9 -7
7 -9

6
10

3. 39
-25
18

4. 8 -4

2
-2 2 -2
9 -3 0

5. Inf Inf Inf

6. 8

7. 0

8. -0.2500 0.2500

Inf Inf Inf


Inf Inf Inf

0.6250 -0.3750

Resuelva los siguientes sistemas de ecuaciones.


2x1

+ x2

= 3

x1

+ x2

2x1

+ x2

= 3

2x1

+ x2

3x1

+ 2x 2

x3

= 1

3. x1 + 3x 2
x1 x 2

+ x3

= 1

x3

= 1

1.

2.

10x1

7x 2

+ 0x 3

= 7

4. 3x1

+ 2x 2

+ 6x 3

= 4

+ 5x 3

= 6

5x1

5.

x2

x1
2x1

+
+

4x 2
7x 2

x3
x3

+ x4
2x 4

=
=

2
16

x1

4x 2

x3

+ 2x 4

3x1

10x 2

2x 3

+ 5x 4

= 15

Respuestas:

1.

x1 = 2

2.

x2 = 1

x1 = NaN 2
x 2 = NaN

x1 = 1.5000

3.

x 2 = 1.0000
x 3 = 3.5000

Inf- Infinity, es la representacin matemtica de la IEEE para Infinito positivo, resultado de dividir por
1000

cero o sobreflujo como e


2
NaN- Not a Number,
indefinidas como 0/0.

.
es la representacin aritmtica de la IEEE para operaciones matemticas

x1 = 0.3055

4.

x 2 = 0.5636

5.

x 3 = 1.0073

x1 = 2
x2 = 1
x3 = 3
x 4 = 1

Resolucin aplicada de problemas: Anlisis de circuitos elctricos.


El anlisis de un circuito elctrico con frecuencia implica obtener la solucin de un
conjunto de ecuaciones simultneas. En muchos casos estas ecuaciones se deducen
empleando ecuaciones de corriente que entran y salen de un nodo o bien ecuaciones de
voltaje que describen los voltajes alrededor de lazos del circuito. Por ejemplo, considere
el circuito que se muestra en la figura siguiente:

R1

V1

+
-

i1

R3

R2

i2

R5

R4

i3

V1 + R1i1 + R 2 (i1 i 2 ) = 0
R 2 (i 2 i1 ) + R 2i 2 + R 4 (i 2 i3 ) = 0
R 4 (i3 i 2 ) + R 3i3 + V2 = 0
Reacomodando el sistema tenemos que:
(R1 + R 2 )i1 R 2i 2 + 0i3 = V1

R 2i1 + (R 2 + R 3 + R 4 )i 2 R 4i3 = 0
0i1 R 4i 2 + (R 4 + R 5 )i3 = V2
Calcule las corrientes i1, i2 e i3 del circuito, para los valores siguientes:

+
-

V2

R 1 = R 2 = R 3 = R 4 = R 5 = 1 ohm
V1 = V2 = 5 volts
Con lo que el sistema de ecuaciones resulta:
2i1 i 2 + 0i3 = 5

i1 + 3i 2 i3 = 0
0i1 i 2 + 2i3 = 5
Empleando las instrucciones siguientes en MATLAB se pueden encontrar los valores de
las corrientes
A=[2 -1 0;-1 3 -1;0 -1 2];
B=[5; 0; -5];
X=inv(A)*B;
para las cuales el resultado es el siguiente:
i1 = 2.5 A
i2 = 0 A
i3 = -2.5 A