You are on page 1of 50

UNIVERSIDAD MAYOR DE SAN ANDRS

FACULTAD DE INGENIERIA
INGENIERIA INDUSTRIAL
DEPARTAMENTO DE CURSO BSICO
EL CLCULO SUPERIOR
EN EL ENTORNO MATLAB

APLICACIONES AL ALGEBRA LINEAL


MATRICES DETERMINANTES
o NUMERICAS
o SIMBOLICAS
ECUACIONES Y SISTEMAS DE ECUACIONES
o NUMERICAS
o SIMBOLICAS
PROGRAMACION LINEAL
Mg. Sc. Ing. Rafael Valencia Goyzueta

MATLAB Marca registrada por The MathWorks, Inc

APLICACIN AL ALGEBRA LINEAL

Matriz
Una matriz es un arreglo rectangular de de nmeros letras u objetos (llamados elementos) dispuestos
en m lneas horizontales (filas) y n lneas verticales (columnas) de la forma:

A mn

a11 a12
a
a22
= 21
M
M

am1 am 2

L a1n
L a2n
O
M

L amn

Se suelen representar a las matrices por letras maysculas A, B, . . ., etc. y a sus elementos de la
forma aij donde el primer subindice indica la fila y el segundo la columna a la que pertenece dicho
elemento.
Orden de una matriz. Una matriz de m filas y n columnas se dice que tiene dimensin o que es de
orden mn, y al conjunto de todas las matrices de orden mn lo denotaremos por:

A mn = aij
1 i m 1 j n

Con
Esto es:

Tipos de matrices
NOMBRE
FILA

COLUMNA

CUADRADA

DEFINICION
Se denomina, matriz fila a
aquella que consta de una
nica fila.

Se denomina, matriz columna


a aquella que consta de uma
nica columna.

A mn =A n = [ aij ]
1 i n
1 j m

REPRESENTACION

A= a11 a12

a13 L a1 p

b11
b
21
B= b31

M
b p1

a11 a12
a
a
A n = 21 22
M
M

an1 an 2

L a1n
L a2n
O M

L ann

DIAGONAL

aij 0 i = j
An =
aij = 0 i j

ESCALAR

aij = K
An =
aij = 0

IDENTIDAD

aij = 1 i = j
In =
aij = 0 i j

NULA

A n = = aij = 0

i= j
i j

TRIANGULAR
SUPERIOR

aij 0 i < j
An =
aij = 0 i > j

TRIANGULAR
INFERIOR

aij 0 i > j
An =
aij = 0 i < j

i, j

0
0
a11 0
0 a
0
22 0
An =
0
0 O 0

0
0 ann
0
K 0 0 0
0 K 0 0

An =
0 0 O 0

0 0 0 K
1 0 0 0
0 1 0 0

An =
0 0 O 0

0 0 0 1
0 0 0 0
A n = M L O M
0 0 0 0

a11 a12
0 a
22
An =
0
0

0
0

L a1n
L a2n
O M

L ann
0 L 0
a11
a
0
21 a22 L

An =
M
M
O M

am1 am 2 L ann

a11 a12
0 a
22

0
An = 0

M
M
0
0

SEMEJANTES

Ggg

aij 0 i > j
An =
aij = 0 i < j

a11 a12
0 a
22

0
0

M
M
An =
0
0

0
0
M
M

0
0

a13 L a1m 1 L a1n


a23 L a2m 1 L a2n
a33 L a3m 1 L a3n

M O
M
L M
0 L amm L amn

a13 L a1n
a23 L a2n
a33 L a3n

M O M
0 L ann

0 L 0
M L M

0 O 0

NOMBRE

DEFINICION

PROPIEDADES

( AT )
A mn = aij

TRANSPUESTA

A T nm = a ji

=A

( A B )T = BT AT
( kA )T = k AT
( A+B )T = AT +BT
A= A
T

A = aij

CONJUGADA

A = AT
AB = A B
A+ B = A+ B
kA=kA

aij complejo conjug

Matrices especiales
INVOLUTIVA

A 2 =I

ANTISIMETRICA

AT = A

SIMETRICA

A = AT

HERMITANIA

A= A

ORTOGONAL

AT A=A AT = I

NILPOTENTE

A n =

PERIODICA

Ak+1 =A k periodo k Z+

IDEMPOTENTE

A A=A 2 =A

HEMIHERMETICA

AT = A

( )

n2

OPERACIONES CON MATRICES


NOMBRE

DEFINICION

PROPIEDADES

tr ( A+B ) = tr ( A ) + tr ( B )
tr ( k A ) = k tr ( A )

Traza de una
matriz.

An= aij tr ( A ) = aii


i =1

tr ( A B ) = tr ( B A )

( )

tr A T = tr ( A )
tr ( ) = 0
tr ( I ) = n

Suma de
matrices.

A m n = aij + Bm n = bij

( A+B )mn = aij + bij


Producto de
una matriz por
un escalar.

A m n = aij k escalar

Asociativa
Conmutativa
Elemento neutro a A+=+A=A
Elemento opuesto

A a A+ ( A ) = ( A ) +A=

Asociativa a ( bA ) = ( ab ) A = b ( aA )

(a + b) A = a A + b A
a ( A + B) = a A + a B
Elemento unitario 1 A=A
( 1) A = A
Distributiva

k A mn = k aij

Asociativa ( A B ) C=A ( B C )
Distributiva A ( B+C ) =A B+A C
Multiplicacin
de matrices.

AB =

aik bkj

k =1

No conmutativa A B B A
No cancelativa A B=A C

B=C .

Si A B=0

A=0 B=0
Si A=B AC=BC CA=CB
Elemento neutro I a In A=AIn =A
Si AB=BA matrices se llaman permutables

Operaciones elementales.
Se denominan operaciones elementales a un conjunto de tres operaciones que se realizan en una
matriz afectando a las fila o a las columnas de esta.

Intercambiar dos filas o dos columnas de una matriz


Sustituir una fila o una columna de la matriz por el mltiplo escalar de dicha fila o columna en
la matriz.
Sustituir una fila o una columna de la matriz por la suma de dicha fila o columna con un
mltiplo escalar de otra fila o columna en la matriz.

Definiciones importantes
Matriz escalonada. Es aquella matriz que cumple las siguientes condiciones:

El primer elemento de una fila no nula es la unidad


El conjunto de filas nulas se encuentra en la parte inferior de la matriz
El nmero de ceros que preceden a la unidad en una fila no nula aumenta de manera
aritmtica.

Matriz cannica. Se denomina matriz escalonada cannica a una matriz escalonada con la
propiedad de que el primer elemento no nulo de una fila es un uno y adems, es el nico elemento no
nulo de su columna.
Matriz equivalente. Dos matrices se dicen equivalentes si una de ellas se deduce a partir de la otra
luego de una sucesin limitada de operaciones elementales
Matrices elementales. Son aquellas matrices que resultan de aplicarle alguna de las operaciones
elementales a la matriz identidad.
Rango de una matriz. Es el orden de la mayor submatriz que esta contenida en una matriz y es igual
al nmero de filas no nulas que resultan despus de la ltima iteracin de un conjunto de operaciones
elementales realizadas en la matriz.
Matriz inversa. Sean las matices A n = aij

B n = bij , si se cumple A B=B A=I se dice que

B=A-1 que es la matriz inversa de A


Determinante. Dada la matriz A n = aij el determinante de A ( A
numrico el cual esta asociado a todos los elementos de la matriz A

det ( A ) ) es un valor

Matriz adjunta.
i+ j

Sea A n = aij y C n = cij = ( 1)


aij M ij matriz de cofactores de A, entonces se denomina
adjunta de A a la transpuesta de la matriz de cofactores.

Adj ( A ) =CT = c ji

Propiedades:
INVERSA

ADJUNTA

DETERMINANTE

AA = I

Adj ( I ) =I

( A B )1 =B-1 A-1

Adj A n = ( Adj ( A ) )

=0

Adj ( A B ) =Adj ( B ) Adj ( A )

Am = A

Adj ( k A n ) =k n -1 Adj ( A n )

AB = A B

-1

( )
-1
T
( AT ) = ( A-1 )
A -1

-1

=A

In = 1

n
( )
T
Adj ( A T ) = ( Adj ( A ) )

AT = A

k An = k n A

n -1

Adj ( A n ) = A n
A
Adj A -1 =
A
A Adj ( A ) = A I

( )

Adj ( Adj ( A n ) ) = A

A -1 =

1
A

El valor de A no depende de la fila k


n -2

elegida.
Si la matriz A posee una lnea (fila o
columna) de ceros, su determinante es
nulo.
Si se intercambian dos lneas del
determinante, el determinante cambia de
signo.
Si la matriz A tiene dos lneas paralelas
iguales, su determinante es nulo.
Si todos los elementos de una lnea se
multiplican por un nmero, todo el
determinante queda multiplicado por dicho
nmero.
Si la matriz A posee dos lneas paralelas
proporcionales, su determinante es nulo.
Si descomponemos una lnea (fila o
columna) en suma de dos, podemos
descomponer el determinante en suma de
dos determinantes
El determinante de una matriz no vara si a
una lnea se le suma una combinacin
lineal de lneas paralelas.
Si una lnea de la matriz A es combinacin
lineal de otras paralelas, su determinante
es nulo.

Funciones y comandos de Matlab


La notacin utilizada en Matlab es la notacin usual en algebra lineal. De modo que, por ejemplo, la
multiplicacin de matrices en Matlab se hace de forma sencilla. Debemos tener cuidado con las
dimensiones de las matrices a la hora de multiplicarlas (deben tener el tamao adecuado.)
Las siguientes funciones actan sobre vectores. Aqu se presentan solo algunas funciones. Una
relacin completa de todas las funciones soportadas por MATLAB se puede obtener consultando la
ayuda: matlab/datafun.

FUNCIONES QUE ACTUAN SOBRE VECTORES


length(X)

[vM,pM]=max(x)
[vm, pm]=min(x)
sum(v)

cumsum(x)
mean(V)
std(V)
prod(v)
cumprod(A)

[y,i]=sort(x)
dot(v,w)
cross(v,w)
diff(v)
P=poly(V)
linspace(a,b,n)
logspace(a,b,n)
disp(v)

Devuelve la longitud del vector x


Mximo elemento de un vector. Devuelve el valor mximo vM y la posicin que
ocupa pM en el vector
Mnimo elemento de un vector. Devuelve el valor mnimo y la posicin que
ocupa
Suma los elementos de un vector
Devuelve el vector suma acumulativa de los elementos de un vector. Es decir,
el primer elemento del nuevo vector es el mismo que el de x, el segundo es la
suma de los dos primeros de x, el tercero es la suma de los tres primeros
vectores de x, y as sucesivamente
Valor media de los componentes del vector V
Desviacin tpica de las componentes de V
Producto de los elementos de un vector
Devuelve el vector producto acumulativo de los elementos de un vector
Ordenacin de menor a mayor de los elementos de un vector x. Devuelve el
vector ordenado y, y un vector i con las posiciones iniciales en x de los
elementos en el vector ordenado
Producto escalar de vectores
Producto vectorial de vectores
Vector cuyos elementos son la resta de los elemento de v
P es um polinomio cuyas races son las componentes de v
Devuelve un vector con n valores igualmente espaciados entre [a, b].
Genera un vector con n valores espaciados logaritmicamente entre 10 y10b.
Si a y b es pi, los puntos se generan entr 10 y pi
Devuelve el vector v

En realidad estas funciones se pueden aplicar tambin a matrices, pero en ese caso se aplican por
separado a cada columna de la matriz, dando como valor de retorno un vector resultado de aplicar la
funcin a cada columna de la matriz considerada como vector. Si estas funciones se quieren aplicar a
las filas de la matriz basta aplicar dichas funciones a la matriz transpuesta.

FUNCIONES ELEMENTALES QUE ACTUAN SOBRE MATRICES


trace(A)
sum(diag(A))
size(A)
size(A,1)
size(A,2)
[m,n]=size(A)

numel(A)
transpose(A)
A
A.'

power(A,b)
power(b,A)
mpower(A,n)

Calcula la traza de A
Devuelve el orden (tamao) de la matriz A
Devuelve el numero de filas de A
Devuelve el numero de columnas de A
Devuelve el numero de filas m y columnas n de la matriz A
devuelve el numero de elementos de la matriz A.
Matriz transpuesta de A
Calcula la transpuesta (conjugada) de la matriz
Calcula la transpuesta (sin conjugar) de la matriz Si la matriz es de nmeros
reales producen el mismo resultado.

FUNCIONES ESPECIALES QUE ACTUAN SOBRE MATRICES


Si A = aij devuelve la matriz cuyos elementos son aijb
a

devuelve la matriz cuyos elementos son b ij


A
A L3
A si n es un entero. Los comandos A.^n y A^ n
Devuelve la matriz A
14
4244
n veces

son equivalentes a las funciones power(A,n) y powerm(A,n) respectivamente.


exp(A)

( )

devuelve una matriz cuyos elementos son exp aij = e

aij

sprt(A)

devuelve una matriz cuyos elementos son

logm(A)
sqrtm(A)
expm(A)

Logaritmo neperiano de la matriz A


Raz cuadrada de la matriz cuadrada A
Exponencial de la matriz A

aij

FUNCIONES PARA LA MANIPULACION DEMATRICES


reshape(A,m,n)
cat(Dim,A,B)
diag(A)
diag(A,k)
blkdiag(A,B)
tril(A)
triu(A)
fliplr(A)
flipud(A)
rot90(A)
end(A)
A(end:)
A(:,end)

Cambia el orden de una matriz mxn a otra nxm u otras.


Concatena las matrices A y B y las pone una junto a otra si Dim=1, B debajo
de A y si Dim=2 pone B detrs de A
Extraer la diagonal de la matriz A como vector columna
Busca la k-sima diagonal.
Crea una matriz diagonal de submatrices a partir de las matrices que se le
pasan como argumentos
Extrae la matriz triangular inferior
Extrae la matriz triangular superior
Invierte el orden de las columnas de una matriz de izquierda a derecha
Invierte el orden de las filas de una matriz de arriba abajo
Gira una matriz en direccin contraria a las agujas del reloj
Devuelve el ultimo ndice de A
Accede a la ultima fila o columna de la matriz

FUNCIONES DE ANALISIS MATRICIAL


norm(A)
norm(A,1)
norm(A, inf)
norm(A, fro)
normest(A)
det(A)
determ(A)
rank(A)
N=null(A)
Q=orth(A)
subspace(A,B)
disp(A)
sort(A)
sum(A)
median(A)
max(V)
min(V)
length(A)
exist(A)
isempty(A)

Ff

Norma de A (mayor valor singular de la matriz A)


Mxima suma de valores absolutos por columnas (mayor suma de las
columnas de A)
Mxima suma de valores absolutos por filas (mayor suma de la filas de A)
F-norma de A, definida por sqrt(sum(diag(AA)))
Estimacin de la norma de la matriz A. Se usa cuando el tamao de A es muy
grande y se consume mucho tiempo en calcular norm(A)
Determinante de la matriz cuadrada A
Determinante de la matriz cuadrada A
Devuelve el rango de la matriz A
Da una Base ortonormal del ncleo de A (NN=I). El nmero de columnas de N
es la nulidad de A
Da una base ortonormal para el rango de A (QQ=I). Las columnas de Q
generan el mismo espacio que las columnas de A, y el nmero de columnas de
Q es el rango de A
Da el ngulo entre los subespacios especificados por las columnas de A y de
B. Si a y B son vectores da el ngulo formado por ambos.
Devuelve la matriz A
Ordena de forma ascendente las componentes de A. Para complejos hace la
ordenacin segn los valores absolutos
Toma como argumento una matriz y genera un vector fila donde cada
elemento es la suma de todos los elementos en su columna en la matriz
original.
Mediana de la s componentes de A
Retorna el (los) mayor (es) componente (s) de un vector o matriz. (para
complejos se calcula max(abs(V)))
Retorna el (los) menor (es) componente (s) de un vector o matriz. (para
complejos se calcula min(abs(V)))
Devuelve el mximo valor de filas y columnas
Verifica si una variable existe o esta vaca

FUNCIONES DE FACTORIZACION DE MATRICES Y SOLUCION DE SISTEMAS LINEALES


Matriz inversa de la matriz cuadrada A (A-1)
Da la condicin de la matriz A (cociente entre el mayor y el menor valor
cond(A)
singular de A)
rcond(A)
Recproco de la condicin de la matriz A
U=chol(A)
Descomposicin de Cholesky de una matriz definida positiva
Devuelve las matrices triangular superior y triangular inferior de A.
[L,U]=lu(A)
Descomposicin LU
[Q,R]=qr(A)
Descomposicin QR de A
rref(A)
Da la matriz reducida escalonada por filas de A.
Rrefmovie(A)
Reduce la matriz A a su forma escalonada
Devuelve la forma escalonada de A y una posible base del espacio de
[E,base]=RREF(A)
columnas de A
pinv(A)
Calcula la seudo inversa de un matriz no cuadrada (inversa de Moore Penrose)
inv(A)

FUNCIONES PARA CALCULO DE VALORES PROPIOS Y SINGULARES


eig(A)
[X,D]=eig(A)
[X,D]=eig(A,B)
[V,D]=eig(A)
[V,D]=eig(A,B)

[Q,D]=eigs(A)
roots(A)
svd(A)
[U,S,V]=svd(A)
poly(A)
H=hess(A)
[S,H]=schur(A)

[U,S]=rsf2csf(U,R)

[U,S]=cdf2rdf(U,R)

Calcula los autovalores de la matriz cuadrada A


Devuelve los autovectores de A (columnas de X) y los autovalores de A
(diagonal de D)
Devuelve los autovectores (columnas de X) de A y B y los autovalores
(diagonal de D) de A y B
Calcula la matriz diagonal D de autovalores de A y una matriz V cuyas
columnas son los autovectores
Calcula la matriz diagonal D de autovalores generalizados de A y B, y una
matriz V cuyas columnas son los autovectores correspondientes,
cumplindose que A*V=B*V*D
Devuelve las races de la ecuacin caracterstica
Da el vector V de valores singulares de A. Los valores singulares de A son las
races cuadradas de los autovalores de la matriz simtrica A A
Da la matriz diagonal S de valores singulares de A (ordenados de mayor a
menor), y las matrices U y V tales que A= U*S*V
Devuelve un vector con los coeficientes del polinomio caracterstico de A
Devuelve la forma Hessenberg de A
-1
Devuelve la forma de Schur de A. U es la matriz unitaria tal que U S U
Transforma la forma de Schur real en la compleja, la forma compleja es la
habitual; una matriz triangular superior con los valores propios (posiblemente
complejo) en la diagonal. La forma real de Schur se refiere a una matriz real
cuyos valores propios complejos aparecen en pares conjugados. La matriz R
de la forma de Schur es real en ella aparecen bloques diagonales 2x2
asociados a los valores propios complejos conjugados
Devuelve el reciproco del anterior. Convierte la forma diagonal compleja de
Schur de una matriz real a la forma real

FUCIONES DE MATRICES ESPECIALES


eye(n)

diag(v,k)

diag(A,k)
eye(m,n)

Crea la matriz identidad de orden n


El argumento v es un vector y el argumento k es opcional pero si se da, debe
ser un numero entero. Matlab crea una matriz cuadrada de tamao n + |k|, con
todos lo elementos cero excepto los de la k-esima diagonal que son los
elementos del vector v. Poner k = 0 o no dar un valor explcito produce el
mismo resultado: una matriz diagonal con el vector v en la diagonal principal.
Si k > 0 el vector v aparece en la k-esima supradiagonal y si k < 0 en la kesima subdiagonal.
El argumento A es una matriz y el argumento k es opcional pero si se da, debe
ser un numero entero. Matlab produce un vector: la k-esima diagonal de la
matriz A.
Crea la matriz de orden mxn con unos en la diagonal y ceros en el resto.

Crea la matriz nula de orden mxn


Crea la matriz de orden mxn con todos sus elementos 1
Genera una matriz cuadrada mgica
Crea una matriz aleatoria uniforme de orden mxn
Crea una matriz aleatoria normal de orden mxn

zeros(m,n)
ones(m,n)
magic(n)
rand(m,n)
randn(m,n)

En este grupo aparecen algunas de las funciones ms tiles y potentes de Matlab. No estn todas las
que soporta Matlab. La relacin completa se puede consultar a travs de la ayuda: matlab/elmat y
matlab/matfun principalmente. Se clasificaran en varios subgrupos:
OPERACIONES CON MATRICES

COMANDO

OPERACIN

COMANDO

OPERACIN

adicin o suma

transpuesta

sustraccin o resta

potenciacin

multiplicacin

divisin-izquierda

.*

producto elemento a elemento

divisin-derecha

./ y .\

divisin elemento a elemento

.^

elevar a una potencia elemento a elemento

Ejemplos
Dado el vector
>> x=[4/3 1.2345e-6]
Los diferentes formatos de salida son:
FORMATO
>> format short

x = 1.3333 0.0000

SALIDA

>> format short e

x = 1.3333e+000 1.2345e-006

>> format short g

x = 1.3333 1.2345e-006

>> format long

x = 1.33333333333333 0.00000123450000

>> format long e

x = 1.333333333333333e+000 1.234500000000000e-006

>> format long g

x = 1.33333333333333 1.2345e-006

>> format bank

x = 1.33 0.00

>> format rat

x = 4/3 1/810045

>> format hex

x = 3ff5555555555555 3eb4b6231abfd271

16 3 2 13
5 10 11 8

Para la matriz A=
9 6 7 12

4 15 14 1
>> A(end)
ans =
1

>> A(end,end)
ans =
1

>> A=[16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1]


A=
16 3
2 13
5 10 11 8
9 6
7 12
4 15 14 1
>> A(2,end)
ans =
8

>> A(end,2)
ans =
15

Desde la versin 5 de Matlab se puede usar end para indicar el ltimo elemento de una matriz,
respecto de una dimensin dada.
Submatriz formada por los ltimos 4 y los >> A(end-3:end)
ltimos 6 elementos de la matriz
ans =
13 8 12
Submatriz formada por las dos primeras >> A( [1 2] ,:)
filas y por las dos primeras columnas
ans =
16 3
5 10

>> A(end-5:end)
ans =
1

7 14 13
>> A(:,[1 2])

12

ans =
16 3
5 10
9 6
4 15

2 13
11 8

Submatriz formada por los elementos de >> A(end-2:end, end-1:end)


las ultimas tres filas y ultimas dos
ans =
columnas
11 8
7 12
14 1

Submatriz formada por los elementos que >> C=A([1 3],[3 4])
ocupan las posiciones donde se
C=
interceptan las filas 1 y 3 y las columnas 3
2 13
y4
7 12
Aadirle filas y columnas sin mas que >> C=[A;[1 3 5 7]]
especificar el vector con los elementos C =
que se quiere aadir
16
5
9
4
1

eliminarle filas o columnas a la matriz

3
10
6
15
3

2
11
7
14
5

13
8
12
1
7

>> A(3 , :)=[]


A=
16 3
5 10
4 15

Para el vector

2 13
11 8
14 1

V = ( 0.1 0.4 0.3 -0.3 -0.9 0.4 0.1 -0.5 -0.1 -0.3 0.1 0.5 ) obtener un

vector con amplitud mayor a 0.3


>> Av= [0.1 0.4 0.3 -0.3 -0.9 0.4 0.1 -0.5 -0.1 -0.3 0.1 0.5]
Av =
0.1000 0.4000 0.3000 -0.3000 -0.9000

0.4000

Vector de ceros y unos que >> Av>0.3


muestra donde la condicin es ans =
verdadera.
0 1 0

0.1000 -0.5000 -0.1000 -0.3000

0.1000

0.5000

Para obtener un vector con los Para obtener un vector con los ndices
Para obtener los elementos del
ndices de las
muestras que de las muestras que satisfacen la
vector que satisfacen la condicin:
satisfacen la condicin v > 0.3
condicin, utilizando la funcin find

>> An= 1:length(Av);


>> An(Av>0.3)

>> Av(Av>0.3)
ans =
0.4000

0.4000

0.5000

ans =
2

12

>> A=find(Av>0.3)
A=
2

12

B I 43

I 43 143

A partir de B matriz randomica de 4x3 construir la matriz A =

>> E=[B eye(size(B)); eye(size(B)) ones(size(B))]


C=
0.9218 0.9355 0.0579 1.0000
0
0
0.7382 0.9169 0.3529
0
1.0000
0
0.9218 0.9355 0.0579
0.1763 0.4103 0.8132
0
0
1.0000
0.7382 0.9169 0.3529
0.4057 0.8936 0.0099
0
0
0
0.1763 0.4103 0.8132
1.0000
0
0
1.0000 1.0000 1.0000
0.4057 0.8936 0.0099
0
1.0000
0
1.0000 1.0000 1.0000
0
0
1.0000 1.0000 1.0000 1.0000
0
0
0
1.0000 1.0000 1.0000
Construir una matriz 5 5 cuyas
B=
columnas esten dadas por el >> B=[1 2 3 4 5]'*ones(1,5)
1 1 1 1 1
vector columna
2 2 2 2 2
t
3 3 3 3 3
A = (1 2 3 4 5 )
4 4 4 4 4
5 5 5 5 5
>> B=rand(4,3)
B=

7 7 6

Para la matriz A = 1 13 6

5 1 5

La matriz A
Determinante de A
>> A=[7 7 -6; 1 13 6;5 1 -5] >> det(A)
A=
ans =
7
7 -6
132
1 13
6
5
1 -5
Autovalores de A
>> eig(A)
ans =
-0.0256 + 2.9613i
-0.0256 - 2.9613i
15.0512
Valores y vectores caractersticos de A
>> [V,D]=eig(A)
V=
0.7440
-0.3077 + 0.0645i
0.5122 - 0.2919i

0.7440
-0.3077 - 0.0645i
0.5122 + 0.2919i

D=
-0.0256 + 2.9613i
0
0
-0.0256 - 2.9613i
0
0

-0.5650
-0.8050
-0.1810

Diagonal de A
Inversa de A
>> diag(A)
>> inv(A)
ans =
ans =
7
-0.5379 0.2197 0.9091
13
0.2652 -0.0379 -0.3636
-5
-0.4848 0.2121 0.6364
Ecuacin caracterstica de la matriz A
>> p=poly(A)
p=
1.0000 -15.0000 8.0000 -132.0000
Races de la ecuacin caracterstica de A
>> r=roots(p)
r=
15.0512
-0.0256 + 2.9613i
-0.0256 - 2.9613i

0
0
15.0512

1 2 3 4
1

A = : : 2
2

5 6 7 8

Para las matrices: A =


>> A=[1 2 3 4;5 6 7 8]
A=
1 2 3 4
5 6 7 8
>> size(A)
ans =
2 4

>> B=[pi:0.5:2*pi]
B=
3.1416 3.6416

4.1416

4.6416

5.1416

5.6416

6.1416

Devuelve un vector fila cuyo primer elemento es es el numero de filas y


cuyo Segundo elemento es el numero de columnas

>> [filas,columnas]=size(A)
filas =
2
columnas =
4
>> size(B)
ans =
1 7
>> length(A)
ans =
4
>> length(B)
ans =
7
>> sum(A)
ans =
6 8 10 12

Devuelve el numero de filas en la primera variable y el nmero de


columnas en la segunda variable

Muestra que es un vector fila, un afila y siete columnas


Devuelve el numero de filas o columnas cualquiera que sea el mayor
Devuelve el tamao del vector siete columnas
Devuelve la suma todas las columnas de A

Con una sola instruccin crear


cada una de las siguientes
matrices y reemplazar las filas 2, A
4, 6, 7 de B por filas 5, 6, 7, 8 de A.

2
3

4
=
5
6

7
8

2 3 4 5
3 4 5 6
4 5 6 7
5 6 7 8
6 7 8 9
7 8 9 10
8 9 10 11
9 10 11 12

Generamos A con una sola instruccin

6
7
8
9
10
11
12
13

7
8
9
10
11
12
13
14

9
10

11
12
13

14
15

1
0
0
0
y B=
0
0
0
0

0
1
0
0
0
0
0
0

0
0
1
0
0
0
0
0

0
0
0
1
0
0
0
0

0
0
0
0
1
0
0
0

0
0
0
0
0
1
0
0

0
0
0
0
0
0
1
0

0
0
0

0
0

>> A=[(1:8)',(2:9)',(3:10)',(4:11)',(5:12)',(6:13)',(7:14)',(8:15)']

Generamos B con una sola instruccin


>> B=eye(8)

A=

B=

1
2
3
4
5
6
7
8

2
3
4
5
6
7
8
9

3
4
5
6
7
8
9
10

4
5
6
7
8
9
10
11

5
6
7
8
9
10
11
12

6
7
8
9
10
11
12
13

7
8
9
10
11
12
13
14

8
9
10
11
12
13
14
15

Filas 2, 4, 6, 7 de B por filas 5, 6, 7, 8 de A.

1 0 0 0 0 0 0
0 1 0 0 0 0 0
0 0 1 0 0 0 0
0 0 0 1 0 0 0
0 0 0 0 1 0 0
0 0 0 0 0 1 0
0 0 0 0 0 0 1
0 0 0 0 0 0 0
>> B([2 4 6 7],:)=A(5:6:7:8,:)

0
0
0
0
0
0
0
1

B=
1
5
0
6
0
7
8
0

0
6
0
7
0
8
9
0

0
7
1
8
0
9
10
0

0
8
0
9
0
10
11
0

0
9
0
10
1
11
12
0

0
10
0
11
0
12
13
0

0
11
0
12
0
13
14
0

0
12
0
13
0
14
15
1

Dado el vector x=rand(1,5) invertir el orden de sus elementos:


Definimos la matriz
Matriz con sus elementos en orden inverso
>> x=rand(1,5)
>> x=x(5:-1:1)
x=
x=
0.9501 0.2311 0.6068 0.4860 0.8913
0.8913 0.4860 0.6068 0.2311 0.9501
Ggggg

Obsrvese que por haber utilizado parntesis en vez de corchetes los valores generados por el
operador (:) afectan a los ndices del vector y no al valor de sus elementos.

Dada la matriz A=magic(3) invertir el orden de las columnas:


Definimos la matriz

Matriz con sus columnas invertidas

>> A=magic(3)

>> A(:,3:-1:1)

A=

ans =

8
3
4

1
5
9

6
7
2

6
7
2

1
5
9

8
3
4

Aunque hubiera sido ms fcil utilizar la funcin fliplr(A), que es especfica para ello. Finalmente, hay
que decir que A(:) representa un vector columna con las columnas de A una detrs de otra.

Con una sola lnea de instrucciones generar la


matriz y con una sola lnea de instruccin extraer
un vector columna cuyos elementos sean los
elementos de las 3 diagonales de A

3 1 0 0 0 0

1 2 1 0 0 0
0 1 1 1 0 0

= 0 0 1 0 1 0
0 0 0 1 1 1

0 0 0 0 1 2

0 0 0 0 0 1

Matriz con elementos de la diagonal

Definimos la matriz

>>diag(A,1)

>> A=diag(-3:3)+diag(ones(6,1),1)+diag(-1*ones(6,1),-1)
1 0
-2 1
-1 -1
0 -1
0 0
0 0
0 0

0 0
0 0
1 0
0 1
-1 1
0 -1
0 0

0
0
0
0
1
2
-1

2
Ingresar la matriz A =
1

ans =

0
0
0
0
0
1
3

5
1
6
8

4
3
8
7

5
At
Crear la matriz C =
4
0

1
>> A_trans=A

A=

A_trans =
5
1
6
8

4
3
8
7

6
5
4
1

Hallamos su transpuesta

1
5
4
6

2
1
3
5

1
6
8
4

4
8
7
1

C=

>> C=[A zeros(4);zeros(4) A_trans]

sss

diag(A,-1)
ans =

-3
-2
-1
0
1
2
3

1
1
1
1
1
1

Introducimos la matriz
>> A=[1 5 4 6;2 1 3 5;1 6 8 4;4 8 7 1]
1
2
1
4

>> diag(A)
ans =

A=
-3
-1
0
0
0
0
0

0
0

0
0
1

1
2
1
4
0
0
0
0

5
1
6
8
0
0
0
0

4
3
8
7
0
0
0
0

6
5
4
1
0
0
0
0

0
0
0
0
1
5
4
6

0
0
0
0
2
1
3
5

0
0
0
0
1
6
8
4

0
0
0
0
4
8
7
1

-1
-1
-1
-1
-1
-1

2 6
,
3 9

Dadas las matrices: A =

1 2
,
3 4

B=

5 5

5 3

C=

Formar la matriz D66 = 0 B 0 sin introducir elemento a elemento.


Con una sola instruccin borrar la ultima fila y la ultima columna de D
Extraer la primera sub matriz 4x4
Extraer la submatriz M = {1, 3, 6} {2,5} de D

Generamos las matrices

>> A=[2 6; 3 9]

B=[1 2; 3 4]

C=[-5 5; 5 3]

A=

B=

C=

2
3

Primero inicializo la matriz a ceros

metemos las tres


submatrices de D

matrices

6
9

1
3

>> D=zeros(6,6);

>> D(1:2,1:2)=A
como
>> D(3:4,3:4)=B
>> D(5:6,5:6)=C

>> F=D;
>> F(6,:)=[]
Eliminar la ultima fila y la ultima columna
(Se quiere conservar la matriz D,
entonces le asigno el mismo valor a una
nueva variable F sobre la que se realizan
los cambios)
>> F(:,6)=[]

Extraer la submatriz 4x4 de la esquina


>> H=D(1:4,1:4)
superior izquierda de D:

Extraer la submatriz
M = {1, 3, 6} {2,5} de D :

>> K=D([1 3 6],[2 5])

2
4

-5
5
>> D=zeros(6,6)
D=

5
3

0
0
0
0
0
0
D=

0
0
0
0
0
0

0
0
0
0
0
0

0
0
0
0
0
0

0
0
0
0
0
0

0
0
0
0
0
0

2
3
0
0
0
0
F=

6
9
0
0
0
0

0
0
1
3
0
0

0
0
2
4
0
0

0
0
0
0
-5
5

0
0
0
0
5
3

2
3
0
0
0
F=

6
9
0
0
0

0
0
1
3
0

0
0
2
4
0

0
0
0
0
-5

0
0
0
0
5

2
3
0
0
0
H=

6
9
0
0
0

0
0
1
3
0

0
0
2
4
0

0
0
0
0
-5

2
3
0
0
K=

6
9
0
0

0
0
1
3

0
0
2
4

6
0
0

0
0
5

TRABAJO PRCTICO I
MANIPULACIN DE MATRICES EN MATLAB
Con una o dos instrucciones como mximo crear la matriz A, luego aplicando operaciones de
extraccin y concatenacin crear la matriz B.

2
3

4
A=
5

6
7

2 3 4 5
3 4 5 6
4 5 6 7
5 6 7 8
6 7 8 9
7 8 9 10
8 9 10 11
9 10 11 12

6
7
8
9
10
11
12
13

7
8
9
10
11
12
13
14

9
10

11
12

13
14

15

6
7

8
B=
1

2
3

5 6 1 1
4

6 5 1 1
3

, B=
Genere las matrices: A =
1
1 1 6 5

2
1 1 5 6

4
3
1
2

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

10
11
12
13
6
7
8
9

11
12
13
14
7
8
9
10

12

13
14

15
8

9
10

11

3
(sin introducir explcitamente
1

sus elementos), a partir de estas obtener las matrices con la menor cantidad e comandos
posibles

A 0

D = 0 Bt
0 0

1 4 0

Genere la matriz A = 0 2 3

2 3 7

0
A -1

D= 0
At

0 Bt

I 0
0 B

Hallar el valor mnimo dentro de cada fila de A


Ordenar los elementos de A en orden descendente dentro de cada columna
Ordenar los elementos de A en orden ascendente dentro de cada fila
Formar una lista con los elementos de A ordenada de forma ascendente
Hallar el mximo en valor absoluto de los elementos de la matriz A

Considera la siguiente orden de Matlab A=magic(5). En una sola orden:

Define una matriz B formada por las filas pares de la matriz A.


Define una matriz C formada por las columnas impares de la matriz A.
Define una vector d formada por la tercera columna de la matriz A.
Elimina la tercera fila de la matriz A.

: 2 . Con una sola orden de Matlab crea una matriz cuya primera fila es x , su
2

segunda fila es el seno de cada elemento de x y cuya tercera fila el coseno de cada elemento
de x .

Sea x = 0 :

Definir dos vectores, de la siguiente forma:


El primero formado por los cuatro primeros nmeros impares
El segundo formado por los cuatro primeros nmeros pares de varias formas distintas

2 4 6 8

4 12 16 24

Con estos vectores construir la matriz: A =


10 20 30 40

14 27 42 56
Construye una matriz A = aij tal que a) ai j = i j
elemento en la posicion (i, j) sea i

b) cij = cos ( i j ) c) Una matriz 5 5 cuyo

Con la menor cantidad de instrucciones (si es posible una sola) Construya:

2
A=
3

1
2
3
4

1
2
3
4

1
3
1 0 0 0 0

C = 2
B = 0 1 0 0 0
1
3
0 0 1 0 0

4
0

1
0
0
0

0
1
0
0

0
0

0
0
D=
0
1

0
0

1
0
0
1

0
1
0
2

0
0

0
1
E=
0
1

3
0

0
0
2
0

0
0
0
3

0
0

Con la menor cantidad de instrucciones (si es posible una sola) Construya

6
11
A=
16
21

26

2
7
12
17
22
27

3
8
13
18
23
28

4
9
14
19
24
29

10
15

20
25

30

Y a partir de ella obtener:

La tercera fila.
La cuarta columna.
El vector formado por los elementos que ocupan las posiciones impares de la fila 4.
El vector formado por los elementos que ocupan las posiciones pares de la columna 1.
La submatriz formada por los elementos que ocupan las posiciones donde se cruzan las filas 2
y 4 y las columnas 1, 3 y 5.
La submatriz que se obtiene al suprimir las filas 2 y 4, y las columnas 1 y 3.
La matriz que se obtiene de A al aadirle (pegarle) una fila cuyo i-esimo elemento sean la
suma de la i-esima columna de A, y una columna cuyo i-esimo elemento sea la suma de la iesima fila de A (El comando sum puede ser de ayuda).

En una sola instruccin, cambiar todos los valores de la diagonal de una matriz cuadrada a
cero.
Con una sola orden de Matlab crear un matriz 3 5 cuyo nico elemento sea el 7
Con una sola orden de Matlab crea una matriz aleatoria 4 4 de nmeros reales entre -5 y 5.
(Indicacin: Ejecuta help rand para saber como generar nmeros aleatorios en distribuciones
Uniformes, randn se emplea para distribuciones normales).

I 44
44

Con una sola instruccin genere una matriz 8x8 tal que A=

44

-I 44

Generar un vector con todos los nmeros pares desde el 1 al 101 y con una sola instruccin
eliminar todos los nmeros pares.
Genere una matriz randomica de 8x8 y de esta obtenga una submatriz constituida por las
columnas de ndice impar.
En una sola instruccin sustituir todos los valores de la diagonal de una matriz cuadrada por

1 1 1 1

,K
2 4 8 16
8 9

1 3
2 8

8 5

los elementos del vector x = 1, , , ,

7
Para la matriz A =
5

2
5
7
4

Ordenar sus elementos del menor al mayor manteniendo su forma (utilizar la orden reshape)
En una sola instruccin, poner a cero todos los elementos negativos de la matriz.
En una sola instruccin, poner a cero todos los elementos de la matriz que estn entre -5 y 5.
(La conjuncin lgica es &).

De tres formas distintas (cada una en una sola instruccin), averiguar el numero de elementos
de una matriz, de forma que al final tengamos un numero.
Crear un fichero en Matlab cuyo nombre sea matriz_diagonal.m que determine la solucin de
un sistema, cuya matriz de coeficientes seatridiagonal. Nota. Solo se han de introducir los
elementos de las diagonales.
Construya un vector de 128 elementos como se muestra A = ( 0 1 0

1 0 1 L 0 1)

Genere una secuencia {1, 2, 3, . . . , 9, 10} e extraiga los nmeros mayores que 4.
Genere una secuencia aleatoria con distribucin normal y elimine los elementos negativos.
Genere una secuencia aleatoria con distribucin normal y calcule el nmero de elementos
negativos.
Genere una secuencia aleatoria con distribucin uniforme e con 1000 muestras. Obtenga el
nmero de muestras con una amplitud superior a 0.9. Calcule luego el nmero de muestras
cuyo mdulo posee una amplitud entre 0.5 y 0.7.
Las matrices cuyo elemento en la posicion (i, j) es

1
se llaman matrices de Hilbert y son
i + j 1

famosas porque, a pesar de ser invertibles en aritmetica exacta, no lo son en aritmetica de


punto flotante como veremos en este ejercicio.Este es un ejemplo tp`co de matriz mal
condicionada.

Construya una matriz de Hilbert de tamao 1212 sin utilizar bucles forend.
Utiliza help para saber lo que hace el comando hilb de Matlab, y compare su resultado con el
de Matlab.
Utiliza el comando rank para calcular el rango de las matrices de Hilbert de tamaos 9, 12 y
15.

Matrices Elementales
Veamos a continuacin como Matlab permite realizar operaciones elementales de filas y columnas:
Definimos una matriz
Se multiplica la segunda fila por
dos y se reemplaza en la misma

A=
5
2
9
A=
5
4
9
aux =

>> A=[5 7 9;2 8 1;9 6 4]

>> A(2,:)=2*A(2,:)

2 F2 F2
Se permutan las dos primeras
filas. Para ello se emplea un
vector intermedio (aux) que
almacenara
provisionalmente >> aux=A(1,:)
una fila mientras realizamos el >> A(1,:)=A(2,:)
intercambio
>> A(2,:)=aux

5
A=
2
2
9
A=
2
5
9

F1 F2
A la tercera fila le resta la
primera fila por 2

7
8
6

9
1
4

7
16
6

9
2
4

8
8
6

1
1
4

8
7
6

1
9
4

A=
2 8
5 7
5 -10

>> A(3,:)=A(3,:)-2*A(1,:)

2 F2 + F3 F3

1
9
2

Otra forma de realizar estas operaciones es multiplicando a izquierda por una matriz elemental
apropiada.
P=
>> P=eye(3);
0 1 0
P(1,1)=0;
1 0 0
>> P(2,2)=0;
0 0 1
F1 F2
>> P(1,2)=1;
ans =
>> P(2,1)=1;
2 8 1
>> P
5 7 9
>> P*A
9 6 4
P2 =
1 0 0
0 1 0
>> P2=eye(3);
-2
0 1
2 F2 + F3 F3
>> P2(3,1)=-2
ans =
>> P2*P*A
2 8 1
5 7 9
5 -10 2
Calcular en cada paso la matriz elemental apropiada para cada operacin es pesado y repetitivo.,
para este tipo de tareas Matlab permite construir al usuario sus propias funciones para abreviar los
clculos, esto es, empleamos el modo programado de Matlab.
El programa
function p=pij(n,i,j)
p=eye(n); % partimos inicialmente de la identidad de orden n
p(i,i)=0;p(j,j)=0; % modificamos los elementos
necesarios.
p(i,j)=1;p(j,i)=1;
return

Ingresa por teclado la matriz y llamamos a la


funcin
>> pij(3,2,1) *A
ans =
2
5
9

8
7
6

1
9
4

Ejemplo del mtodo Gauss Jordan desarrollado con Matlab


Invertir la siguiente matriz

2 0 4

A = 4 2 6
8 2 16

>> B=[2 0 4 1 0 0;4 -2 6 0 1 0;8 2 16 0 0 1]


B=
2 0
4 1 0 0
4 -2
6 0 1 0
8 2 16 0 0 1
>> B(2,:)=-2*B(1,:)+B(2,:)
B=
2 0
4 1
0 0
0 -2 -2 -2 1 0
8 2 16 0 0 1
>> B(3,:)=-4*B(1,:)+B(3,:)
B=
2 0 4 1 0 0
0 -2 -2 -2 1 0
0 2 0 -4 0 1
>> B(3,:)=B(2,:)+B(3,:)
B=
2 0
4 1 0 0
0 -2 -2 -2 1 0
0 0 -2 -6 1 1
>> B(1,:)=2*B(3,:)+B(1,:)
B=
2 0 0 -11 2 2
0 -2 -2 -2 1 0
0 0 -2 -6 1 1
>> B(2,:)=-B(3,:)+B(2,:)
B=
2 0 0 -11 2 2
0 -2 0 4 0 -1
0 0 -2 -6 1 1
>> format rat
>> B
B=
1
0
0
-11/2
1
0
-1
0
2
0
0
0
-1
-3
1/2

Se define la matriz aumentada

Se elimina el primer elemento de la fila 2

Se elimina el primer elemento de la fila 3

Se elimina el segundo elemento dela fila 3

Se elimina el tercer elemento de la fila 1

Se elimina el tercer elemento de la fila 2


Se obtiene la matriz identidad y la inversa
1
-1/2
1/2

11 1
2
1
A = 2
0

3 1
2

1

2
1

2

Todos estos comandos cambian la matriz original. Si se quiere conservar la matriz original se debe
asignar otro nombre a la matriz la cual se ira modificando con las operaciones elementales.
En base a este procedimiento se pueden desarrollar diversos ejercicios aplicando Gauus Jordan

TRABAJO PRACTICO II
OPERACINES CON MATRICES Y DETERMINANTES EN MATLAB
Hallar la inversa de la matriz aplicando Operaciones elementales (Gauss Jordan):

0 1 0

1 0 0
A = 1 1 0

3 2 1
0 1 0

1 2 0

2 3 1
A = 0 1 2

1 0 4
1 2 1

0 0

0 0
0 1

0 0
1 0
1 2

0 1
4 2

1 0
0 1

1
A = 1

0
0

2
A= 0

1
1

1 0 0
0 0 0
1 0 0
0 0 1
0 0 0
2 0
3 1
1 2
0
2

4
1

0
1

2
1
1 5

0 1
4 2

1 0
0 1

1
A= 2

1
1

0
A = 0

0
0

1 0 0 0

0 0 0 0
3 0 1 0

0 0 0 1
1 1 0 0
2 1 0 0

1 2 1 0
0 1 2 1

0 0 1 1
0 0 0 1

Generar las siguientes matrices en Matlab (tal como estn escritas en la prctica) y hallar la
inversa de estas aplicando para esto los comandos de Matlab

16
22

16
22

5
A=
22
4

22
21

22
13
30

19
20
A=
7
12
8

15

26
2
8

22
22
22
4
2
8

22
22 22
4
2
3
22
22
22
10
6
2

22 22
22
14
4
5

22 22
22
1
1
1
3
4
12

59
3
1

60
20 12

2
3
1

15
15
6
11
6
1

15 15
3

54
22

32
22

10

22
14

22
2

22

10

1
A=
2

A=

5
2
0
1
1

13
7
5

7
1
7
1

7
2

37
7
35
14
3
7
3
7
5
14

10
2
1

10
2
2

10
2
2

10
2

10
2

10
2

11
7

8
7

3
7
3

7
1

7

10
2

1
10

Generar la matriz de cofactores para cada una de las siguientes matrices. Luego hallar la
inversa de las matrices por el mtodo de la adjunta:

1
A =
1

2 3 4

4 6 8
4 7 9

3 5 7

3 2

0 4
A =
1 1

1 2

0 1

5 1
2 3

3 6

1 1 4

2 0 3
A =
4 2 1

2 4 1

1
0

1
3 5 7

2 5 12 17

A=
1 5 0
3

3 4 10
1

Hallar la matriz A si es que:

11 2 7

2 1 2 7 1 4
A
=
3 1 2 3 1 7

2 1 1

0
A
0

0 2 0 1 1

0 1 1 0 9
=
1 0 0 6 8

0 1 0 6 4
1 1 1 1

1 1 1 1 1
Adj ( A ) =
4 1 1 1 1

1 1 1 1

1
A 0

0
0

0
A
0

1 1 4

0
A
0

2
1
0
0

3
2
1
0

3 4

1 1 1
1 1 = 1

1 1 0
0 1 0
4 1 4

3 1 2
=
2 0 1

1 0 2

7
1
4
4

3
3
0
0

4 5 1 2

4 6 0 3
=
7 8 7 1

0 10 10 13

2
4
0
0

0 0
0 2
0 0
0 0

11

1
8

7
5

6
0

Hallar el rango de la matriz primero aplicando solo el comando adecuado y luego escalonando
al mximo por operaciones elementales cada una de ellas

0
A = 0
1
4

0 1 4

0 2 5
1 3 6

3 14 32
5 6 32 77

3 2 1 2 0 1

4 1 0 3 0 2
A = 2 1 2 1 1 3
3 1 3 9 1 6
3 1 5 7 2 7

0
1
0
2

1 1 2 3
4

0
2 1 1 2
A = 1 2 1 1 3
1 5 8 5 12
3 7 8 9 13

5 5 10 15 20

0
2 1 1 2
A = 1 2 1 1 3
1 5 8 5 12
3 7 8 9 13

17 28

24 37
A = 25 7
31 12
42 13

39

50
32 18 11

19 43 55
29 55 68

5 0 1 2 0 6

4 1 0 3 0 2
A = 2 1 3 1 1 0
3 1 3 1 1 6
3 1 5 7 2 1

45
61

11
13

Generar las siguientes matrices usando solo los comandos de Matlab y calcular los siguientes
determinantes:

1 0 0 L

L 15

0 2 0 L

A = 1 2

L 15
L 15
O M

A=0 0 3 L

M O

0 0 0

1 2 3 L

15

1 2 3 ... 9
2 3 4 ... 1
2

A = 3 4 5 ... 2

M M M O M
9 1 2 ... 8

1
1
1
A=
1
M
1

1
2
1
1
M
1

1
1
3
1
M
1

1
1
1
4
M
1

L 1
L 1
L 1
L 1
O M
1 12

1
2
2
A=
2
M
2

A=

2
2
2
2
M
2

2
2
3
2
M
2

2
2
2
4
M
2

L 2
L 2
L 2
L 2
O M
2 10

2 2 0 0
0 3 3 0
0 0 4 4
0 0 0 5
M
M
M
M
0 0 0 0
1 1 1 1

L 0 0
L 0 0
L 0 0
L 0 0
O O M
0 9 9
1 1 1

Calcular los siguientes determinantes Aplicando la regla de Chio:

7 1 5

2 4

A = 1 1 3

7 6

8 3 1 3

A =

10
12
0
0
0

2
10
12
0
0

0
2
10
12
0

0
0
2
10
12

A =

1
0
0
2
0

0
1
2
1
1

0
1
0
1
0

2 3
2 0
1 2
0 0
1 0

2 1 1 1 1
1 3 1 1 1
A = 1 1 4 1 1

1 1 1 1 1
1 1 1 1 6

0
0
0
2
10

0
1
1
A=
1
1
1

A =

1 1 1 1
0 1 1 1
1 0 1 1
1 1 0 1
1 1 1 0
1 1 1 1

1
1
1
1
1
0

Dada la matriz A hallar dos matrices L y U de tal manera que se cumpla A = L *U

1
A = 2

2
3

0 1 0
1 1 1
4 1 3
2

3 1 5

0
2

1
3

2 13 9 5 7

9 8 3 0 7
A = 3 11 7 15 5

2 7 1 11 4
0 8 1 9 3

Hallar la matriz X si B * X * A = C con C = Adj ( B )

B = Adj ( A )

10 2 0 0 0

12 10 2 0 0
Realizar las siguientes operaciones: A = 0 12 10 2 0

0 0 12 10 2
0 0 0 12 10

t
t
1
E = A + A 2( A + B)

E = ( A B 1 ) + A ( B t + 3 A 1 + B 2 )

E = ( AB ) 3 ( A1 B 1 ) + ( AB t At B )

Hallar la inversa de
o
o

Matriz magica de (7x5)


Matris randonica (2x3)

3
A= 2

1
3

7
5
4
7
2

11 13

3 5 0
6 8 1

14 21 28
1 1 2
9

1 2 0 1 2

2 3 1 0 1
A = 0 1 2 4 2

1 0 4 1 0
1 2 1 0 1

1 6

2 6
B= 5 9

3 7
9 7

5 9
8 5
0 7
5 4
6 1

3
1

7
3

RESOLUCIN DE ECUACIONES Y SISTEMAS DE ECUACIONES (NUMERICAS) CON MATLAB


Funciones de Matrices
Existen varias factorizaciones de matrices que mencionamos brevemente.
La Factorizacin Triangular Factorizacin LU expresa cualquier matriz cuadrada como el
producto de dos matrices triangulares. Esta factorizacin se utiliza para obtener el inverso y el
determinante. Tambin es la base para la solucin de sistemas lineales. Para obtener la factorizacin
LU de A escribimos, [L, U] = lu(A).
La Factorizacin Ortogonal Factorizacin QR se utiliza para matrices cuadradas rectangulares.
Esta factorizacin se utiliza para resolver sistemas lineales con ms ecuaciones que desconocidas.
Esta factorizacin tambin es la base para las funciones null y orth, que generan bases ortonormales
para el espacio nulo y rango de una matriz rectangular dada.
La Descomposicin de Valores Singulares es importante para el anlisis de problemas que
envuelvan matrices. La asignacin triple [U, S, V] = svd(A) produce los tres factores en la
descomposicin de valores singulares A = U*S*V'. Las matrices U y V son ortogonales y la matriz S
es diagonal. La funcin svd(A) devuelve solamente los elementos de la diagonal de S, que son los
valores singulares de A.
La Descomposicin de Valores Propios se utiliza para obtener los valores y vectores propios de
una matriz cuadrada A. La funcin eig(A) devuelve los valores propios de A en un vector columna. La
asignacin [X,D]=eig(A) produce una matriz diagonal D cuyos elementos diagonales son los valores
propios de A y las columnas de X son los vectores propios correspondientes.
Mtodos de solucin para sistemas de ecuaciones lineales
Los mtodos ms comunes para resolver sistemas de ecuaciones lineales de dimensin nxn son:

Eliminacin de Gauss
Factorizacin LU
Descomposicin QR

Solucin por el mtodo de eliminacin de Gauss. Es el que se utiliza con mayor frecuencia para
resolver sistemas de ecuaciones lineales. Este mtodo realiza una transformacin del sistema
cuadrado:

A X = B

A un sistema

I X =C'

Donde I es la matriz identidad. As la solucin del sistema est dado por:

X =C'
Matlab resuelve sistemas de ecuaciones lineales empleando el mtodo de eliminacin de Gauss
empleando la funcin rref y el formato de su empleo es el siguiente: x = rref([A B])
Solucin por el mtodo de factorizacin LU. Si definimos a L como la matriz triangular inferior
(lower) y a U como la matriz triangular superior (upper), entonces podemos redefinir la matriz de
coeficientes A como:

L U = A

As el sistema A X = B queda expresado como:

LU X = B
Empleando Matlab es posible resolver sistemas de ecuaciones lineales empleando el mtodo LU. La
funcin se denomina lu y el formato de su empleo es el siguiente:
>>[L U] = lu(A)

% ojo con el espacio entre los corchetes

>>X = L*U\B
(Para determinar x tambin puede usarse: x = inv(L*U)*B
Solucin por el mtodo de descomposicin QR. Con este mtodo, conocido como
descomposicin ortogonal triangular, tambin se pueden resolver sistemas no cuadrados (mxn). R es
la matriz triangular superior de (mxn) y Q es una matriz unitaria de (mxm) de tal forma que:

A = QR
.As el sistema A X = B queda expresado como:

QR X = B
Empleando Matlab es posible resolver sistemas lineales empleando el mtodo QR. La funcin se
denomina qr y el formato de su empleo es el siguiente:
>>[Q R]=qr(A)
>>X=Q*R\b
Matlab ofrece determinados comandos que permiten resolver ecuaciones y sistemas de ecuaciones.
Entre ellos tenemos los siguientes:
solve(ecuacin, x)
solve (ex1,ex2,...,ecn, x1,x2,...,xn)

roots(V)
X=inv(A)*b
X=linsolve(A,b)

X=A\B

X=A/B
X=rref([A,b])

Tt
Ttt
Ttt

Resuelve la ecuacin en la variable x (esto es para el caso


simbolico)
Resuelve n ecuaciones simultneas ec1,...,ecn en las
variables x1,...,xn (sistema de ecuaciones)
Da las races del polinomio cuyos coeficientes son las
componentes del vector V.
Resuelve A*X =b para una matriz cuadrada A, siendo B y X
matrices
Resuelve A*X =b para una matriz cuadrada A, siendo B y X
matrices
Resuelve el sistema A*X=B ( en este caso Matlab utiliza
internamente el mtodo de la factorizacion LU)
Si A es cuadrada pero singular, "A\B" nos
proporcionar, generalmente, un mensaje de error
aunque el sistema tenga solucin.
Cuando A no es cuadrada y el sistema es compatible,
"A\B" nos proporcionar, generalmente, "una nica
solucin"
Resuelve el sistema X*A=B
Resuelve un sistema por mtodo Gauss Jordan, (b debe estar
como una vector columna)

Ejemplos:

5 x y z = 0

Resolver el siguiente sistema por los distintos mtodos: x + 2 y + 3z = 14

4 x + 3 y + 2 z = 16
Definimos las matrices
Solucion por factorizacion LU
>> [L U]=lu(A)
L=
1.0000
0
0
0.2000 0.5789 1.0000
0.8000 1.0000
0
U=
5.0000 -1.0000 -1.0000
0 3.8000 2.8000
0
0 1.5789

>> B=[0;14;16]
>> A=[5 -1 -1;1 2 3;4 3 2]
B=
A=
0
5 -1 -1
14
1 2 3
16
4 3 2
Solucion por descomposicion QR
>> [Q R]=qr(A)
Q=
-0.7715 0.5962 -0.2221
-0.1543 -0.5140 -0.8438
-0.6172 -0.6168 0.4885
R=
-6.4807 -1.3887 -0.9258
0 -3.4744 -3.3716
0
0 -1.3323
>> X=Q*R\B
X=
1.0000
2.0000
3.0000

>> X=L*U\B
X=
1.0000
2.0000
3.0000
Solucin por eliminacin Gaussiana
>> X=rref([A,B])

Otra forma de la factorizacion LU


>> X=inv(L*U)*B

X=
1
0
0

X=
1
2
3

0
1
0

0
0
1

1
2
3

Otras formas de obtener la solucin del sistema con Matlab son:


Rrrrrrrrhhhhhrrrrrrrrrrrrrrrrrrrrrrrrrrrr
Solucion por matriz inversa
Solucion por comando de Matlab
>> X=inv(A)*B

>> X=linsolve(A,B)

X=
1
2
3

X=
[ 1]
[ 2]
[ 3]

Solucion por division inversa


>> X=A\B

La solicion del sistema:

X=
1.0000
2.0000
3.0000

x =1

y=2

z=3

2 x + 3 y z = 5

Resolver el siguiente sistema por operaciones elementales: 4 x + 4 y z = 3


2 x 3 y + z = 1

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


A=
2 3 -1 5
4 4 -1 3
2 -3 1 -1
>> A(2,:)=-2*A(1,:)+A(2,:)
A=
2 3 -1 5
0 -2 1 -7
2 -3 1 -1
>> A(3,:)=-A(1,:)+A(3,:)
A=
2 3 -1 5
0 -2 1 -7
0 -6 2 -6
>> A(3,:)=-3*A(2,:)+A(3,:)
A=
2 3 -1 5
0 -2 1 -7
0 0 -1 15
>> A(2,:)=A(3,:)+A(2,:)
A=
2 3 -1 5
0 -2 0 8
0 0 -1 15
>> A(1,:)=-A(3,:)+A(1,:)
A=
2 3 0 -10
0 -2 0 8
0 0 -1 15
>> A(1,:)=-1.5*A(2,:)+A(1,:)
A=
2 0 0 2
0 -2 0 8
0 0 -1 15

Se define la matriz aumentada

Se elimina el primer elemento de la fila 2

Se elimina el primer elemento de la fila 3

Se elimina el segundo elemento de la fila 3

Se elimina el tercer elemento de la fila 2

Se obtiene la solucin

x =1

y = 4 z = 15

5 x + 2ky + kz = 2

Implementar una funcin Matlab que resuelva el sistema de ecuaciones 3 x + 6 y + ( 2k 1) z = 3

2 x + ( k 1) y + 3kz = 5
Para un valor arbitrario del parmetro k. (La variable de entrada ser el parmetro k; la de salida, el
vector solucin del sistema. Recordar que A\b proporciona la solucin del sistema de ecuaciones con
matriz de coeficientes A y vector de trminos independientes b.)
El programa
function s=solucion(r)
A=[5, 2, r; 3, 6, 2*r-1; 2, r-1, 3*r];
b=[2; 3 ; 5];
s=A\b;

Ingresamos por teclado la matriz y llamamos


a la funcin
>> solucion(5)
ans =
1/12
-1/24
1/3

2 1 1 4
7 2 9 1

Implementar una funcin Matlab que realice la factorizacion LU a la matriz A =


3 1 1 1

1 1 4 2
El programa
function [l,u]= LUfactorizacion(a)
format rat
n=length(a);
p=1:n;
for i=1:n-1
[maximo,r]=max(abs(a(p(i:n),i)));r=r+i-1;
p([i r])=p([r i]);
for k=i+1:n
l(p(k),i)=a(p(k),i)/a(p(i),i);
a(p(k),i:n)=a(p(k),i:n)-l(p(k),i)*a(p(i),i:n);
end
end
for i=1:n
l(p(i),i)=1;
end
u=a(p,:);
return

Ingresamos por teclado la matriz y llamamos a la


funcin
>> A=[2 -1 1 4;7 2 9 -1;3 -1 1 1;1 1 -4 -2];
>> [l,u]= LUPfactorizacion(A)

x + y z + w = 0
3x y + 2 z + 3w = 7

Implementar una funcin Matlab que resuelva el sistema de ecuaciones


x + 2 y 2 z w = 1
0 x + 0 y + 3z + w = 9
El programa
function x = gauss(a,b)
n=length(a);
% transformacion del sistema en uno triangular

for i=1:n-1
for k=i+1:n
m=a(k,i)/a(i,i);
for j=i+1:n
a(k,j)=a(k,j)-m*a(i,j);
end
b(k)=b(k)-m*b(i);
end
end
% resolucion del sistema triangular

x=zeros(n,1); % tambien vale x=b*0;


x(n)=b(n)/a(n,n);
for i=n-1:-1:1
s=0;
for j=i+1:n
s=s+a(i,j)*x(j); % sumatorio
end
x(i)=(b(i)-s)/a(i,i);
end
return

Ingresamos por teclado la matriz A y B


>> A=[1 1 -1 1;3 -1 2 3;1 2 -2 -1;0 0 3 1]
>> B=[0 7 -1 9]'
>> x=gauss(A,B)
A=
1
3
1
0
B=
0
7
-1
9
x=
1
2
3
0

1
-1
2
0

-1
2
-2
3

1
3
-1
1

3 y 4 z = 0
6 x 3 y 4 z = 0

Resolver el siguiente sistema con solucin nica y mostrar la grafica


6 x 9 y + 4 z = 0
x + y + z = 1
La solucin del sistema
>> A = [0 3 -4; 6 -3 -4; 6 -9 4; 1 1 1];
>> B = [0; 0; 0; 1];
>> X = A\B
X=
0.3636
0.3636
0.2727
La grafica de los cuatro planos
>> [x,y] = meshgrid(-4:0.5:5);
>> z1 = 3*y/4;
>> z2= (6*x - 3*y)/4;
>> z3= (-6*x + 9*y)/4;
>> z4= 1- x - y;
>> surf(x,y,z1)
>> hold on
>> surf(x,y,z2)
>> surf(x,y,z3)
>> surf(x,y,z4)

x + z = 1

Resolver el siguiente sistema incompatible y mostrar la grafica x y + 3 z = 3


x + y z = 1

La solucin del sistema


>> A = [1 0 1; 1 -1 3; 1 1 -1];
>> B = [1; -3; 1];
>> X = A\B
Warning: Matrix is singular to working precision.
(Type "warning off MATLAB:singularMatrix" to
suppress this warning.)

X=
Inf
Inf
Inf
La grafica de los planos
>> [x,y] = meshgrid(-4:0.5:5);
>> z1 = 1-x;
>> z2= (-3-x+y)/3;
>> z3= x +y-1;
>> surf(x,y,z1)
>> hold on
>> surf(x,y,z2)
>> surf(x,y,z3)

x y = 4

Resolver el siguiente sistema con infinitas soluciones y mostrar la grafica x + 3 y 2 z = 6


4 x + 2 y 3z = 1

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


>> B = [4; -6; 1];
>> X = A\B
Warning: Matrix is close to singular or badly
scaled.
Results may be inaccurate. RCOND = 9.251859e018.
(Type "warning off MATLAB:nearlySingularMatrix"
to suppress this warning.)

X=
3.5000
-0.5000
4.0000
>> [x,z] = meshgrid(-4:0.5:5);
>> y1 = x-4;
>> y2= (-6-x+2*z)/3;
>> y3= (1-4*x+3*z)/2;
>> surf(x,z,y1)
>> hold on
>> surf(x,z,y2)
>> surf(x,z,y3)
Mostrar grficamente que tipo de solucin tiene el sistema de ecuaciones

2 x + 3 y z = 5

4 x + 4 y 3z = 3
2 x 3 y + z = 1

>> [x,y] = meshgrid(-3:0.2:3);


>> z1=2*x+3*y-5;
>> z2=(4*x+4*y-3)/3;
>> z3=-1-2*x+3*y;
>> surf(x,y,z1)
>> hold on
>> surf(x,y,z2)
>> surf(x,y,z3)

El sistema tiene solucin


nica

x + y + z = 0

2 x + 5 y + 2 z = 0
7 x + 7 y + z = 0

3x + 2 y 2 z = 3
2 x + 3 y 3z = 4

5 x 2 y + 4 z = 2
3x + 4 y + 2 z = 3

>> [x,y] = meshgrid(-3:0.2:3);


>> z1=-x-y;
>> z2=(2*x-5*y)/2;
>> z3=7*x-7*y;
>> surf(x,y,z1)
>> hold on
>> surf(x,y,z2)
>> surf(x,y,z3)

>> [x,y] = meshgrid(-3:0.2:3);


>> z1=(3*x+2*y-3)/2;
>> z2=(2*x+3*y-4)/3;
>> z3=(2-5*x+2*y)/4;
>> z4=(3-3*x-4*y)/2;
>> surf(x,y,z1)
>> hold on
>> surf(x,y,z2)
>> surf(x,y,z3)
>> surf(x,y,z4)

El sistema tiene infinitas


soluciones

El sistema es inconsistente
no existe un punto o puntos
donde se intersectan los
cuatro planos

TRABAJO PRCTICO III


SISTEMAS DE ECUACIONES CON MATLAB
Resolver los siguientes sistemas de ecuaciones con todos los comando disponibles en Matlab

x 2 y + z 4w = 1

x + 3 y + 7 z + 2w = 2
x 12 y 11z 16 w = 5

9 27 3 3 12

9 27 10 1 19
1 3 5 9 6

10

1 0 1 2 7 4

1 4 21 2 2 5
3 0 3 6 7 2

11

x + 2 y + 3 z = 1

2 x + y 4 z = 9
x y + 2 z = 2

12

x + 5 y + 4z = 1

2 x + 10 y + 8 z = 3
3 x + 15 y + 12 z = 5

x + 2 y z + 3w = 0
2 x + 4 y 2 z + 6w = 0

3x + 6 y 3z + 9w = 0
x + 3 y + z + 2w = 0
x + y + 2 z + 3w = 1
3 x y z 2 w = 4

2 x + 3 y z w = 6
x + 2 y 3 z w = 4
x + 2 y + 3z 2w = 6
2 x y 2 z 3w = 8

3x + 2 y z + 2w = 4
2 x 3 y + 2 z + w = 8

13

14

15

16

2 x y + 3z + 2w = 4

3x + 3 y + 3z + 3w = 6

3x y + 3z w = 6
3x y + 3z w = 6
x + y + z + w = 0
x + 2 y + 3z + 4w = 0

x + 3 y + 6 z + 10 w = 0
x + 4 y + 10 z + 20w = 0
x + z w = 4
2 x + y z + 2w = 8

x + 2 y 2w = 5
x + 2 y + 2w = 3
3x + y + 7 z + 9w = 4
x + y + 4 z + 4w = 7

x 2 z 3w = 0
2 x y 4 z 62w = 6
2 x + y + z + w + u = 2
x + 2 y + z + w + u = 0

x + y + 3z + w + u = 3
x + y + z + 4 w + u = 2

x + y + z + w + 5u = 5

2 x + 8 y 8 z + 10w = 6
x + 2 y 3z + w = 8

3x + y + 4 z w = 10
x y + 2 z 3w = 4
x 2 y + 3z 4w = 4
y z + w = 3

x + 3 y 3w = 1
7 y + 3z + w = 3
y 3 z + 4 w = 5

x 2 y + 3 w = 4

3x + 2 y 5 z = 12
4 x + 3 y 5 z = 5

17

18

19

20

21

22

23

24

3 x + 3 y + 2 z + w = 10
8 x + 6 y + 5 z + 2 w = 21

4 x + 2 y + 3z + w = 8
3 x + 5 y + 3 z + w = 15

7 x + 4 y + 5 z + 2 w = 18
x 2 y + 3z 4w = 4
y z + w = 3

x + 3 y 3w = 1
7 y + 3 z + w = 3
x + 2 y + 5 z + 10w = 2
x 2 z 4w = 4

2 x + 4 y + 8 z + 16w = 0
y + z + 2w = 2
x + 2 y + 3z w = 1
3 x + 2 y + z w = 1

2 x + 2 y + 2 z w = 1
5 x + 5 y + 2 z = 2

2 x + 4 y + 6 z = 18

4 x + 5 y + 6 z = 24
2 x + 7 y + 12 z = 40

x 3z + 4w = 5

x 2 z + 3w = 4

3x + 2 y 5w = 12
4 x + 3 y 5 z = 5
x + y + 2 z + 3w = 1
3 x y z 2 w = 4

2 x + 3 y z w = 6
x + 2 y 3 z w = 4
2 x y + 3z + 2w = 4
3x + 3 y + 3 z + 2w = 6

3x 3 y z + 2w = 6
3x y + 3z w = 6

Resolver por el mtodo de operaciones elementales.

3 x + 3 y + 2 z + w = 10
8 x + 6 y + 5 z + 2w = 21

4 x + 2 y + 3z + w = 8
3 x + 5 y + 3 z + w = 15

7 x + 4 y + 5 z + 2w = 18
x + 4 y z + 3w = 10
2 x + 2 y 14 z = 44

x + 8 y + 4 z 8w = 3
5 x + 17 y 5 z + 13w = 44
x 2 y + z + w = 1

x 2 y + z w = 1
x y + z + 5w = 5

x + 4 y + 6 z + 4w + u = 0

x + y + 4 z + 6 w + 4u = 0
x + y + z + 4 w + 6u = 0
x + 6 y + z + w + 4u = 0

4 x + 6 y + 4 z + w + u = 0

2 x + 4 y + 8 z 2w = 4
x + y + 3z = 5

4 x + 6 y + 14 z 2w = 14
x y + z + 2 w = 11
x + 5 y + 4 z + 3w = 1

2 x y + 2 z w = 0
35 x + 3 y + 8 z + w = 1

x 2 y + 3 z 4u + 2 w = 2
x + 2 y z u = 3

x y + 2 z 3u = 10
y + 2 z + 2u + 6 w = 23

5 x + 4 y + 3 z + 3u w = 12

4 x + 2 y 2w = 0
2 x 3 z + 2w = 0

x + 3 y 4 z + 3w = 0
x + 4 z 4w = 0
x + 7 y + 4 z 3w = 13

6 x y 8 z + 5w = 0

3 x + 3 y 11z + 2 w = 13

Resolver simultneamente los sistemas utilizando el comando rref.


1

2 x + 3 y 4 z = 1

x + 2 y 3 z = 1
x + 5 y 11z = 6

2 x + 3 y 4 z = 1

x + 2 y 3z = 0
x + 5 y 11z = 7

x y + z 2w = 0
2 x + y z + w = 1

3x + 3 y 3 z + 4w = 2
4 x + 5 y 5 z + 7 w = 3

2 x + 3 y 4 z = 1

x + 2 y 3z = 2
x + 5 y 11z = 7

12 x + 3 y 3 z = 1

4 x z = 1

1
2
5 x 3 y + 5 z = 1
7 x 3 y + 2 z = 2
2

Resolver con el comando rank.

3 x y + z + 2 w = 18
2 x 5 y + t + w = 7

x t + 2w = 8
2 y + z + t w = 10

x + y 3 z + t = 1

Mostrar grficamente que tipo de solucin tiene los sistemas de ecuaciones


1

2 x + 4 y + 6 z = 18

4 x + 5 y + 6 z = 24
2 x + 7 y + 12 z = 40

2 x + y z = 5

x 2 y + 2 z = 5
7 x + y z = 10

x + 5 y + 4z = 1

2 x + 10 y + 8 z = 3
3 x + 15 y + 12 z = 5

2 x + y + 3z = 0

x + 2 y = 0
y + z = 0

2 x + 4 y + 6 z = 18

4 x + 5 y + 6 z = 24

2 x + 7 y + 12 z = 40

5 x y z = 0

x + 2 y + 3 z = 14

4 x + 3 y + 2 z = 16

x + 2 y + 2 z = 1

x + 3y + z = 4
x + 3y + 2z = 3

x + y + z = 0

3 x + 6 y + 5 z = 0
x + 4 y + 3z = 0

x + 2 y + 2 z = 1

x + 3y + z = 4
x + 3y + 2z = 3

Utilizando el comando inv(A) resolver.


o
o

A=matriz mgica (5x5) B=vector randonico de(5x1)


Amatriz magica de (7x7) B matrisnula de (7x1)

Introducir la matriz de coeficientes solo utilizando el comando ones, y luego resolver el


sistema.

6
0

0
0
:
0
0

0
0

5 0 0 0 0 0 0 0 0 x1 1


3 5 0 0 0 0 0 0 0 x2 0.78
6 3 5 0 0 0 0 0 0 x3 3.14


0 6 3 5 0 0 0 0 0 x4 7
0 0 6 3 5 0 0 0 0 x5 101

=
0 0 0 6 3 5 0 0 0 x6 0
0 0 0 0 6 3 5 0 0 x7 0


0 0 0 0 0 6 3 5 0 x8 13
0 0 0 0 0 0 6 3 5 x9 5.73
0 0 0 0 0 0 0 6 3 x10 2

Resolver por el mtodo de operaciones elementales utilizando la funcion solucion


anteriormente desarrollada.

3 5 7 9 x1 2

4 3 1 8 x2 2
2 1 1 7 x3 = 0
1
3

3 4 7 6 x4 2
6 8 9 1 x5 2
5 6 1 2 x1 3
1 3 5 7 x1 12


2 1 1 1 2 0
3 5 7 1 x2 0

=
=
4
2
8 1 2 1 x3 3
5 7 1 3 x3 4


5 2 3 1 x4 4
7 1 3 5 x4 16
2 4 4 0

6 12 24 4
X=C
5 Si C = 2 A (:,1) + A (:, 2 ) + 3 A (:, 3 ) 4 A (:, 4 ) resolver
5
2 2 4

9
7 8
1

1 2

2 4
3 6

1 2

2 0 x1 1

1 0 x2 4
=
12 2 x3 12

2 4 x4 3

2
0

3
2

Preparar tres funciones que efecten cada una de las tres operaciones elementales sobre una
matriz dada. Las funciones tendran los siguientes encabezamientos
function B=mprodf(A,i,lambda)
% multiplica la fila i de la matriz A por lambda
function B=msumf(A,i,j,lambda)
% suma a la fila i de la matriz A, la fila j
% multiplicada por lambda
function B=minterf(A,i,j)
% intercambia las filas i y j de la matriz A

APLICACIN AL ALGEBRA LINEAL (SIMBLICO)

Las matrices simblicas se introducen de dos formas:


Igual que las numricas, declarando previamente las variables como simblicas:
>> syms a b c d
>> H=[a b;c d]
En una nica entrada, mediante el uso de la comilla simple de la siguiente manera:
>> H=sym([a,b;c,d])
Notar que tanto 1) como 2) sirven para introducir en Matlab la matriz
COMANDO
>>sym2poly(S)
>> symadd(A,B)
>> symsub(A,B)
>> symmul(A,B)
>> symdiv(A,B)
>> sympow(A,B)
>> sympow(A,n)
>> sympow(A,-1)
>> sym(A,i,j,n)
>> sym (A,i,j)
>> symsize(A)
>> sym(zero(m,n))
>> sym(eye(n))
>> sym(hilb(n))
>> sym(toeplitz(n))
>> sym(vander(n))
>> det
>> diag
>> expm
>> inv
>> null
>> rank
>> tril
>> triu
>> rref
>> [V,E]=eig(A)
>> [Q,D]=eigensys(A)
>> svd
>> poly
>> factor(A)
>> jordan
>> colspace
>> subexpr(V,'S')
>> subs(V,a,N)
>> simple(A)
>> H = sym(H)
>> V = vpa(A)
>> transpose(A)

ACLARACION
Convierte S en un vector de coeficientes de polinomio.
Realiza una suma simblica, A+B
Realiza una resta simblica, A-B
Realiza una multiplicacin simblica, A*B
Realiza una divisin simblica, A/B
Realiza una elevacin a potencia simblica, A^B
Realiza una elevacin a potencia simblica, A^n
Devuelve la inversa de A
Reemplaza el elemento (i,j) de la matriz A por el numero n
Selecciona y extrae el elemento (i,j) de la matriz A
Devuelve las dimensiones de una matriz (numero de filas y columnas)
Devuelve una matriz mxn de ceros
Devuelve una matriz identidad de orden n
Crea la matriz simblica de Hilbert de orden n a partir de su numrica
Crea la matriz simblica de Toeplitzde orden n a partir de su numrica
Crea la matriz simblica de Vandermonde de orden n a partir de su
numrica
calcula el determinante
escribe la diagonal de una matriz
exponencial matricial
calcula la matriz inversa
escribe una base del espacio nulo
rango de una matriz
matriz triangular superior.
matriz triangular inferior
Reduce a la forma echelon.
calcula autovalores y autovectores
Proporciona los autovectores y autovalores simblicamente.
calcula los valores y vectores singulares
escribe el polinomio caracterstico
Factoriza el polinomio caracterstico de A
Forma cannica de Jordan
Forma una base para el espacio de columnas A. Para calcular el rango.
Asigna una subexpresin presente en V a la variable S. reescribe la
expresin simblica con alguna sub expresin comn
Asigna el valor N a la variable a en el vector V
Simplifica la matriz A
Transforma una matriz numrica en una simblica
Devuelve una matriz numrica con exactitud de 16 dgitos
Obtiene la transpuesta de la matriz A

ccode
char
double
emlBlock
fortran
int8, int16, int32,
int64
latex
matlabFunction
poly2sym
simscapeEquation
single
sym2poly
uint8, uint16, uint32,
uint64

C code representation of symbolic expression


Convert symbolic objects to strings
Convert symbolic matrix to MATLAB numeric form
Convert symbolic expression to Embedded MATLAB Function block
Fortran representation of symbolic expression
Convert symbolic matrix to signed integers
LaTeX representation of symbolic expression
Convert symbolic expression to function handle or file
Polynomial coefficient vector to symbolic polynomial
Convert symbolic expressions to Simscape language equations
Convert symbolic matrix to single precision
Symbolic-to-numeric polynomial conversion
Convert symbolic matrix to unsigned integers

Back to Top
ceilRound symbolic matrix toward positive infinityconjSymbolic complex conjugateeqPerform
symbolic equality testfixRound toward zerofloorRound symbolic matrix toward negative
infinityfracSymbolic matrix elementwise fractional partsimagImaginary part of complex
numberlog10Logarithm base 10 of entries of symbolic matrixlog2Logarithm base 2 of entries of
symbolic matrixmodSymbolic matrix elementwise modulusprettyPretty-print symbolic
expressionsquoremSymbolic matrix elementwise quotient and remainderrealReal part of complex
symbolic numberroundSymbolic matrix elementwise roundsizeSymbolic matrix dimensionssortSort
symbolic vectors, matrices, or polynomialssymSymbolic numbers, variables, and objectssymsShortcut
for constructing symbolic objectssymvarFind symbolic variables in symbolic expression or matrix
Ntese que en el calculo simblico se prescinde del punto que se antepona con algunas operaciones
para indicar que dicha operacin se hacia coordenada a coordenada. Si en algn momento dudamos
si una funcin es de datos o simblica se puede recurrir a la instruccin class.
>>class(x)
ans sym
Que nos advierte de que x es una variable simblica.
El Symbolic Math Toolbox tiene otras funciones algunas de ellas dan acceso al Maple llamadas mfun
cuya lista puede verse escribiendo mfunlist.

a b c

Para la matriz A = b c a

c a b
definimos
de >> syms a b c
cualquiera de >> A = [a b c; b c a; c a b]
las dos formas
>> A=sym('[a b c;b c a;c a b]')

A=
[ a, b, c]
[ b, c, a]

[ c, a, b]
ans =

Suma
los
elementos de la >> sum(A(1,:))
primera fila

a+b+c
S=

Suma

>> S=A+A

[ 2*a, 2*b, 2*c]


[ 2*b, 2*c, 2*a]
[ 2*c, 2*a, 2*b]
ans =

Multiplicacin
por un escalar

>> 1/2*A

[ 1/2*a, 1/2*b, 1/2*c]


[ 1/2*b, 1/2*c, 1/2*a]
[ 1/2*c, 1/2*a, 1/2*b]
>> M=A*A

>> M=A*A

M=

Multiplicacin
[ a^2+b^2+c^2, a*b+b*c+c*a, a*b+b*c+c*a]
[ a*b+b*c+c*a, a^2+b^2+c^2, a*b+b*c+c*a]
[ a*b+b*c+c*a, a*b+b*c+c*a, a^2+b^2+c^2]
ans =

>> A^2

Rango

>> rank(A)
3
determinate =

Determinante

>> determinate=det(A)
>> transpuesta=A'

transpuesta
>> transpuesta=transpose(A)
Inversa

3*a*b*c-a^3-b^3-c^3
transpuesta =
[ conj(a), conj(b), conj(c)]
[ conj(b), conj(c), conj(a)]
[ conj(c), conj(a), conj(b)]

>> inv(A)

a
b
Para la matriz B =
c
d

b
c
a d
d
a
c b

d
c
b
a

calcular BB -1

>> syms a b c d
>> A=[a b c d;-b a -d c;-c d a -b;-d -c b a]
>> deter=det(A)
Calcula el determinante y simplifica la respuesta
2
>> Deter_2=simple(deter)
Multiplica la matriz por su inversa y asigna una >> M=A*inv(A);
3
subexpresion comn en la matriz para simplificar
>> Q=subexpr(M,'S')
Los resultados obtenidos despus de cada operacin:
A=
1

Define matriz

[ a, b, c, d]
[ -b, a, -d, c]
[ -c, d, a, -b]
[ -d, -c, b, a]

deter =
2

a^4+2*a^2*b^2+2*c^2*a^2+2*a^2*d^2+b^4+2*d^2*b^2+2*b^2*c^2+c^4+2*c^2*d^2+d^4
Deter_2 =
(a^2+b^2+c^2+d^2)^2
S=
a^2/(a^2+b^2+c^2+d^2)+b^2/(a^2+b^2+c^2+d^2)+c^2/(a^2+b^2+c^2+d^2)+d^2/(a^2+b^2+c^2+d^2)

Q=
[ S, 0, 0, 0]
[ 0, S, 0, 0]
[ 0, 0, S, 0]
[ 0, 0, 0, S]

Para la matriz A = x
1

1 1 4
4 10 1 discutir el valor de x
7 17 3

2 4 3

C=
[ 3, 1, 1,
[ x, 4, 10,
[ 1, 7, 17,
[ 2, 2, 4,
C=
[ 1, -1, -3,
[ x, 4, 10,
[ 1, 7, 17,
[ 2, 2, 4,
C=
[ 1, -1, -3,
[ x, 4, 10,
[ 0, 8, 20,
[ 0, 4, 10,
C=
[ 1, -1, -3,
[ x, 0, 0,
[ 0, 0, 0,
[ 0, 4, 10,

4]
1]
3]
3]

>> syms x
C=[3 1 1 4;x 4 10 1;1 7 17 3;2 2 4 3]

1]
1]
3]
3]

>> C(1,:)=-C(4,:)+C(1,:)

1]
1]
2]
1]

>> C(3,:)=-C(1,:)+C(3,:);
>> C(4,:)=-2*C(1,:)+C(4,:)

1]
0]
0]
1]

>> C(2,:)=-C(4,:)+C(2,:);
>> C(3,:)=-2*C(4,:)+C(3,:)

De la ultima expresin :

Si x = 0 rango 2
Si

x 0 rango 3

TRABAJO PRCTICO IV
MATRICES, DETRMINANTES Y SISTEMAS DE ECUACIONES CON MATLAB SIMBOLICO
Discutir el rango de las matrices utilizando comandos propios de Matlab:

x
1 3 1

A = 0 2 2 3
4 6 x 1

3
5
A=
11

0
3 2 1 1
7 12 9 a

3 13 11 b
2

1 0 1
A = 0 1 2
a b 0
1 10
4 2
A=
1 4

b
1

3
6
0
2

3
4 6
a 1

0 a

1 1 0 3
A = 0 0 1 2
0 a b 2
1 4 2 1
1 3
0
2
A=
a 2 a 6

b 25 8 a / 2

1 3 1 5
2 1 3 3

A=
1 1 a 2

4 3 6 10

1 4 2 1
1 3
0 2

A=
a 13 a 5

4 4
1 b

3
0
A=
1

1 1 4
4 10 x
7 17 3

2 4 3

Discutir el rango de las matrices escalonando esta por operaciones elementales:

1 2 5 0 5
A = 0 0 a 2 2
0 0 0 b 2

x 1 0 x
0 x x 1

A=
1 x x 0

x 0 1 x

1 3 0
a
2a 2 6 1

A=
2 6 a 2

1 1 3 0

1
1 2
2
4 x + 1 2 4

A = 5 2 x + 2 2

8
x
2
1
8
3
x
2

1 x + 2 ( x + 2 )2

A = 1 2 x
4x2
1 x 2
x4

2
2

A = 0

2
0

1 1 a
1 0 1
0 1 1

1 1 2
1 2 3

2 x 1
4
2

A = 5 2

1 x3
8
3

1
2

2
4
3
2

2 x + 6
2 x 1

1 x 0 1 2 3
A = 2 1 0 x 5 7
1 10 0 6 1 2

5
1 3
2 1
3

A = a 2 a + 5

11
5 1
5 8
18

1
5
1
6

2 3a + 2
8
a
0
1

Calcular la inversa de

2 4 3 1
1 1 1 3

A=
2 0 3 0

4 3 3 0
3 4 2 3
1 0 3 2

A=
2 3 3 1

3 2 4 2

0
3
A=
1

1
0
x
A=
0

2
0
3
1
x 0
0 0
0 0
0 x

4
4
4 2

0 1
0
0
x

0
0
2

2 3
3 3
A=
2 1

3 2
2 1
x2 x2
A=
1 2
2
2
x x

2
3
1 3

1 4
1 2
x 2 x 2
2
1

2
x x2
4
0

Calcular el determinante desarrollando la regla de Chio y verificar con el comando det

1
a
A= 2
a
3
a

a
b
A=
c

1
d
b2 c2 d 2

b3 c 3 d 3
b c d
a d c
d
a b

c b
a
1
b

1
c

1 0 1 1
0 1 1 1

A=
a b c d

1 1 1 0
1
1
1 1
1 1 + x
1
1
A=
1 1 1 + x
1

1 1 + x
1 1

0
1
A=
1

1
A=
1

1 1 1
0 a b
a 0 c

b c 0
a2 a b + c + d

b2 b a + c + d
c2 c a + b + d

d2 d a +b +c

1
1
1 2 x 2
A=
2
3

3
2

3
3
1
5

1 9 x2
2
2

x
1

A = 1

0
0

0
x
0
1
1

1 1 0
1 1 0
x 1 0 1

1 x 1
1 0 x

a
0

0
A=
0
0

0 0 0 0 b
a 0 0 b 0
0 a b 0 0

0 b a 0 0
b 0 0 a 0

0 0 0 0 a

x
y

A = y

y
y

Hallar los valores de x si el determinante es cero

1
1

A = 1

1
x

1 1 1
1 1
1

x 1

x 1 1
1 1 1

x
1
1

1
1

x
a

A = a

a
a

c 1
x b c 1
b x c 1

b c x 1
b c d 1
a b

y
y
y

y
x

Calcular el determinante transformndola a una matriz triangular

a
4

A = 0

0
0

1 0 0 0
a 2 0 0
3 a 3 0

0 2 a 4
0 0 1 a

x
1

A = 1

0
0

0
x
0
1
1

1 0
1 1 0
x 1 0 1

1 x 1
1 0 x

1
1
1
1
1
1 + x
1 1 x
1
1
1
1

1
1 1+ y
1
1
1
A=

1
1 1 y
1
1
1
1
1
1
1 1+ z
1

1
1
1
1 1 z
1

Hallar el valor de a para que la matriz tenga inversa

1) A = 1
3

2
1
a 0 2

4 8 1
2 6
a 3

a 0 0
0 b 0 hallar A 20
0 0 c

0 0 0
r
Una matriz N es nilpotente si N = 0

2) A = 1
1

3 4 6
2 4 a
4 6 8

0 1 2

Para la matriz A = 0
0

r 1 , probar que si N es nilpotente entonces

1
0

1
r 1
2
3
A=I-N es inversible y ( I-N ) =I+N+N +N + L +N . Verificar para la matriz A = 0

0
0

2 3 4 5
1 2 3 4
0 1 2 3

0 0 1 2
0 0 0 1

Resolver los siguientes sistemas de ecuaciones con todos los comando disponibles en Matlab

3 x 7 y = m
x + y = n

5 x 13 y = 5m 2n
x + 2 y = m + n 1
2 x + y z = 2

(
)
4 x + a + 1 y 2 z = 4

x + ( a + 2 ) y + z = 2
x ay 2 z = 8

8 x + 3 y 2 z = a

3x + 2 y + 5 z + 4w =
5 x + 3 y + 2 z + w = k

11x + 7 y + 12 z + 9w = m
4 x + 3 y + 13 z + 11w = n

ax + by 2 z = 1

ax + ( 2b 1) y + 3 z = 1
ax + by ( b + 3) z = 2b 1

3 x 2 y + z = b

5 x 8 y + 9 z = 3
2 x + y + az = 1

ax + by + bz = a

bx + ay + bz = b
bx + by + az = a

Hallar los valores de a b, c y d para que se verifique:

a b c d 0
1 3 9 2 0

0 2 0
0 1 1 1 0 6 5
=
1 0 0 1 9 8 4

0 1 0

2 b 1 d 3
A=

a 2 c 1 0

1 2 0
0 1 2 11 5 a 0
3 0 0 5 7 1 b

0 1 1

Hallar la inversa de la matriz aplicando Operaciones elementales (Gauss Jordan):


1
1

A = 1

1
x

1 1 1
1 1
1

x 1

x 1 1
1 1 1

x
1
1

1
1

y a partir de ella obtener:


La tercera fila.
La cuarta columna.
El vector formado por los elementos que ocupan las posiciones impares de la fila 4.
El vector formado por los elementos que ocupan las posiciones pares de la columna 1.
La submatriz formada por los elementos que ocupan las posiciones donde se cruzan las filas 2
y 4 y las columnas 1, 3 y 5.
La submatriz que se obtiene al suprimir las filas 2 y 4, y las columnas 1 y 3.
La matriz que se obtiene de A al aadirle (pegarle) una fila cuyo i-esimo elemento sean la
suma de la i-esima columna de A, y una columna cuyo i-esimo elemento sea la suma de laiesima fila de A (El comando sum te puede ser de ayuda).
PROGRAMACIN LINEAL CON MATLAB
La caja de herramientas de optimizacin o denominado Toolbox extiende la capacidad de MATLAB,
acercndolo a un ambiente numrico computacional. Toolbox incluye rutinas de muchos tipos,
incluyendo la optimizacin

Minimizacin no lineal sin restricciones.


Minimizacin no lineal con restricciones, problemas de minimizar y maximizar, y problemas de
minimizacin semi-infinitos.
Programacin cuadrtica y lineal.
No lineal, mnimos cuadrados y curvas adecuadas.

Solucin de ecuaciones de sistemas no lineales.


Restricciones lineales de mnimos cuadrados.
Problemas de larga escala

Se pueden afrontar problemas de optimizacion de tres maneras:

Extender la capacidad de optimizacin de la caja de herramientas escribiendo sus propios mfiles,


Usando la caja de herramienta optimization toolbox con otras cajas de herramientas, o con
MATLAB o Simulink
Utilizando la herramienta de optimizacin (optimtool), que es un GUI , para seleccionar la
solucin, especificando las opciones de optimizacin y los problemas corrientes. Se puede
definir y modificar los problemas rpidamente con GUI

Aqu se describir como se deber realizar la utilizacin de cada una de estas funciones de
optimizacin:
Definicin de la Funcin Objetivo
Muchas de las funciones de optimizacin requieren que se cree una funcin de Matlab que calcule la
funcin objetivo. La funcin, en la entrada debe aceptar vectores, y retornar a la salida un escalar de
tipo doble.
Existen dos maneras de crear la funcin objetivo:

Se crea una funcin annima en la lnea de comando. Por ejemplo, si se crea una funcin
annima para x 2 , se coloca:
>> square = @ [(x)]* x.^2;
Y se llama a la funcin de optimizacin con el cuadrado del primer argumento de la entrada.
Se puede usar este mtodo si la funcin objetivo es relativamente sencilla, y no requiera ser
utilizada en una sesin futura de Matlab.

Si se escribe un M-file para la funcin, por ejemplo, para escribir la funcin x 2 como un m-file,
se debe abrir un nuevo archivo en el editor MATLAB y se deber colocar el siguiente cdigo:
function y = square(x)
y = x.^2;

Se puede llamar la funcin de optimizacin con @ al cuadrado como el primer argumento de


entrada. El signo @ crea una funcin manejable al cuadrado. Este mtodo se emplea si la
funcin objetiva es complicada o si se sospecha que tal funcin ser utilizada en una prxima
sesin de MATLAB.
Maximizacin. Las funciones de optimizacin fminbnd, fminsearch, fminunc, fmincon, fgoalattain,
fminimax, lsqcurvefit, y lsqnonlin todas realizan la minimizacin de la funcin objetivo f ( x ) . La
maximizacin es alcanzada sustituyendo en las rutinas con f( x ) . Asimismo para alcanzar la
maximizacin para quadprog se sustituye H y f , y para linprog f .
Restricciones Mayores que Cero. La Caja de herramientas de Optimizacin (Toolbox) asume que
las restricciones de desigualdad no lineales son de la forma Ci ( x ) 0. Las restricciones mayores que
cero son expresadas como menores que cero multiplicndolas por -1. Por ejemplo, una restriccin de

la forma Ci ( x ) 0 es equivalente a la restriccin Ci ( x ) 0 ; una restriccin de la forma Ci ( x ) b es


equivalente a la restriccin
Ci ( x ) + b 0
Maximizacin vs Minimizacin. La optimizacin funciona en la caja de herramienta minimizando la
funcin objetivo. Para maximizar la funcin f se aplica una optimizacin para minimizar la funcin f .
El punto resultante donde el mximo f ocurre tambin es el punto donde el mnimo de f ocurre.
Problemas Cubiertos por la Caja de Herramientas. Las siguientes tablas muestran las funciones
disponibles para la minimizacin y maximizacin de las funciones a utilizar en este trabajo especial de
grado, donde la funcin objetivo es una ecuacin lineal con restricciones lineales o no lineales de
desigualdad.
TIPO

NOTACION

min f x

FUNCION

tal que
Ax b, Aeq x = beq , 1 x u

Programacin Lineal

Minimizacin de restricciones

min f T x
tal que
c ( x ) 0ceq ( x ) = 0

>> linprog

>> fmincon

Ax b, Aeq x = beq , 1 x u
Comando linprog
>> linprog se utiliza para resolver problemas de programacin lineal de la forma:

Ax b
min f T x tal que

Aeq x = beq
Ib x ub

Donde: f , x, b, beq , Ib, ub son vectores y A y Aeq son matrices


>> x = linprog(f,A,b)
>> x = linprog(f,A,b,Aeq,beq)

>> x = linprog(f,A,b,Aeq,beq,lb,ub)

>> x = linprog(f,A,b,Aeq,beq,lb,ub,x0)

>> x = linprog(f,A,b,Aeq,beq,lb,ub,x0,options)
>> [x,fval] = linprog(...)

soluciona min f'*x tales que A*xb


Soluciona el problema descrito inicialmente (1),
mientras que adems satisface la igualdad de las
restricciones Aeq*x = beq.
Se coloca A=[ ] y b=[ ] si no existen
desigualdades
Se definen los limites inferior y superior sobre la
variable de diseo en x, de modo que la solucin
este siempre entre el rango lb x ub. Se
coloara Aeq = [ ] y beq
= [ ] si no existen igualdad.
fija el punto de partida x0. Esta opcin esta
solamente disponible con el algoritmo a media
escala (la opcin de Larga Escala, se fija a off
usando optimizacin).
El defecto del algoritmo a larga escala y del
algoritmo simplex es que ignoran los puntos de
partida.
Reduce al mnimo con las opciones de
optimizacin especificadas en la estructura
options. Se utiliza optimset para fijar estas
opciones.
Retorna el valor de la funcin objetivo fun en la

>> [x,lambda,exitflag] = linprog(...)


>> [x,lambda,exitflag,output] = linprog(...)
>> [x,fval,exitflag,output,lambda] = linprog(...)

solucin x: fval = f'*x.


Devuelve un valor exitflag que describe la
condicin de salida.
Devuelve una estructura output que contiene
Informacin acerca de la optimizacin.
Devuelve una estructura lambda donde contiene
los campos de los multiplicadores de Lagrange
en la solucin x.

Aclaraciones secundarias:
Aeq,
beq

f
fun
lb, ub

A, b
x0
output
x
fval
exitflag
Nonlcon

La matriz Aeq y el vector beq son, respectivamente, los coeficiente de las restriccionesde
la inecuaciones lineales y al correspondiente allado derecho del vector: Aeq*x = beq
El vector de los coeficientes para el termino lineal en la ecuacin lineal f*x o la ecuacin
cuadrticax*H*x + f*x.
La funcin para optimizar. fun es una funcin manipulada por una funcin m-file o por una
funcin annima.
Limites inferior y superior de vectores (o matrices). Los argumentos son normalmente del
mismo tamao que x. Sin embargo, si lb tiene menos elementos que x, entonces solo el
primer elemento de m es el lmite inferior. Los lmites superiores en ub se pueden definir
de la misma manera. Tambin se pueden especificar variables infinitas usando inf (para
los limites superiores). Por ejemplo si lb(i) = -inf, la variable x(i) es el limite inferior.
La matriz A y el vector b son, respectivamente, los coeficientes de las restricciones
lineales de desigualdad y el vector correspondiente del lado derecho: Ax b
Punto inicial (es un escalar, vector o matriz) (para fzero, x0 tambin puede ser dos
elementos vectoriales representando un intervalo que es conocido para restricciones un
cero)
Una estructura de salida que contiene informacin acerca de los resultados de la
optimizacin.
La solucin encontrada por la optimizacin de la funcin. Si exitflag > 0, entonces x es una
solucin, si no, x es el valor de la optimizacin rutinaria cuando esta es terminada
prematuramente.
La evaluacin de la funcin objetivo fun con la solucin x
Un nmero entero que identifica la razn en la que el algoritmo de optimizacin finalizo. Se
puede utilizar el exitflag como una herramienta de programacin al escribir m-files como
calculo de optimizacin.
La funcin que calcula las inecuaciones no lineales, las restricciones de ecuaciones e
inecuaciones no lineales evitando variables globales va funciones annimas y
jerarquizadas

Comando fmincon
>> fmincon Se utiliza para encontrar el mnimo o mximo de una funcin multivariable con
restricciones no lineales (intenta encontrar un mnimo de una funcin escalar de varias variables que
comienzan en una estimacin inicial. Esto es generalmente denominado optimizacin de restricciones
no lineales o programacin no lineal)

c ( x) 0
ceq ( x ) = 0

min f ( x ) sujeta a

Ax b
Aeq x = beq
Ib x ub

Donde f , x, b, beq , Ib, ub son vectores, A y Aeq son matrices, c y ceq ( x ) son funciones que
retornan vectores, y f ( x ) es una funcin que retorna un escalar. f( x ) , c( x ) , y ceq ( x ) pueden ser
funciones no lineales (para ste caso trataremos funciones estrictamente lineales)

>> x = fmincon(fun,x0,A,b)

>> x = fmincon(fun,x0,A,b,Aeq,beq)

>> x = fmincon(fun, x0,A,b,Aeq,beq,lb,ub)

>> x = fmincon(fun,
x0,A,b,Aeq,beq,lb,ub,nonlcon)

>> x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)

>> [x,fval] = fmincon(...)


>> [x,fval,exitflag] = fmincon(...)
>> [x,fval,exitflag,output] = fmincon(...)
>> [x,fval,exitflag,output,lambda] = fmincon()
>> [x,fval,exitflag,output,lambda,grad] = fmincon(...)

Evala el valor inicial x0 ,y encuentra un


mnimo de x para la funcin descrita en fun
sujeta a las desigualdades lineales Ax b. x0
puede ser un escalar, un vector o una matriz.
Minimiza fun sujeta a las igualdades lineales
Aeq x = beq, as como tambin la de la forma
Ax b. se colocara A = [ ] y b = [ ] si no
existen desigualdades.
Aqu se define y se colocan los limites inferior
y superior sobre la variable de diseo en x,
por esta razn la solucin siempre estar entre
los rangos lb x ub. Se colocara Aeq = [ ] y
beq = [ ] si no existen igualdades, lb(i) = -Inf si
x(i) es el limite inferior, y ub(i) = Inf si x(i) es el
limite superior.
Realiza la minimizacin sujeta a las
desigualdades no lineales c(x) o a las
igualdades ceq(x) definida en nonlcon.
fmincon optimiza sujeta a c(x) 0 y ceq(x)=0.
Se colocara lb = [ ] yo ub = [ ] si no existen
limites.
Minimiza con las opciones de optimizacin
especificadas en la estructura de opciones. Se
utilizara optimset para colocar estas opciones.
Se coloca nonlcon = [ ] si no hay restricciones
de igualdad o desigualdad no lineales.
Retorna el valor de la funcin objetivo fun en
la solucin x
Retorna un valor exitflag que describe la
condicin de salida de fmincon.
Retorna una estructura output con informacin
acerca de la optimizacin.
Retorna una estructura lamda cuyos campos
contienen los multiplicadores de lagrange en
la solucin de x.
Retorna el valor del gradientede fun en la
solucin de x

Opciones
Son las opciones de optimizacin usadas por linprog Algunas opciones se aplican a todos los
algoritmos, y otras son solamente relevantes cuando se usa el algoritmo de larga escala. Se puede
utilizar optimset para fijar o para cambiar los valores de estos campos en la estructura de opciones,
options. A continuacin se muestran las opciones de optimizacin utilizadas por las funciones linprog
y fmincon
Nombre de la opcin
Diagnostics
DiffMaxChange
DiffMinChange
Display

Descripcin
Display muestra informacin acerca de la funcin a minimizar
Mximo cambio en variables para diferencias infinitas
Mnimo cambio en variables para diferenciacin finita
Nivel del display en off el display no muestra la salida; iter. Muestra

FunValCheck
LargeScale
MaxFunEvals
MaxIter
MaxSQPIter
OutputFcn
PrecondBandWidth
RelLineSrchBnd
RelLineSrchBndDuration
Simplex
TolFun
TolPCG
Tolx
TypicalX

la salida en cada iteracin; final muestra el final de la salida notify


muestra si la funcin no converge
Comprueba si la funcin objetivo y los valores de restricciones son
validos. on muestra un error cuando la funcin objetivo o las
restricciones devuelven un valor que es complex, NaN o Inf.
Usa el algoritmo de larga escala si esposible
Mximo nmero de evaluaciones realizadas a la funcin
Mximo numero de iteraciones realizadas
Mximo numero de iteraciones de programacin cuadrtica
secuencial
Especifica una o mas usos definidos de las funciones que la funcin
a optimizar visita cada iteracin
Amplitud de banda superior, preacondicionado para PCG, el ajuste
de inf usa una factorizacin directa en lugar de CG
Condicin de borde
Numero de iteraciones para el cual la condicin de borde
especificada en RelLineSrchBnd debe ser activa
Si la funcin esta en, on la funcin utiliza el algoritmo simplex.
Terminacin de la tolerancia en la funcin evaluada
Terminacin de la tolerancia en la iteracin PCG L
Terminacin de la tolerancia en x
Evaluacin x tpica. La longitud del vector es igual al numero de
elementos de x0

Minimizar la funcin f ( x1 , x2 ) = 2 x1 + 8 x2 sometida a las restricciones:

x1 0
x2 0

2 x1 + 4 x2 8
2 x1 5 x2 0
x1 + 5 x2 5

Para la solucin analtica, resolvemos las tres ltimas restricciones y hallamos las intersecciones,

2 x1 + 4 x2 = 8
A 10 , 9

7 7
x1 + 5 x2 = 5

2 x1 5 x2 = 0
B ( 5, 2 )

x
+
5
x
=
5
1
2

2 x1 + 4 x2 = 8
C 20 , 8

9 9
3 x1 5 x2 = 0

>> x1=0:0.1:6;
>> x2=(8-2*x1)/4;
>> x3=(5+x1)/5;
>> x4=2/5*x1;
la zona de soluciones factibles >> plot(x1,x2,x1,x3,x1,x4)
ser:
>> hold on
>> x=[10/7 5 20/9];
>> y=[9/7 2 8/9];
>> fill(x,y,'r');
>> grid on
10 9
Los valores de la funcin objetivo.
f ( A)=2 +8 =13.1
Alcanzndose el mnimo en el punto C.
7 7
Para la solucin Matlab es necesario
que todas las restricciones estn de la
forma: 0 para poder crear el archivo,
multiplicando cada restriccin por -1:
Se crea un archivo M-file definiendo la
funcin objetivo

x1 0
x2 0

f ( B )=25+82= 26

f ( C )=2

20 8
+8 =11.5
9 9

2 x1 4 x2 + 8 0
2 x1 5 x2 0
x1 + 5 x2 5

%Creacin de un archivo M-file para definir la funcin objetivo

function f = objfun(x)
f = 2*x(1) +8*x(2);
function [c, ceq] = confun(x)
Se crea otro archivo M-file para definir
% restricciones de desigualdades lineales o no lineales
las restricciones del problema, las
cuales todas deben ser 0.

c = [-x(1); -x(2); -2*x(1)-4*x(2)+8; 2*x(1)-5*x(2); -x(1)+5*x(2)-5];


ceq = [];% restricciones de igualdades lineales o no lineales

Se observa que en ceq no se define


ninguna inecuacin, esto se debe a que
todas las restricciones dadas en el
problema son de la forma G(x) 0 o
G(x) 0 pero no de la forma G(x) = 0
Se crea otro archivo M-file que se
encargue de llamar a los otros dos
archivos M-file donde se definen la
funcin objetivo y las restricciones del
problema, de la siguiente manera:

clc % Borra la pantalla


clear % Borra todas las variables
disp(' ') % DISP: muestra una cadena de caracteres
disp(' Ejemplo 1')
disp('------------------------------------------------------------')
disp(' Condiciones Iniciales')
x0=[-1,1]
options=optimset('LargeScale','off');
[x,fval]=fmincon(@objfun,x0,[],[],[],[],[],[],@confun,options)
Optimization terminated: first-order optimality measure
less than options.TolFun and maximum constraint
violation is less than options.TolCon.
Se llama la funcin objetivo con objfun y Active inequalities (to within options.TolCon = 1e-006):
sus restricciones con confun. Dando el lower upper ineqlin ineqnonlin
siguiente resultado:
x=
2.2222 0.8889
fval =
11.5556
Al obtener este resultado con la aplicacin de Matlab y compararlo con el obtenido de forma grfica,
se comprueba de forma consistente que la solucin del problema es efectivamente en el punto C, que
es el punto donde se alcanza el mnimo para la funcin f ( x1 , x2 ) = 2 x1 + 8 x2 .
Hallar x que minimice f( x ) = x1 x2 x3 Que comienza en el punto x = (10,10,10 ) 0 x1 + 2 x2 + 2 x3 72
Este ejemplo esta tomado de la optimizacin toolbox para uso con Matlab, el cual es un ejemplo
resuelto de la siguiente manera:
escriba un M-file que devuelva un valor escalar function f = myfun(x)
f de la funcin evaluada en x
f = -x(1)*x(2)*x(3);
Se reescribe las restricciones a constante.
>> A=[-1 -2 -2;1 2 2];
Como ambas restricciones son lineales, se
>> b=[0;72];
formulan como una matriz A x = b

x1 2 x2 2 x3 0

x1 + 2 x2 + 2 x3 72
Se coloca un punto de partida y se invoca la >> x0 = [10; 10; 10];
optimizacin:
>> [x,fval] = fmincon(@myfun,x0,A,b)
Optimization terminated successfully:
Magnitude of directional derivative in search direction
less than 2*options.TolFun and maximum constraint violation
is less than options.TolCon
Active Constraints:

La respuesta es

2
x=
24.0000
12.0000
12.0000
fval =
-3.4560e+003

Solucin en Matlab
Se crea archivo para definir la funcin f = objfun1(x)
funcin objetivo:
f = -x(1)*x(2)*x(3);
%Restricciones son lineales de desigualdad
Luego, se crea otro archivo que funcin [c, ceq] = confun1(x)
definen las restricciones de la % restricciones no lineales de desigualdad
funcin objetivo
c = [-x(1)-2*x(2)-2*x(3);x(1)+2*x(2)+2*x(3)-72];
% restricciones no lineales de igualdad
ceq = [];
disp(' ')
disp(' Ejemplo 2')
Por ltimo es crea otro archivo disp('--------------------------------')
para definir las variables de disp(' Condiciones Iniciales')
entrada, a travs de las cuales x0=[10; 10; 10]
obtenemos los resultados de la disp('Matrices de Coeficientes de Ax=b')
optimizacin
A=[-1 -2 -2; 1 2 2]
b=[0; 72]
options=optimset('LargeScale','off');
[x,fval]=fmincon(@objfun1,x0,A,b,[],[],[],[],@confun1,options)
x=
24.0000
Se llama al ultimo archivo desde 12.0000
el command window y se obtiene 12.0000
la respuesta
fval =
-3.4560e+003
Al realizar el ejercicio por medio de las aplicaciones de Matlab se puede observar que la solucin
alcanzada para el valor de x que reduce al mnimo la funcin f( x ) = x1 x2 x3 es el punto

x = ( 24,12,12 ) , y donde el valor de la funcin evaluada en este punto x , es de -3.4560e+003. De


esta manera se corrobora el resultado ya arrojado en el clculo mostrado anteriormente.
x1 x2 + x3 20
Hallar los valores de x que minimice f ( x ) = 5 x1 4 x2 6 x3 sujeto a 3x1 + 2 x2 + 4 x3 42 x1 x2 x3 0
Introducir
el
vector
de
coeficientes de >> f = [-5; -4; -6];
la
funcin
objetivo

3x1 + 2 x2 30
Optimization terminated
successfully.
x=
0.0000

Introducir
la >> A = [1 -1 1;3 2 4;3 2 0];
15.0000
matriz
de >> b = [20; 42; 30];
3.0000
restricciones
>> lb = zeros(3,1);
fval =
Introducir
el
>> [x,fval,exitflag,output,lambda]=linprog(f,A,b,[],[],lb)
comando para
-78.0000
resolver
Solucin en Matlab
Se Crea el archivo para definir la function f = objfun2(x)
funcin objetivo:
f = -5*x(1)-4*x(2)-6*x(3);
funcin [c, ceq] = confun2(x)
Se crea otro archivo que define % Nonlinear inequality constraints
las restricciones de la funcin c = [x(1)-x(2)+2*x(3)-20; 3*x(1)+2*x(2)+4*x(3)-42;3*x(1)+2*x(2)-30; -x(1); -x(2); -x(3)];
% Nonlinear equality constraints
objetivo
ceq = [];
clc %Borrar la pantalla
clear %Borrar todas las variables
disp(' ') %DISP: muestra una cadena de caracteres
disp(' ejemplo 3')
Por ltimo es crea otro archivo disp('------------------------------------------------------------')
para definir las variables de disp('Condiciones iniciales')
entrada, a travs de las cuales x0 = [-1,1,1]
obtenemos los resultados de la options = optimset('LargeScale','off');
optimizacin
f = [-5; -4; -6]
A = [1 -1 1
324
3 2 0];
b = [20; 42; 30];
[x, fval] = fmincon(@objfun2,x0,A,b,[],[],[],[],@confun2,options)
>> rafa
Ejemplo 3
--------------------------------------------------------------Optimization terminated: first-order optimality measure less
than options.TolFun and maximum constraint violation is
less than options.TolCon.
Se llama al ultimo archivo desde Active inequalities (to within options.TolCon = 1e-006):
el command window y se obtiene lower upper ineqlin ineqnonlin
la respuesta
22
33
4
x=
0 15.0000 3.0000
fval =
-78.0000
Observe que la solucin alcanzada para el valor de x que reduce al mnimo la funcin
f ( x ) = 5 x1 4 x2 6 x3 , es el punto x =( 0,15,3), y el valor de la funcin evaluada en este punto es 78.
A una persona tiene 10 millones de bolivianos y le aconsejan que las invierta en dos tipos de
acciones, A y B. Las de tipo A tienen ms riesgo pero producen un beneficio del 10 %. Las de tipo B
son ms seguras, pero producen slo el 7% anual. Despus de varias deliberaciones decide invertir
como mximo 6 millones en la compra de acciones A y por lo menos, 2 millones en la compra de
acciones B. Adems, decide que lo invertido en A sea, por lo menos, igual a lo invertido en B. Cmo
deber invertir 10 millones para que le beneficio anual sea mximo?
x1 = cantidad invertida en acciones A
Sean las variables de decisin:
x2 = cantidad invertida en acciones B

10
7
x1 +
x2 = 0.1x1 + 0.07 x2
100
100

La funcin objetivo es:

f( x ) =

Y las restricciones son:

x1 0, x2 0

La zona de
soluciones
factibles es:

x1 = x2
A ( 2,2 )

x2 = 2
x1 + x2 = 10
C ( 6,4 )

x1 = 6

x1 + x2 10

x1 6 x2 2

x1 x2

x1 + x2 = 10
B ( 5,5)

x1 = x2
x1 = 6
D ( 6,2 )

x2 = 2

f ( A)=0.34
f ( B )==0.85
f ( C )=0.88
f ( D )=0.74
La funcin objetivo toma los valores de:
Solucin en Matlab
Se Crea el archivo para definir la function f = objfun3(x)
funcin objetivo:
f =-(0.1*x(1) + 0.07*x(2));
function [c, ceq] = confun3(x) %Restricciones de inecuaciones lineales
Se crea otro archivo que define
c = [-x(1); -x(2); x(1)+x(2)-10; x(1)-6; -x(2)+2;-x(1)+x(2)];
las restricciones
ceq = [];% Nonlinear equality constraints
Por ltimo es crea otro archivo disp (' ')
para definir las variables de disp('Ejemplo 4')
entrada, a travs de las cuales disp('---------------------------------------------------------------')
disp('condiciones iniciales')
obtenemos los resultados de la x0=[-1,1]
optimizacin
options=optimset('LargeScale','off');
[x,fval]=fmincon(@objfun3,x0,[],[],[],[],[],[],@confun3,options)
>> rafa_3
Ejemplo 4
--------------------------------------------------------------condiciones iniciales
x0 =
-1 1
Optimization
terminated successfully:
Se llama al ultimo archivo desde
First-order optimality measure less than options.TolFun and
el command window y se obtiene maximum constraint violation is less than options.TolCon
la respuesta
Active Constraints:
3
4
x=
6 4
fval =
-0.8800
Comparando este resultado en Matlab con el obtenido de forma grfica, se comprueba que la solucin del
problema es invertir 6 millones en acciones tipo A y 4 millones en acciones tipo B. Es importante sealar que el
hecho en que la evaluacin de la funcin en el punto arrojado x= (6,4), de un resultado negativo (-), se debe a
que Matlab establece que para maximizar la funcin f se aplica una optimizacin para minimizar la funcin

f . El punto resultante donde el mximo f ocurre tambin es el punto donde el mnimo de f ocurre.
TRABAJO PRCTICO V
PROGRAMACION LINEAL CON MATLAB
Dadas las funciones objetivo y sus sistemas de restricciones. Hallar los mximos, mnimos
con Matlab:
FUNCION OBJETIVO

RESTRICCIONES

FUNCION OBJETIVO

RESTRICCIONES

f ( x1 , x2 ) = 7 + 5 x1 + 4 x2

f ( x1 , x2 ) = 8 x1 + 9 x2

f ( x1 , x2 ) = 3 + 5 x1 + 4 x2

f ( x1 , x2 ) = 9 x1 + 8 x2

x1 + 2 x2 16
x1 4, x2 2
x1 + x2 6
x1 5, x2 2
x1 + 2 x2 12

2 x1 + x2 12

f ( x1 , x2 ) = 5 + 8 x1 + 6 x2

f ( x1 , x2 ) = 9 + 8 x1 + 5 x2

f ( x1 , x2 ) = 5 + 8 x1 + 6 x2

x1 + x2 10
2 x1 + x2 2
6 x1 + 5 x2 90

10

f ( x1 , x2 ) = 5 x1 + 9 x2

x1 10, x2 2
5

f = 3x1 + x2 + 4 x3

x1 + 6 x2 + 2 x3 20
x2 + 4 x3 80

f = 2 x1 + 2 x2 + 10 x3

2 x2 + x2 + 3x3 10
x3 2

x1 2, x2 3
x1 2 x2 3
x1 2, x2 9
3x1 + 4 x2 48

3x1 x2 3
x1 2 x2 4
4 x1 + 3x2 84
2 x1 + 3x2 54
x1 18, x2 14
x1 x2 x3 3

11

f = 4 x1 2 x2 + 3x3

x2 x3 4
x1 + x3 12
x1 + x2 + x3 6

2 x1 + 4 x2 + 2 x3 13
6

x1 + x2 12

12

f = 2 x1 + x2 + 3x3

2 x1 + 3 x2 + x3 9
4 x1 + 2 x2 + x3 10

Una fbrica debe producir mas de 80Kg entre clavos y tornillos cuyos costos de produccin
respectivamente son de 3 y 4 dlares por kilogramo. Sin embargo para que los precios no se
modifiquen, no debe producirse ms de 60 Kg de clavos ni mas de 50 Kg de tornillos. Hallar su
mnimo costo
Un barman dispone de 80 litros de singan, 120 litros de refresco y 140 de agua, desea preparar do
tipos de tragos, A y B; El tipo A requiere un litro de singan, uno de agua y dos de refresco. Si le pagan
5 y 7 bolivianos por litro respectivamente. Hallar su ingreso mximo.
Una refinera de petrleo va a producir un nuevo tipo de gasolina mezclando los 4 tipos de gasolina
disponibles actualmente, que se han obtenido procesando diferentes tipos de crudo. Los crudos de
origen son cuatro y tienen distinta composicin. Para simplificar el problema se supone que cada tipo
de gasolina tiene un porcentaje distinto de los aditivos A, B y C. La tabla siguiente indica estos
porcentajes y el precio unitario para los cuatro tipos de gasolina:

Las exigencias del mercado imponen que la gasolina que se va a producir debe tener al menos el
20% del aditivo A, al menos un 30% del B y al menos un 20% del C. Adems, no puede contener ms
de un 30% de la gasolina de tipo 1 ni ms de un 40% de la gasolina de tipo 2. Determinar la forma
menos costosa de producir gasolina con estas especificaciones.