Sie sind auf Seite 1von 23

Álgebra matricial

Ing Yamil Armando Cerquera Rojas – yacerque@gmail.com


Especialista en Sistemas Universidad Nacional
Docente Universidad Surcolombiana
Neiva – Huila - Enero 2007

Vectores
Generación de Vectores
Vector Fila
Vector Columna
Vector Transpuesto
Posiciones de un vector
Unión de vectores
Multiplicación entre vectores
Matrices
Creación de una matriz
Añadiendo filas o columnas a una matriz
Cambiar el orden de una matriz
Conversión de una matriz en un vector
Acceso a submatrices contiguas y no contiguas
Matrices vacías
Generación de tablas
Operaciones Básicas con matrices
Determinante de una Matriz
Diagonal de una matriz
Inversa de una Matriz
Funciones trascendentes matriciales
Tipos de matrices predefinidos

Generación de vectores

Se pueden generar vectores de tipo Fila o de tipo Columna. Los valores en un vector
tipo fila se ingresan separados por espacio o por comas (,) y los valores para un vector
tipo columna se ingresan separados por punto y coma (;) o por enter ( ↵ ).

Ejemplos:

Vector tipo fila

Los dos puntos (:), son importantes en MATLAB. Por ejemplo

» x=1:5↵ x =
1 2 3 4 5

»x = [1 10 2 4];↵
» y = 5:-1:1;↵
x=
5 4 3 2 1

No necesariamente los incrementos están dados por números enteros, también pueden
ser decimales, números negativos ó constantes.

» x=0:0.25:1↵
x=
0 0.2500 0.5000 0.7500 1.0000

» m=3.12;↵
» a=0:m:10↵
a=
0 3.12 6.24 9.36

» w = [1 2 3 4 5]↵
w=
12345
»

Vector tipo columna

» z = [1;2;3;4;5]↵
z=
1
2
3
4
5

ó
» z = [1↵
2↵
3↵
4↵
5]↵

z=
1
2
3
4
5

Vector transpuesto (')


Si se trata de asignar un rango de datos en forma de columna, se puede asignar el
rango inicialmente a un vector fila y luego transponerlo a un vector columna o al
contrario, si se tiene un vector columna se puede asignar dichos valores a un vector fila
así:

» a=1:5↵
a=
12345
»a=a'↵ El símbolo ' = (transpuesta) en el ascii 39.
a=
1
2
3
4
5

ó simplemente dando el rango entre llaves [] y de una vez indicando que se trata de un
rango transpuesto así:

» a=[1:5]'↵
a=
1
2
3
4
5

Posiciones de un vector

» w=[1 6 2 8 12];↵

Se puede hacer referencia a un valor o una posición del vector w, simplemente


indicando entre paréntesis la posición que ocupa dicho valor dentro del vector. Por
ejemplo si se quisiera trabajar con el valor 8 que ocupa la posición 4 del vector w se le
indica al Matlab asi: w(4).

»w(4)↵
ans=
8
»

Se puede hacer referencia a un rango de valores del vector indicando las pociones de
dicho rango. Por ejemplo si se quisiera referenciar los valores 6 2 y 8 simplemente se
hace referencia a las posiciones 2 a la 4 así:

» w(2:4)↵
ans =
628
»

Se puede modificar un valor del vector simplemente cambiando su valor haciendo


referencia a la posición del valor a cambiar así:

» w(3)=15↵
w=
1 6 15 8 12
»

Note que a pesar de haber cambiado la posición 3 cuyo valor era 2 por el valor 15, al no
haber dado punto y coma (;) al final, Matlab devuelve todos los valores de w.

Si se asigna un valor en una posición que no existe y está adelante de la última


posición el Matlab asigna ceros (0) a las posiciones restantes.

» w(10)=7↵
w=
1 6 15 8 12 0 0 0 0 7
»

En el ejemplo anterior asignó ceros (0) a las posiciones 6,7,8 y 9.

Un índice puede ser un vector. Si x y v son vectores, entonces x(v) es [x(v(1)),


x(v(2)), ...,x(v(n))]. Para matrices, los índices de vectores permiten acceso a
submatrices contiguas y no-contiguas.

Unión de vectores

Se pueden unir vectores de la siguiente manera

» x=1:10;↵
» y=sin(x);↵
» [x,y]↵

ans =
Columns 1 through 6
1 2 3 4 5 6
Columns 7 through 12
7 8 9 10 0.84147 0.9093
Columns 13 through 18
0.14112 -0.7568 -0.95892 -0.27942 0.65699 0.98936
Columns 19 through 20
0.41212 -0.54402
El resultado es un vector de 20 valores donde los 10 primeros valores corresponden al
vector x y los 10 últimos valores corresponden al vector y.

» [x y]↵
ans =
Columns 1 through 6
1 2 3 4 5 6
Columns 7 through 12
7 8 9 10 0.84147 0.9093
Columns 13 through 18
0.14112 -0.7568 -0.95892 -0.27942 0.65699 0.98936
Columns 19 through 20
0.41212 -0.54402

Se puede generar vectores con rangos de valores de otros vectores. En el siguiente


ejemplo se genera el vector z a partir del vector x y y. El vector z finalmente queda con
los 10 primeros valores del vector x y los 5 valores primeros del vector y. Es decir el
vector z queda con 15 valores.

» x=1:100;↵
» y=sin(x);↵
» z=[x(1:10),y(1:5)]↵
z=
Columns 1 through 6
1 2 3 4 5 6
Columns 7 through 12
7 8 9 10 0.84147 0.9093
Columns 13 through 15
0.14112 -0.7568 -0.95892
»

Multiplicación entre vectores

Si se desea multiplicar los valores que ocupen la misma posición entre dos vectores del
mismo orden y del mismo tipo se realiza de la siguiente manera.

» w = [1 2 3 4 5]↵;
» x=1:5;↵
»w.*x↵
ans =
1 4 9 16 25
»
La multiplicación realizada fue 1*1 2*2 3*3 4*4 5*5

Otros ejemplos:
»x = [1 2 3]; ↵
»y = [4 5 6]; ↵
»z = x. *y ↵

resulta en
z = 4 10 18

Las expresiones A./B y A.\B dan los cocientes de los elementos individuales.

Ejemplo : » z = x.\y↵ produce como resultado

z= 4.0000 2.5000 2.0000 (Si está con formato short)

Realice los siguientes ejemplos: a.*b, a.*c, b.*c con los siguientes valores para cada
vector.

a=[2 4 5 7 9];
b=[1 16 12 13 23];
c=1:-0.1:0.5;

A que se debe el error:

» b.*c ó al realizar la operación » a.*c


??? Error using ==> .*
Matrix dimensions must agree.

Nota: El punto se le coloca a la primera variable con el fin de indicarle a Matlab que la
multiplicación que se realiza no es de tipo matricial sino valor a valor que ocupa la
misma posición.

Creación de una matriz

Elementos de matrices

Los elementos de una matriz pueden ser cualquier expresión de MATLAB. Todo en
MatLab se considera como matriz.

Ejemplo : x = [-1.3,sqrt(3),(1+2+3) *4/5] ↵

Resultaría en x = -1.3000 1.7321 4.8000. El elemento –1.3000 ocupa la posición 1 del


vector x o sea x(1), el elemento 1.7321 ocupa la posición 2 del vector x o sea x(2) y el
elemento 4.800 ocupa la posición 3 del vector x o sea x(3).

Se puede referir a elementos individuales de la matriz con índices entre paréntesis


existan o no dichos elementos.
Ejemplo: si teniendo en cuenta el ejemplo anterior se ejecuta en el prompt

»x(4) = abs(x(1))↵
resultaría : x = -1.3000 1.7321 4.8000 1.3000

Cuando se hace referencia a un elemento que no existe en un vector o matriz


determinada, MatLab lo crea automáticamente, en el caso anterior si se hubiera
utilizado x(6) entonces MatLab llena de ceros las posiciones necesarias para poder
crear el elemento x(6) es decir hubiera quedado así:

x = -1.3000 1.7321 4.8000 0 0 1.3000

Modos de introducir matrices

1.- Por teclado


2.- Generadas por funciones
3.- Creadas por los m-files
4.- Cargadas desde un fichero de datos externo con el comando load.

Entrada de matrices por teclado

Por teclado desde el Prompt del Matlab se puede digitar los valores que en forma
matricial se desea guardar bajo el nombre de un identificador o variable. En el caso del
ejemplo siguiente se guarda una matriz de orden 3x3 en la variable A.

Existen tres formas de ingresar matrices por teclado a saber:

» A=[1 2 3; 4 5 6; 7 8 9]↵
ó
» A=[1 2 3↵
4 5 6↵
7 8 9];↵
ó
» A=[1,2,3; 4,5,6; 7,8,9]↵

En todas tres el resultado es el mismo

A=
1 2 3
4 5 6
7 8 9

Nótese que en el caso primero donde no se colocó ";" al final se muestra después la
matriz asignada, mientras en el segundo caso donde si se coloco el “;” no aparece la
confirmación de asignación de los datos.
También puede generar una matriz de la siguiente manera

» B = [ [1 2 3]' [2 4 7]' [3 5 8]']↵


B=
1 2 3
2 4 5
3 7 8

Añadiendo filas o columnas a una matriz

Tomando como ejemplo la siguiente matriz

»A=[1 2 3; 4 5 6; 7 8 9]; ↵ Matriz de orden 3x3

Para agregar filas a la matriz A descrita arriba se puede realizar lo siguiente:

»r = [10 11 12];↵
»A = [A; r]↵ se estaría agregando al final de la matriz A, los valores del vector r ó
»A = [r; A]↵ se estaría agregando al inicio de la matriz A, los valores del vector r

El resultado sería:
A= 1 2 3 10 11 12
4 5 6 ó 1 2 3
7 8 9 4 5 6
10 11 12 7 8 9

El vector r debe tener el mismo número de elementos como columnas tiene la matriz A.

En caso de que el vector tenga diferente número de elementos se producirá el siguiente


error:

??? All rows in the bracketed expression must have the same number of columns.

Si el vector fila se quisiera adicionar a la matriz pero como vector columna entonces se
procede a agregarlo pero transpuesto así:

»A=[1 2 3; 4 5 6; 7 8 9]; ↵ Matriz de orden 3x3


»r = [10 11 12];↵
»B = [A r']↵ Se adiciona el vector columna al lado derecho de la matriz
B=
1 2 3 10
4 5 6 11
7 8 9 12
»C = [r' A]↵ Se adiciona el vector columna al lado izquierdo de la matriz
C=
10 1 2 3
11 4 5 6
12 7 8 9

»D = [D; 10 11 12]↵ lo que produce


D= 1 2 3
4 5 6
7 8 9
10 11 12

Cambio del orden de una matriz: reshape

Redimensiona una matriz. Los elementos de la matriz original son colocados en el


número de filas y columnas descrito para la matriz modificada. El orden de colocación
es de arriba hacia abajo y de izquierda a derecha. El número de elementos debe ser el
mismo en las dos matrices.

Sintaxis: Matriz_modificada = reshape(Matriz_original, filas, columnas)

Ejemplo:

» A = [1 4 7 10; 2 5 8 11; 3 6 9 12]↵


A=
1 4 7 10
2 5 8 11
3 6 9 12

» B = reshape(A,2,6)↵
B=
1 3 5 7 9 11
2 4 6 8 10 12

Note que el orden de la matriz A es de 3*4 es decir 12 elementos que debe ser igual al
número de elementos del nuevo orden. 2*6 de B.

Si se da un orden diferente se producirá el siguiente mensaje de error.

» B=reshape(A,2,5)

??? Error using ==> reshape


To RESHAPE the number of elements must not change.

Modificación individual de elementos en matrices

Ejemplos
Se crea inicialmente una matriz de orden 2x2 con los siguientes valores:

» A = [1 2; 3 4]↵
A=
1 2
3 4

Note que se asigna valores a la matriz delimitándolos con las llaves [ ] y a continuación
se modifica un valor haciendo referencia a la posición de dicho valor entre paréntesis
( ).

Se puede referir a un elemento de la matriz A, por ejemplo, A(i, j). Se trata del elemento
de la fila i y la columna j.

» A(1,1) = A(1,2)+A(2,1)↵

la posición (1,1) de la matriz A, quedará ahora con el valor de la posición (1,2)= "2" + el
valor de la posición (2,1)="3" es decir 2+3=5.

» A↵
A=
5 2
3 4

» A(1,2) = A(2,1)↵. En este ejemplo tenga en cuenta que a pesar de que se modifica un
sola posición, al no colocar punto y coma al final de la instrucción, la PC devuelve todos
los valores de la matriz.

A=
5 3
3 4

» A(2,2) = 10↵
A=
5 3
3 10

Modificaciones adicionales de una matriz

Se pueden reasignar valores a una matriz simplemente redefiniéndola nuevamente. Los


valores almacenados anteriormente se pierden. También se hubiera podido eliminar la
variable con la función clear

Ejemplo

» clear A↵
» A=[1 2; 3 4; 5 6 ]↵
A=
1 2
3 4
5 6

Conversión de una matriz en un vector

» A = [1 2; 3 4; 5 6 ]↵
A=
1 2
3 4
5 6

En el siguiente ejemplo se asignan todos los elementos de la matriz almacenados en la


variable A, al vector b. La asignación se realiza de arriba hacia abajo y de izquierda a
derecha, y el vector resultante es del tipo Columna.

» b = A(:)↵
b=
1
3
5
2
4
6

Acceso a submatrices contiguas y no contiguas

» A = [1 2 3 4 5 6 7 8 9 10
12 13 14 15 11 16 17 18 19 20
11 12 13 14 15 16 17 18 19 20
2 3 4 5 6 7 8 9 10 11
3 4 5 6 7 8 9 10 1 2] ↵
A=
1 2 3 4 5 6 7 8 9 10
12 13 14 15 11 16 17 18 19 20
11 12 13 14 15 16 17 18 19 20
2 3 4 5 6 7 8 9 10 11
3 4 5 6 7 8 9 10 1 2

Por ejemplo, suponga que a la matriz anterior A, se ejecuta A(1:5, 3). Se estará
especificando la submatriz 5 x 1, ó vector columna 5 filas por 1 columna, que consiste
en los primeros cinco elementos de la tercera columna de A.

» A(1:5, 3) ↵
ans = 3
14
13
4
5

También : A(1:5, 7:10)

» A(1:5, 7:10) ↵ es la submatriz 5 x 4 de las primeras 5 filas (de la 1 a la 5) y las


últimas 4 columnas de A (de la columna 7 a la 10) de la matriz A. En caso de que A
tenga 10 columnas y al menos 5 filas.

ans =
7 8 9 10
17 18 19 20
17 18 19 20
8 9 10 11
9 10 1 2

Utilizando solo los dos puntos denota todo lo correspondiente a la fila ó columna.
Podríamos tener una instrucción como:

» A(:,1]) ↵ Genera todos los elementos de la columna 1 de la matriz A.

ans =
1
12
11
2
3

» A(:, [3 5 10]) ↵ Genera todos los elementos de las columnas 3, 5 y 10 de la matriz A.

ans =
3 5 10
14 11 20
13 15 20
4 6 11
5 7 2

»A(:,[3 5 10]) = B(:, 1:3) ↵. A través de esta instrucción se reemplaza la tercera, quinta
y décima columna de la matriz A con las primeras tres columnas de la matriz B siempre
y cuando la matriz B tenga el mismo numero de filas de la matriz A.

Se genera una matriz de tres filas por tres columnas como la siguiente
» A = [ 1 2 3; 3 4 5; 6 7 8]↵
A=
12 3
34 5
67 8

Se puede hacer referencia para usar sus valores, a filas y/o columnas de una matriz
siempre y cuando estas existan en la matriz. En el siguiente ejemplo se hace referencia
a las columnas 3 y 4 de la matriz A. La columna 4 no existe por tanto se generará un
error como el que se muestra a continuación.

» A(1:2,3:4)↵
??? Index exceeds matrix dimensions.

Si la referencia se hace par asignar valores a la matriz, y los campos a los cuales hace
referencia no existen, MatLab crea los campos necesarios rellenados con ceros. Por
ejemplo si se tiene la siguiente matriz

» A = [ 1 2 3; 3 4 5; 6 7 8]↵
A=
12 3
34 5
67 8

Y se da el comando

»A(3,4)=3; ↵
A↵

El resultado seria
A=
12 3 0
34 5 0
67 8 3

Otros Ejemplos

Si se tiene una matriz original A de orden 10x10, entonces:

♦ A(1:3,5) corresponde a una matriz de 3x1 que tiene los tres primeros elementos de
la columna 5 de A
♦ A(1:3, 5:9) Hace referencia a una matriz de 3x4 que contiene los elementos de las
tres primeras filas y las columnas de la 5 a la 9 de A
♦ A(:,5) Hace referencia a todos los elementos de la columna 5 de A
♦ A(1:5,:) Hace referencia a todos los elementos de las primeras cinco filas de A
♦ A(:,[4 6]) = B(:,1:2) reemplaza la cuarta y sexta columnas de A con las dos primeras
columnas de B. Las dos matrices deben tener el mismo número de filas.

Matrices vacías y borrado de filas o columnas

La declaración x = [ ] asigna una matriz de dimensión 0x0 al identificador x

Para la matriz A considerada previamente

A(:,[3,5])=[ ] borra columnas 3 y 5 de A


A([3,5 ],:)=[ ] borra filas 3 y 5 de A

Declaración de matrices complejas

A=[1 2; 3 4] + i*[5 6 ; 7 8]
ó
A=[1 2; 3 4] + i*[5 6 ; 7 8]
ó
A=[1+5i 2+6i; 3+7i 4+8i]
A=
1.0000 + 5.0000i 2.0000 + 6.0000i
3.0000 + 7.0000i 4.0000 + 8.0000i

Generación de tablas

» x=(0:0.2:3);↵
» y=exp(-x).*sin(x);↵
» [x ; y]↵
ans =
Columns 1 through 7
0 0.2000 0.4000 0.6000 0.8000 1.0000 1.2000
0 0.1627 0.2610 0.3099 0.3223 0.3096 0.2807
Columns 8 through 14
1.4000 1.6000 1.8000 2.0000 2.2000 2.4000 2.6000
0.2430 0.2018 0.1610 0.1231 0.0896 0.0613 0.0383
Columns 15 through 16
2.8000 3.0000
0.0204 0.0070

Operaciones Básicas con Matrices:

Matrices Transpuestas: El caracter ' (apóstrofe - Alt 39 del ASCII) denota la transpuesta
de la matriz. Si se tiene definida previamente la matriz A y se escribe en el prompt

»B = A’↵. B es la transpuesta de la matriz A.


Sumando y Restando Matrices: Las operaciones suma (+) y resta (-) son definidas para
las matrices siempre y cuando éstas tengan la misma dimensión. Es decir, si A y B son
matrices n x n, entonces A + B se puede calcular.

Las operaciones suma y resta también están definidas si uno de los operandos es un
escalar, es decir, una matriz 1x1.

Ejemplo:

»x = [-1; 0; 2]; ↵ se define un vector columna con tres datos.


»y = x - 1↵ resultaría;
y= -2
-1
1

En el siguiente ejemplo se define las matrices A y B cada una de ellas con dos filas y
tres columnas.

Ejemplo:

» A=[1 2 3;4 5 6]; ↵


» B=[6 5 4; 3 2 1]; ↵ Para sumarlas se escribe la operación:
» A+B↵

El resultado de la operación es por defecto almacenado en la variable ans e


inmediatamente presentado en pantalla:

ans = 7 7 7
777

Para almacenar la suma de A y B en la variable C:

» C=A+B↵
C= 777
777

Multiplicando Matrices:

La operación de multiplicación de matrices está definida siempre que el número de


columnas de la primera matriz sea igual a el número de filas de la segunda matriz.

Si A = [ 1 2 3 y x=[-1
4 5 6 0
7 8 0] 2]
»b = A*x↵ resulta
b=5
8
-7

Por supuesto que

» pi*x↵
ans =
-3.1416
0.0000
6.2832

Producto escalar:

El producto interior (producto escalar ó producto punto) se consigue de la siguiente


manera:
x' * y. asumiendo que x y y son vectores columnas de igual número de elementos. Note
que y' * x produce el mismo resultado. De valores a cada vector y desarrolle el ejercicio.
Producto de una matriz por un vector: El producto de una matriz y un vector es un caso
especial del producto matriz-matriz y naturalmente, un escalar como pi, puede
multiplicar, ó ser multiplicado por, cualquier matriz.

Dividiendo Matrices:

En división de matrices, si A es una matriz cuadrada no-singular, entonces A\B y B/A


corresponden a la multiplicación izquierda y derecha de B por el inverso de A, esto es,
inv(A) * B y B * inv(A) respectivamente. El resultado es obtenido directamente sin la
computación del inverso.

X = A\B es una solución a A * X = B y X = B/A es una solución a X * A = B

A\B es definido cuando B tiene la misma cantidad de filas que A. Si A es cuadrada, el


método usado es la Eliminación Gaussiana. El resultado es una matriz X con las
mismas dimensiones que B. Si A no es cuadrada, se factoriza utilizando la
ortogonalización de Householder con pivoteo de columnas. Los factores son usados
para resolver sistemas de ecuaciones sub-determinados y sobre-determinados. El
resultado es una matriz X m-por-n donde m es el número de columnas de A y n es el
número de columnas de B. Cada columna de X tiene, al menos, k componentes
diferentes de cero, donde k es el rango efectivo de A.

B/A esta definido en términos de A\B por B/A = (A'\B') '.

Usando Exponentes con Matrices:


La expresión A^n eleva A a la n-ésima potencia y esta definido si A es una matriz
cuadrada y n un escalar.

Funciones Matriciales Trascendentales y Elementales: MATLAB considera expresiones


como exp(A) y sqrt(A) como operaciones de arreglos, definidas en los elementos
individuales de A. También puede calcular funciones trascendentales de matrices, como
la matriz exponencial y la matriz logarítmica. Estas operaciones especiales están
definidas solamente para matrices cuadradas.

Otras funciones elementales de matrices son:

poly - polinomio característico » poly(A)↵


det – determinante » det(A)↵
trace – traza » trace(A)↵
kron - producto tensorial de Kronecker » kron(A)↵
eig - calcula los valores propios de la matriz » eig(A)↵

defina una matriz A y ejecute cada una de las funciones anteriores.

Manipulación de Matrices

diag - extrae ó crea una diagonal


tril - parte triangular inferior
triu - parte triangular superior
' - transposición

» a=[1 2 3; 2 3 4; 4 5 6] ↵

» diag(a) ↵
ans = 1
3
6
» a(1,:)=a(1,:)/a(1,2) ↵ Se dividen todos los elementos de la fila 1 de la matriz A por
al valor almacenado en la posición 1,2 de la misma matriz
a=
0.5000 1.0000 1.5000
2.0000 3.0000 4.0000
4.0000 5.0000 6.0000

Determinante de una Matriz det(A)

DET Determinante.
DET(X) es el determinante de la matrix cuadrada X.

Use COND instead of DET to test for matrix singularity.


See also COND.

Overloaded methods: help sym/det.m

» A=[1 2 3;4 5 6; 7 8 9]↵


A=
1 2 3
4 5 6
7 8 9
» det(A)↵
ans = 0

Porque al tener una matriz su determinante igual a cero, el matlab entrega como valor
inverso lo siguiente:

» inv(A)
Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 2.055969e-018.
ans =
-4.5036e+015 9.0072e+015 -4.5036e+015
9.0072e+015 -1.8014e+016 9.0072e+015
-4.5036e+015 9.0072e+015 -4.5036e+015

Diagonal de una matriz: diag(A)

La función diag extrae la diagonal de la matriz A

» help diag

DIAG matrices diagonales y diagonales de una matriz.


DIAG(V,K) cuando V es un vector con N componentes es una matrix cuadrada de orden
N+ABS(K) con los elementos de V sobre la K-th diagonal. K = 0 es la diagonal principal,
K > 0 is above the main diagonal and K < 0 is below the main diagonal.

DIAG(V) es lo mismo que DIAG(V,0) and puts V on the main diagonal.

DIAG(X,K) when X is a matrix is a column vector formed from the elements of the K-th
diagonal of X.

DIAG(X) is the main diagonal of X. DIAG(DIAG(X)) is a diagonal matrix.

Ejemplo
m = 5;
diag(-m:m) + diag(ones(2*m,1),1) + diag(ones(2*m,1),-1)
produces a tridiagonal matrix of order 2*m+1.
See also SPDIAGS, TRIU, TRIL.

Overloaded methods

help sym/diag.m

» diag(A)↵
ans =
1
5
9

Valores y vectores característicos: eig(A)


» help eig

EIG Eigenvalores y eigenvectores.


E = EIG(X) es un vector conteniendo los eigenvalores de la matrix cuadrada X.

[V,D] = EIG(X) produce una matrix diagonal D de eigenvalores y una matriz completa V
whose columns are the corresponding eigenvectors so that X*V = V*D.

[V,D] = EIG(X,'nobalance') performs the computation with balancing disabled, which


sometimes gives more accurate results for certain problems with unusual scaling.

E = EIG(A,B) is a vector containing the generalized eigenvalues of square matrices A


and B.

[V,D] = EIG(A,B) produces a diagonal matrix D of generalized eigenvalues and a full


matrix V whose columns are the corresponding eigenvectors so that A*V = B*V*D.

Ver tambien CONDEIG, EIGS.

Overloaded methods
help sym/eig.m
help lti/eig.m

» A=[0 7 -6; 1 0 0;0 1 0]↵


A=
0 7 -6
100
010

» eig(A)↵

ans =
-3.0000
2.0000
1.0000

v - Vectores característicos
d - Valores característicos

» [v d]=eig(A)↵
v=
0.9435 -0.8729 0.5774
-0.3145 -0.4364 0.5774
0.1048 -0.2182 0.5774
d=
-3.0000 0 0
0 2.0000 0
0 0 1.0000

Exponencial de una matriz: expm(A)


» A=[0 7 -6; 1 0 0;0 1 0]↵
A=
0 7 -6
1 0 0
0 1 0

» expm(A)↵
ans =
5.2541 11.0757 -13.6115
2.2686 5.2541 -4.8044
0.8007 2.2686 -0.3510

Factorización LU de A: lu(A)
» [L U]=lu(A)↵
L=
0 1.0000 0
1.0000 0 0
0 0.1429 1.0000
U=
1.0000 0 0
0 7.0000 -6.0000
0 0 0.8571

Inversa de una Matriz inv(A) ó (A^-1)

Inversa de A: inv(A)
» help inv

INV Matrix inversa.


INV(X) es la inversa de la matrix cuadrada X.
A warning message is printed if X is badly scaled or nearly singular.

Ver también SLASH, PINV, COND, CONDEST, NNLS, LSCOV.

Overloaded methods
help sym/inv.m
help zpk/inv.m
help tf/inv.m
help ss/inv.m
help lti/inv.m
help frd/inv.m

» A=[0 7 -6; 1 0 0;0 1 0];↵


» inv(A)↵
ans =
0 1.0000 0
0 0 1.0000
-0.1667 0 1.1667

Si se aplica la función inv a un escalar el resultado es igual a 1/escalar

» inv(5)
ans =
0.2

Si se tiene un sistema simultaneo de ecuaciones, para resolverlo se puede proceder de


la siguiente manera:

3x + 2y + 4z = 10
x - 5y + z = 5
x - y +z = 1

Se puede dar solución a dicho sistema utilizando la función inv. Se interpreta el sistema
como AX=B donde A es la matriz de coeficientes del sistema, X son las variables (x,y,z)
y B el el vector columna de los términos independientes (10,5,1). De esta forma
X=inv(A)*B. Interprete la inv(A) como 1/A, ya que la división con matrices no opera.
Solucionando el problema quedará así:

» A=[3 2 4
1 -5 1
1 -1 1];
» b=[10
5
1];
» inv(A)*b
ans =
-12
-1
12

Donde -12 corresponde a x, -1 corresponde a y y 12 corresponde a z. Lo anterior se


puede comprobar sustituyendo los valores en cada una de las ecuaciones:

3(-12) + 2(-1) + 4(12) = 10


(-12) - 5(-1) + (12) = 5
(-12) - (-1) + (12) = 1

Ecuación característica de la matriz A: poly(A). Cuando A es una matriz de N por N,


poly(A) es un vector con N+1 elementos que son lo coeficientes del polinomio
característico

» p=poly(A)↵
p=
1.0000 0.0000 -7.0000 6.0000

Raíces de la ecuación característica: roots(p)

» r=roots(p)↵
r=
-3.0000
2.0000
1.0000

para revisar otras funciones referentes a matrices ejecutar desde el prompt del Matlab
la siguiente instrucción:

» help matlab\elmat

Funciones trascendentes matriciales

Existen tres funciones para matrices: expm XE "expm" , logm XE "logm" y sqrtm XE
"sqrtm" .

expm(A) = B = eA=1+A+A2/2! + A3/3! + ....


logm(A) = B de manera que A = eB
sqrtm(A) = B de manera que B*B = A

Tipos de matrices predefinidos.

eye (n) Matriz identidad cuadrada de orden n


eye(m, n) Matriz “identidad” de orden m*n
ones(n) Matriz unitaria cuadrada de orden n
ones(m, n) Matriz “unitaria” de orden m*n
zeros(m, n) Matriz de ceros de orden m*n
rand(m, n) Matriz con elementos aleatorios de orden m*n
Si V es un vector fila o columna de n componentes, se
construye una matriz de orden n + abs(k) colocando el vector en
diag(V, K)
la K-ésima diagonal (K = 0 es la diagonal principal), K > 0
encima de la diagonal principal y K < 0 por debajo).
Construye una matriz cuadrada de orden N con el vector V en
diag(V)
su diagonal principal.
triu(A) Extrae la parte triangular superior de A anulando el resto
tril(A) Extrae la parte triangular inferior de A anulando el resto
rot90(A) Rota una matriz 90º contra las agujas del reloj
rot90(A, k) Rota una matriz k*90º contra las agujas del reloj
fliplr(A) Rota las columnas de izquierda a derecha
flipud(A) Rota las filas de arriba hacia abajo
reshape XE Devuelve una matriz de orden m*n cuyos elementos son
"reshape" tomados por columna de A. Si A no tiene m*n elementos se
(A, m, n) produce un error.

Das könnte Ihnen auch gefallen