universidad mayor de san andrs

Anuncio
UNIVERSIDAD MAYOR DE SAN ANDRÉS
FACULTAD DE INGENIERIA
INGENIERIA INDUSTRIAL
DEPARTAMENTO DE CURSO BÁSICO
EL CÁLCULO 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
APLICACIÓN AL ALGEBRA LINEAL
Matriz
Una matriz es un arreglo rectangular de de números letras u objetos (llamados elementos) dispuestos
en m líneas horizontales (filas) y n líneas verticales (columnas) de la forma:
A m×n
⎡ 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 mayúsculas 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 dimensión o que es de
orden m×n, y al conjunto de todas las matrices de orden m×n lo denotaremos por:
A m×n = ⎡⎣ 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 m×n =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 m×n = ⎡⎣ aij ⎤⎦
TRANSPUESTA
⇒ A T n×m = ⎡⎣ a ji ⎤⎦
T
=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
k⋅A=k⋅A
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
( )
T
n≥2
OPERACIONES CON MATRICES
NOMBRE
DEFINICION
PROPIEDADES
tr ( A+B ) = tr ( A ) + tr ( B )
tr ( k ⋅ A ) = k ⋅ tr ( A )
Traza de una
matriz.
n
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 )m×n = ⎡⎣ 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 m×n = ⎡⎣ k ⋅ aij ⎤⎦
Asociativa ( A ⋅ B ) ⋅ C=A ⋅ ( B ⋅ C )
Distributiva A ⋅ ( B+C ) =A ⋅ B+A ⋅ C
Multiplicación
de matrices.
A×B =
p
∑ 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 múltiplo 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
múltiplo 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 número de ceros que preceden a la unidad en una fila no nula aumenta de manera
aritmética.
Matriz canónica. Se denomina matriz escalonada canónica a una matriz escalonada con la
propiedad de que el primer elemento no nulo de una fila es un uno y además, 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 sucesión 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 número de filas no nulas que resultan después de la última iteración 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
numérico 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
A⋅A = 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 )
A⋅B = 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
m
A -1 =
1
A
El valor de A no depende de la fila k
n -2
⋅A
elegida.
Si la matriz A posee una línea (fila o
columna) de ceros, su determinante es
nulo.
Si se intercambian dos líneas del
determinante, el determinante cambia de
signo.
Si la matriz A tiene dos líneas paralelas
iguales, su determinante es nulo.
Si todos los elementos de una línea se
multiplican por un número, todo el
determinante queda multiplicado por dicho
número.
Si la matriz A posee dos líneas paralelas
proporcionales, su determinante es nulo.
Si descomponemos una línea (fila o
columna) en suma de dos, podemos
descomponer el determinante en suma de
dos determinantes
El determinante de una matriz no varıa si a
una lınea se le suma una combinación
lineal de líneas paralelas.
Si una lınea de la matriz A es combinación
lineal de otras paralelas, su determinante
es nulo.
Funciones y comandos de Matlab
La notación utilizada en Matlab es la notación usual en algebra lineal. De modo que, por ejemplo, la
multiplicación 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 tamaño adecuado.)
Las siguientes funciones actúan sobre vectores. Aquí se presentan solo algunas funciones. Una
relación 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
Máximo elemento de un vector. Devuelve el valor máximo vM y la posición que
ocupa pM en el vector
Mínimo elemento de un vector. Devuelve el valor mínimo y la posición 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
Desviación típica de las componentes de V
Producto de los elementos de un vector
Devuelve el vector producto acumulativo de los elementos de un vector
Ordenación 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 raíces 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 también 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
función 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 (tamaño) 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 números
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
4⋅244
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
Raíz 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 detrás 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 dirección 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)
Máxima suma de valores absolutos por columnas (mayor suma de las
columnas de A)
Máxima suma de valores absolutos por filas (mayor suma de la filas de A)
F-norma de A, definida por sqrt(sum(diag(A’A)))
Estimación de la norma de la matriz A. Se usa cuando el tamaño 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 núcleo de A (N’N=I). El número de columnas de N
es la nulidad de A
Da una base ortonormal para el rango de A (Q’Q=I). Las columnas de Q
generan el mismo espacio que las columnas de A, y el número 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
ordenación según 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 máximo valor de filas y columnas
Verifica si una variable existe o esta vacía
FUNCIONES DE FACTORIZACION DE MATRICES Y SOLUCION DE SISTEMAS LINEALES
Matriz inversa de la matriz cuadrada A (A-1)
Da la condición de la matriz A (cociente entre el mayor y el menor valor
cond(A)
singular de A)
rcond(A)
Recíproco de la condición de la matriz A
U=chol(A)
Descomposición de Cholesky de una matriz definida positiva
Devuelve las matrices triangular superior y triangular inferior de A.
[L,U]=lu(A)
Descomposición LU
[Q,R]=qr(A)
Descomposición 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,
cumpliéndose que A*V=B*V*D
Devuelve las raíces de la ecuación característica
Da el vector V de valores singulares de A. Los valores singulares de A son las
raíces cuadradas de los autovalores de la matriz simétrica 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 característico 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 tamaño 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 explıcito 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 mágica
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 más útiles y potentes de Matlab. No están todas las
que soporta Matlab. La relación completa se puede consultar a través de la ayuda: matlab/elmat y
matlab/matfun principalmente. Se clasificaran en varios subgrupos:
OPERACIONES CON MATRICES
COMANDO
OPERACIÓN
COMANDO
OPERACIÓN
+
adición o suma
‘
transpuesta
-
sustracción o resta
^
potenciación
*
multiplicación
\
división-izquierda
.*
producto elemento a elemento
/
división-derecha
./ y .\
división 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 versión 5 de Matlab se puede usar end para indicar el último elemento de una matriz,
respecto de una dimensión 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])
8
12
1
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
Añadirle filas y columnas sin mas que >> C=[A;[1 3 5 7]]
especificar el vector con los elementos C =
que se quiere añadir
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 condición es ans =
verdadera.
0 1 0
0.1000 -0.5000 -0.1000 -0.3000
0
0
1
0
0
0
0
0
0.1000
0.5000
1
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 condición:
satisfacen la condición v > 0.3
condición, utilizando la función find
>> An= 1:length(Av);
>> An(Av>0.3)
>> Av(Av>0.3)
ans =
0.4000
0.4000
0.5000
ans =
2
6
12
>> A=find(Av>0.3)
A=
2
6
12
⎛ B I 4×3 ⎞
⎟
⎝ I 4×3 14×3 ⎠
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 característicos 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
Ecuación característica de la matriz A
>> p=poly(A)
p=
1.0000 -15.0000 8.0000 -132.0000
Raíces de la ecuación característica 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 número 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 tamaño del vector siete columnas
Devuelve la suma todas las columnas de A
Con una sola instrucción 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.
⎛1
⎜
⎜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 instrucción
6
7
8
9
10
11
12
13
7
8
9
10
11
12
13
14
8⎞
⎟
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
⎟
0⎟
0⎟
⎟
1⎠
>> A=[(1:8)',(2:9)',(3:10)',(4:11)',(5:12)',(6:13)',(7:14)',(8:15)']
Generamos B con una sola instrucción
>> 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
Obsérvese que por haber utilizado paréntesis –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 más fácil utilizar la función fliplr(A), que es específica para ello. Finalmente, hay
que decir que A(:) representa un vector columna con las columnas de A una detrás de otra.
Con una sola línea de instrucciones generar la
matriz y con una sola línea de instrucción extraer
un vector columna cuyos elementos sean los
elementos de las 3 diagonales de A
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
⎛1
⎜
2
Ingresar la matriz A = ⎜
⎜1
⎜
⎝4
ans =
0
0
0
0
0
1
3
5
1
6
8
4
3
8
7
6⎞
⎟
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
0⎞
⎟
A⎠
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⎟
0 ⎟⎟
1⎟
⎟
3⎠
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=⎜
⎛A
⎜
0
0⎞
⎟
⎜0
⎝
0
C ⎟⎠
⎛ −5 5 ⎞
⎟
⎝ 5 3⎠
C=⎜
Formar la matriz D6×6 = ⎜ 0 B 0 ⎟ sin introducir elemento a elemento.
Con una sola instrucción 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 PRÁCTICO I
MANIPULACIÓN DE MATRICES EN MATLAB
Con una o dos instrucciones como máximo crear la matriz A, luego aplicando operaciones de
extracción y concatenación crear la matriz B.
⎛1
⎜
⎜2
⎜3
⎜
4
A=⎜
⎜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
6
7
8
9
10
11
12
13
7
8
9
10
11
12
13
14
8⎞
⎟
9⎟
10 ⎟
⎟
11 ⎟
12 ⎟
⎟
13 ⎟
14 ⎟
⎟
15 ⎟⎠
⎛5
⎜
⎜6
⎜7
⎜
8
B=⎜
⎜1
⎜
⎜2
⎜3
⎜⎜
⎝4
⎛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 ⎟⎠
4⎞
⎟
3⎟
(sin introducir explícitamente
1⎟
⎟
2⎠
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 ⎞
⎟
0 ⎟
A -1 ⎟⎠
⎛A
⎜
D=⎜ 0
⎜ At
⎝
0 Bt ⎞
⎟
I 0⎟
0 B ⎟⎠
Hallar el valor mínimo 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 máximo 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 números impares
• El segundo formado por los cuatro primeros números 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
j
Con la menor cantidad de instrucciones (si es posible una sola) Construya:
⎛1
⎜
2
A=⎜
⎜3
⎜
⎝4
1
2
3
4
1
2
3
4
1⎞
⎛3
⎛1 0 0 0 0⎞
⎟
⎜
2⎟
⎜
⎟ 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⎟
0⎟
⎟
3⎠
Con la menor cantidad de instrucciones (si es posible una sola) Construya
⎛1
⎜
⎜6
⎜ 11
A=⎜
⎜ 16
⎜ 21
⎜⎜
⎝ 26
2
7
12
17
22
27
3
8
13
18
23
28
4
9
14
19
24
29
5⎞
⎟
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 añadirle (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 instrucción, 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 números reales entre -5 y 5.
(Indicación: Ejecuta help rand para saber como generar números aleatorios en distribuciones
Uniformes, randn se emplea para distribuciones normales).
⎛ I 4×4
⎝ θ 4×4
Con una sola instrucción genere una matriz 8x8 tal que A= ⎜
θ 4×4 ⎞
⎟
-I 4×4 ⎠
Generar un vector con todos los números pares desde el 1 al 101 y con una sola instrucción
eliminar todos los números pares.
Genere una matriz randomica de 8x8 y de esta obtenga una submatriz constituida por las
columnas de índice impar.
En una sola instrucción 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, , , ,
⎛ −3
⎜
7
Para la matriz A = ⎜
⎜5
⎜
⎝9
•
•
•
2
5
7
4
Ordenar sus elementos del menor al mayor manteniendo su forma (utilizar la orden reshape)
En una sola instrucción, poner a cero todos los elementos negativos de la matriz.
En una sola instrucción, poner a cero todos los elementos de la matriz que estén entre -5 y 5.
(La conjunción lógica es &).
De tres formas distintas (cada una en una sola instrucción), 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 solución 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 números mayores que 4.
Genere una secuencia aleatoria con distribución normal y elimine los elementos negativos.
Genere una secuencia aleatoria con distribución normal y calcule el número de elementos
negativos.
Genere una secuencia aleatoria con distribución uniforme e con 1000 muestras. Obtenga el
número de muestras con una amplitud superior a 0.9. Calcule luego el número de muestras
cuyo módulo 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 aritm´etica exacta, “no lo son” en aritmetica de
punto flotante como veremos en este ejercicio.Este es un ejemplo t´ıp`ıco de matriz mal
condicionada.
•
•
•
Construya una matriz de Hilbert de tamaño 12×12 sin utilizar bucles for–end.
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 tamaños 9, 12 y
15.
Matrices Elementales
Veamos a continuación 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
7
9
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 operación es pesado y repetitivo.,
para este tipo de tareas Matlab permite construir al usuario sus propias funciones para abreviar los
cálculos, 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
función
>> pij(3,2,1) *A
ans =
2
5
9
8
7
6
1
9
4
Ejemplo del método 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 ⎞
⎟
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
OPERACIÓNES CON MATRICES Y DETERMINANTES EN MATLAB
Hallar la inversa de la matriz aplicando Operaciones elementales (Gauss Jordan):
1
2
⎛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 ⎟⎠
⎛0
⎜
⎜1
A = ⎜ −1
⎜
⎜0
⎜0
⎝
⎛1
⎜
⎜2
A=⎜ 0
⎜
⎜ −1
⎜1
⎝
3
4
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⎞
⎟
0⎟
1⎟
⎟
−2 ⎟
1 ⎟⎠
−1 5 ⎞
⎟
0 1⎟
4 −2 ⎟
⎟
−1 0 ⎟
0 1 ⎟⎠
⎛0
⎜
⎜1
A=⎜ 2
⎜
⎜1
⎜ −1
⎝
⎛1
⎜
⎜0
A = ⎜0
⎜
⎜0
⎜0
⎝
5
6
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 están escritas en la práctica) y hallar la
inversa de estas aplicando para esto los comandos de Matlab
1
2
⎛ 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 ⎠
−
3
4
⎛
⎜ 10
⎜
⎜ −4
⎜
⎜
1
A=⎜
⎜ 2
⎜
⎜ −2
⎜
⎜ 3
⎜−
⎝ 2
⎛
⎜
⎜
⎜
A=⎜
⎜
⎜
⎜
⎝
−5
2
0
1
1
13
7
5
−
7
1
7
1
−
7
2
−
7
37
7
35
14
3
7
3
7
5
14
−
2
−1
1
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⎠
−
−2 ⎞
⎟
10 ⎟
2 ⎟
⎟
1 ⎟
10 ⎟
⎟
2 ⎠
Generar la matriz de cofactores para cada una de las siguientes matrices. Luego hallar la
inversa de las matrices por el método de la adjunta:
1
⎛1
⎜
1
A = ⎜⎜
1
⎜⎜
⎝1
2 3 4⎞
⎟
4 6 8⎟
4 7 9⎟
⎟
3 5 7 ⎟⎠
2
⎛ 3 −2
⎜
0 4
A = ⎜⎜
−1 1
⎜⎜
⎝ −1 2
0 1⎞
⎟
5 1⎟
2 3⎟
⎟
3 6 ⎟⎠
3
⎛ 1 −1 4
⎜
2 0 3
A = ⎜⎜
4 −2 1
⎜⎜
⎝ −2 4 −1
2⎞
⎟
1⎟
0⎟
⎟
2 ⎟⎠
4
⎛1
3 −5 7 ⎞
⎜
⎟
−2 −5 12 −17 ⎟
⎜
A=⎜
1 5 0
3 ⎟
⎜⎜
⎟
3 −4 10 ⎟⎠
⎝1
Hallar la matriz A si es que:
1
2
3
⎛ 11 2 7 ⎞
⎜
⎟
⎛ 2 −1 2 ⎞ ⎜ 7 −1 4 ⎟
A⎜
⎟=
⎝ 3 1 2 ⎠ ⎜ −3 −1 −7 ⎟
⎜
⎟
⎝ 2 −1 1 ⎠
4
T
⎛1
⎜
0
A⎜
⎜0
⎜
⎝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 ⎠
5
6
⎛0
⎜
⎜1
A⎜ 0
⎜
⎜0
⎜0
⎝
⎛1
⎜
0
A⎜
⎜0
⎜
⎝0
1 1 4
⎛3
⎜
0
A⎜
⎜0
⎜
⎝0
T
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⎟
⎟
0⎠
Hallar el rango de la matriz primero aplicando solo el comando adecuado y luego escalonando
al máximo por operaciones elementales cada una de ellas
1
⎛1
⎜
⎜0
A = ⎜⎜ 0
⎜1
⎜4
⎝
0 1 4⎞
⎟
0 2 5⎟
1 3 6⎟
⎟
3 14 32 ⎟
5 6 32 77 ⎟⎠
2
⎛ 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
3
⎛ 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 ⎟
⎝
⎠
4
⎛ 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 ⎟
⎝
⎠
5
⎛ 17 −28
⎜
⎜ 24 −37
A = ⎜⎜ 25 −7
⎜ 31 12
⎜ 42 13
⎝
39 ⎞
⎟
50 ⎟
32 −18 −11 ⎟
⎟
19 −43 −55 ⎟
29 −55 −68 ⎟⎠
6
⎛ 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
1 0 0 L
0
1
2
3
L 15
0 2 0 L
0
−1
0
3
A = −1 −2
0
M
M
L 15
L 15
O M
A=0 0 3 L
M
M
M O
0 0 0
0
0
3
M
−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
M
4
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
5
0
L 1
L 1
L 1
L 1
O M
1 12
6
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:
1
−7 1 5
0
0
0
2 4
0
0
A = −1 1 3
0
0
4
7 6
2
1
5
8 3 −1 3
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
2
4
1 1 1 1 1
1 1 1 1 6
0
0
0
2
10
0
−1
−1
A=
−1
−1
−1
5
A =
6
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
2
3
3
3
3
3
3
2
3
3
3
3
3
3
2
3
3
3
3
3
3
2
3
3
3
3
3
3
2
3
3
2
3
3
3
2
Dada la matriz A hallar dos matrices L y U de tal manera que se cumpla A = L *U
1
⎛1
⎜
⎜1
A = ⎜2
⎜
⎜2
⎜3
⎝
0 −1 0
1 −1 1
4 −1 3
2
1
0
3 −1 5
1⎞
⎟
0⎟
−2 ⎟
⎟
−1 ⎟
−3 ⎟⎠
2
⎛ 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 )
∧
3
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 ( A−1 B −1 ) + ( AB t − At B )
t
t
t
Hallar la inversa de
o
o
Matriz magica de (7x5)
Matris randonica (2x3)
t
−1
⎛5
⎜
⎜ −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
4⎞
⎟
3⎟
1⎟
⎟
−7 ⎟
3 ⎟⎠
RESOLUCIÓN DE ECUACIONES Y SISTEMAS DE ECUACIONES (NUMERICAS) CON MATLAB
Funciones de Matrices
Existen varias factorizaciones de matrices que mencionamos brevemente.
La Factorización Triangular ó Factorización LU expresa cualquier matriz cuadrada como el
producto de dos matrices triangulares. Esta factorización se utiliza para obtener el inverso y el
determinante. También es la base para la solución de sistemas lineales. Para obtener la factorización
LU de A escribimos, [L, U] = lu(A).
La Factorización Ortogonal ó Factorización QR se utiliza para matrices cuadradas ó rectangulares.
Esta factorización se utiliza para resolver sistemas lineales con más ecuaciones que desconocidas.
Esta factorización también 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 Descomposición de Valores Singulares es importante para el análisis de problemas que
envuelvan matrices. La asignación triple [U, S, V] = svd(A) produce los tres factores en la
descomposición de valores singulares A = U*S*V'. Las matrices U y V son ortogonales y la matriz S
es diagonal. La función svd(A) devuelve solamente los elementos de la diagonal de S, que son los
valores singulares de A.
La Descomposición de Valores Propios se utiliza para obtener los valores y vectores propios de
una matriz cuadrada A. La función eig(A) devuelve los valores propios de A en un vector columna. La
asignación [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.
Métodos de solución para sistemas de ecuaciones lineales
Los métodos más comunes para resolver sistemas de ecuaciones lineales de dimensión nxn son:
•
•
•
Eliminación de Gauss
Factorización LU
Descomposición QR
Solución por el método de eliminación de Gauss. Es el que se utiliza con mayor frecuencia para
resolver sistemas de ecuaciones lineales. Este método realiza una transformación del sistema
cuadrado:
A⋅ X = B
A un sistema
I ⋅X =C'
Donde I es la matriz identidad. Así la solución del sistema está dado por:
X =C'
Matlab resuelve sistemas de ecuaciones lineales empleando el método de eliminación de Gauss
empleando la función rref y el formato de su empleo es el siguiente: x = rref([A B])
Solución por el método de factorización 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 método LU. La
función 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 también puede usarse: x = inv(L*U)*B
Solución por el método de descomposición QR. Con este método, conocido como
descomposición ortogonal triangular, también 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 = Q⋅R
.Así el sistema A ⋅ X = B queda expresado como:
QR ⋅ X = B
Empleando Matlab es posible resolver sistemas lineales empleando el método QR. La función 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(‘ecuación’, ‘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 ecuación en la variable x (esto es para el caso
simbolico)
Resuelve n ecuaciones simultáneas ec1,...,ecn en las
variables x1,...,xn (sistema de ecuaciones)
Da las raíces 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 método de la factorizacion LU)
• Si A es cuadrada pero singular, "A\B" nos
proporcionará, generalmente, un mensaje de error
aunque el sistema tenga solución.
• Cuando A no es cuadrada y el sistema es compatible,
"A\B" nos proporcionará, generalmente, "una única
solución"
Resuelve el sistema X*A=B
Resuelve un sistema por método Gauss Jordan, (b debe estar
como una vector columna)
Ejemplos:
⎧5 x − y − z = 0
⎪
Resolver el siguiente sistema por los distintos métodos: ⎨ 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
Solución por eliminación 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 solución 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 solución
x =1
y = −4 z = −15
⎧5 x + 2ky + kz = 2
⎪
Implementar una función 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 parámetro k. (La variable de entrada será el parámetro k; la de salida, el
vector solución del sistema. Recordar que A\b proporciona la solución del sistema de ecuaciones con
matriz de coeficientes A y vector de términos 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 función
>> solucion(5)
ans =
1/12
-1/24
1/3
⎡ 2 −1 1 4 ⎤
⎢7 2 9 −1⎥
⎥
Implementar una función 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
función
>> 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 función 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 solución única y mostrar la grafica ⎨
⎪6 x − 9 y + 4 z = 0
⎪⎩ x + y + z = 1
La solución 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 solución 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 gráficamente que tipo de solución 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 solución
ú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 PRÁCTICO III
SISTEMAS DE ECUACIONES CON MATLAB
Resolver los siguientes sistemas de ecuaciones con todos los comando disponibles en Matlab
1
⎧ x − 2 y + z − 4w = 1
⎪
⎨ x + 3 y + 7 z + 2w = 2
⎪ x − 12 y − 11z − 16 w = 5
⎩
2
⎛ 9 27 3 3 12 ⎞
⎜
⎟
⎜ 9 27 10 1 19 ⎟
⎜1 3 5 9 6 ⎟
⎝
⎠
10
3
⎛ 1 0 1 − 2 7 −4 ⎞
⎜
⎟
⎜ 1 4 21 −2 2 5 ⎟
⎜ 3 0 3 −6 7 2 ⎟
⎝
⎠
11
4
⎧ x + 2 y + 3 z = −1
⎪
⎨2 x + y − 4 z = 9
⎪ x − y + 2 z = −2
⎩
12
5
6
7
8
⎧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
9
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 método de operaciones elementales.
1
2
3
⎧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
4
⎧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
⎩
5
6
7
8
9
⎧ 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 simultáneamente 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
⎧2 x + 3 y − 4 z = 1
⎪
⎨ x + 2 y − 3z = 0
⎪ − x + 5 y − 11z = −7
⎩
2
⎧ 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
3
⎧2 x + 3 y − 4 z = 1
⎪
⎨ x + 2 y − 3z = 2
⎪ − x + 5 y − 11z = −7
⎩
3
⎧ 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.
1
⎧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 gráficamente que tipo de solución 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
⎧2 x + y − z = 5
⎪
⎨ x − 2 y + 2 z = −5
⎪ 7 x + y − z = 10
⎩
3
⎧x + 5 y + 4z = 1
⎪
⎨ 2 x + 10 y + 8 z = 3
⎪3 x + 15 y + 12 z = 5
⎩
4
⎧2 x + y + 3z = 0
⎪
⎨x + 2 y = 0
⎪y + z = 0
⎩
5
⎧2 x + 4 y + 6 z = 18
⎪
⎨4 x + 5 y + 6 z = 24
⎪
⎩2 x + 7 y + 12 z = 40
6
⎧5 x − y − z = 0
⎪
⎨ x + 2 y + 3 z = 14
⎪
⎩ 4 x + 3 y + 2 z = 16
7
⎧ x + 2 y + 2 z = −1
⎪
⎨x + 3y + z = 4
⎪x + 3y + 2z = 3
⎩
8
⎧x + y + z = 0
⎪
⎨3 x + 6 y + 5 z = 0
⎪ x + 4 y + 3z = 0
⎩
9
⎧ x + 2 y + 2 z = −1
⎪
⎨x + 3y + z = 4
⎪x + 3y + 2z = 3
⎩
Utilizando el comando inv(A) resolver.
o
o
A=matriz mágica (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.
⎛3
⎜
⎜6
⎜0
⎜
⎜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 método 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 ⎞
⎜
⎟⎜ x ⎟ ⎜ ⎟
⎜
⎟⎜ ⎟ ⎜ ⎟
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 ⎠
⎛1
⎜
⎜2
⎜0
⎜
⎜3
⎜2
⎝
Preparar tres funciones que efectúen cada una de las tres operaciones elementales sobre una
matriz dada. Las funciones tendrían 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
APLICACIÓN AL ALGEBRA LINEAL (SIMBÓLICO)
Las matrices simbólicas se introducen de dos formas:
Igual que las numéricas, declarando previamente las variables como simbólicas:
>> 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 simbólica, A+B
Realiza una resta simbólica, A-B
Realiza una multiplicación simbólica, A*B
Realiza una división simbólica, A/B
Realiza una elevación a potencia simbólica, A^B
Realiza una elevación a potencia simbólica, 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 simbólica de Hilbert de orden n a partir de su numérica
Crea la matriz simbólica de Toeplitzde orden n a partir de su numérica
Crea la matriz simbólica de Vandermonde de orden n a partir de su
numérica
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 simbólicamente.
calcula los valores y vectores singulares
escribe el polinomio característico
Factoriza el polinomio característico de A
Forma canónica de Jordan
Forma una base para el espacio de columnas A. Para calcular el rango.
Asigna una subexpresión presente en V a la variable S. reescribe la
expresión simbólica con alguna sub expresión común
Asigna el valor N a la variable a en el vector V
Simplifica la matriz A
Transforma una matriz numérica en una simbólica
Devuelve una matriz numérica con exactitud de 16 dígitos
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
Nótese que en el calculo simbólico se prescinde del punto que se anteponía con algunas operaciones
para indicar que dicha operación se hacia coordenada a coordenada. Si en algún momento dudamos
si una función es de datos o simbólica se puede recurrir a la instrucción class.
>>class(x)
ans sym
Que nos advierte de que x es una variable simbólica.
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 =
Multiplicación
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=
Multiplicación
[ 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 B×B -1
∧
B
>> 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 común en la matriz para simplificar
>> Q=subexpr(M,'S')
Los resultados obtenidos después de cada operación:
A=
1
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)
3
Q=
[ S, 0, 0, 0]
[ 0, S, 0, 0]
[ 0, 0, S, 0]
[ 0, 0, 0, S]
⎡3
⎢
Para la matriz A = ⎢ x
⎢1
⎢
⎣2
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 expresión :
Si x = 0 rango 2
Si
x ≠ 0 rango 3
TRABAJO PRÁCTICO IV
MATRICES, DETRMINANTES Y SISTEMAS DE ECUACIONES CON MATLAB SIMBOLICO
Discutir el rango de las matrices utilizando comandos propios de Matlab:
1
x⎤
⎡1 3 1
⎢
A = ⎢ 0 2 2 3 ⎥⎥
⎢⎣ 4 6 − x −1⎥⎦
2
⎡3
⎢5
A=⎢
⎢11
⎢
⎣4
0⎤
3 2 1 1 ⎥⎥
7 12 9 a ⎥
⎥
3 13 11 b ⎦
2
5
4
4
5
⎡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⎦
7
8
⎡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 ⎦
3
⎡ 1 3 −1 5 ⎤
⎢2 1 3 3 ⎥
⎥
A=⎢
⎢ 1 −1 a 2 ⎥
⎢
⎥
⎣ 4 3 6 10 ⎦
6
⎡ 1 −4 −2 −1⎤
⎢1 3
0 −2 ⎥⎥
⎢
A=
⎢ a −13 a 5 ⎥
⎢
⎥
4 −4 ⎦
⎣1 b
9
⎡3
⎢0
A=⎢
⎢1
⎢
⎣2
1 1 4⎤
4 10 x ⎥⎥
7 17 3 ⎥
⎥
2 4 3⎦
Discutir el rango de las matrices escalonando esta por operaciones elementales:
1
⎡1 2 5 0 5 ⎤
A = ⎢⎢0 0 a 2 2 ⎥⎥
⎢⎣0 0 0 b 2 ⎥⎦
2
⎡ x 1 0 x⎤
⎢0 x x 1 ⎥
⎥
A=⎢
⎢1 x x 0 ⎥
⎢
⎥
⎣ x 0 1 x⎦
3
−1 −3 0 ⎤
⎡ a
⎢ −2a 2 −6 1 ⎥
⎥
A=⎢
⎢ 2 −6 a −2 ⎥
⎢
⎥
⎣ −1 1 3 0 ⎦
4
1
−1 −2 ⎤
⎡2
⎢ 4 x + 1 −2 −4 ⎥
⎢
⎥
A = ⎢ − 5 −2 x + 2 2 ⎥
⎢
⎥
8⎥
−x
−2
⎢1
⎢⎣ 8
3
x ⎥⎦
−2
5
⎡1 x + 2 ( x + 2 )2 ⎤
⎢
⎥
A = ⎢1 2 x
4x2 ⎥
⎢1 x 2
x4 ⎥
⎣
⎦
6
⎡2
⎢2
⎢
A = ⎢0
⎢
⎢2
⎢⎣ 0
1 −1 a ⎤
1 0 1 ⎥⎥
0 1 1⎥
⎥
1 1 2⎥
1 2 3 ⎥⎦
7
⎡ 2 x −1
⎢4
2
⎢
A = ⎢ −5 −2
⎢
⎢ 1 x−3
⎢⎣ 8
3
−1
−2
−2 ⎤
−4 ⎥⎥
3
2 ⎥
⎥
−2 x + 6 ⎥
−2 x − 1 ⎥⎦
8
⎡ 1 x 0 −1 2 3 ⎤
A = ⎢⎢ 2 −1 0 x 5 7 ⎥⎥
⎢⎣ 1 10 0 −6 1 2 ⎥⎦
9
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
1
2
⎡ 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 ⎦
3
4
⎡0
⎢3
A=⎢
⎢1
⎢
⎣ −1
⎡0
⎢x
A=⎢
⎢0
⎢
⎣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
5
6
⎡ 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
⎡1
⎢a
A=⎢ 2
⎢a
⎢ 3
⎣a
2
⎡a
⎢b
A=⎢
⎢c
⎢
⎣d
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
4
5
⎡ 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
7
⎡0
⎢1
A=⎢
⎢1
⎢
⎣1
8
⎡1
⎢
1
A=⎢
⎢1
⎢
⎣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⎦
3
1
⎡1
⎢1 2 − x 2
A=⎢
⎢2
3
⎢
3
⎣2
3 ⎤
3 ⎥⎥
1
5 ⎥
⎥
1 9 − x2 ⎦
2
2
6
⎡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 ⎥⎦
9
⎡a
⎢0
⎢
⎢0
A=⎢
⎢0
⎢0
⎢
⎣b
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⎦
y
y
y
x
y
y
3
⎡x
⎢y
⎢
A = ⎢y
⎢
⎢y
⎢⎣ y
y
x
y
y
y
x
y
y
y
Hallar los valores de x si el determinante es cero
1
⎡1
⎢1
⎢
A = ⎢1
⎢
⎢1
⎢⎣ x
1 1 1
1 1
1
x
x 1
x 1 1
1 1 1
x⎤
1 ⎥⎥
1⎥
⎥
1⎥
1 ⎥⎦
2
⎡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 transformándola a una matriz triangular
1
⎡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 ⎥⎦
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 ⎥⎦
3
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
⎢
1) A = ⎢ 1
⎢ −3
⎢
⎣0
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 ∧
⎡1
⎢
2) A = ⎢ −1
⎢1
⎢
⎣a
3 4 6⎤
2 4 a ⎥⎥
4 6 8⎥
⎥
0 1 2⎦
⎡0
⎢
Para la matriz A = ⎢0
⎢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
1
2
⎧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
3
⎧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
4
⎧ ax + by − 2 z = 1
⎪
⎨ ax + ( 2b − 1) y + 3 z = 1
⎪ ax + by − ( b + 3) z = 2b − 1
⎩
5
⎧3 x − 2 y + z = b
⎪
⎨5 x − 8 y + 9 z = 3
⎪ 2 x + y + az = −1
⎩
6
⎧ 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:
1
⎡1
⎢
⎡ a b c d ⎤ ⎢0
⎢ 1 3 9 2 ⎥ ⎢0
⎣
⎦
⎢
⎣0
0 2 0⎤
0 1 1 ⎥⎥ ⎡1 0 6 5 ⎤
=
1 0 0 ⎥ ⎢⎣1 9 8 4 ⎥⎦
⎥
0 1 0⎦
⎡1
⎢
⎡ 2 b 1 d ⎤ ⎢3
A=⎢
⎥
⎣ a −2 c 1 ⎦ ⎢ 0
⎢
⎣0
2
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
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 añadirle (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).
PROGRAMACIÓN LINEAL CON MATLAB
La caja de herramientas de optimización o denominado Toolbox extiende la capacidad de MATLAB,
acercándolo a un ambiente numérico computacional. Toolbox incluye rutinas de muchos tipos,
incluyendo la optimización
•
•
•
•
Minimización no lineal sin restricciones.
Minimización no lineal con restricciones, problemas de minimizar y maximizar, y problemas de
minimización semi-infinitos.
Programación cuadrática y lineal.
No lineal, mínimos cuadrados y curvas adecuadas.
•
•
•
Solución de ecuaciones de sistemas no lineales.
Restricciones lineales de mínimos cuadrados.
Problemas de larga escala
Se pueden afrontar problemas de optimizacion de tres maneras:
•
•
•
Extender la capacidad de optimización 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 optimización (optimtool), que es un GUI , para seleccionar la
solución, especificando las opciones de optimización y los problemas corrientes. Se puede
definir y modificar los problemas rápidamente con GUI
Aquí se describirá como se deberá realizar la utilización de cada una de estas funciones de
optimización:
Definición de la Función Objetivo
Muchas de las funciones de optimización requieren que se cree una función de Matlab que calcule la
función objetivo. La función, en la entrada debe aceptar vectores, y retornar a la salida un escalar de
tipo doble.
Existen dos maneras de crear la función objetivo:
•
Se crea una función anónima en la línea de comando. Por ejemplo, si se crea una función
anónima para x 2 , se coloca:
>> square = @ [(x)]* x.^2;
Y se llama a la función de optimización con el cuadrado del primer argumento de la entrada.
Se puede usar este método si la función objetivo es relativamente sencilla, y no requiera ser
utilizada en una sesión futura de Matlab.
•
Si se escribe un M-file para la función, por ejemplo, para escribir la función x 2 como un m-file,
se debe abrir un nuevo archivo en el editor MATLAB y se deberá colocar el siguiente código:
function y = square(x)
y = x.^2;
Se puede llamar la función de optimización con @ al cuadrado como el primer argumento de
entrada. El signo @ crea una función manejable al cuadrado. Este método se emplea si la
función objetiva es complicada o si se sospecha que tal función será utilizada en una próxima
sesión de MATLAB.
Maximización. Las funciones de optimización fminbnd, fminsearch, fminunc, fmincon, fgoalattain,
fminimax, lsqcurvefit, y lsqnonlin todas realizan la minimización de la función objetivo f ( x ) . La
maximización es alcanzada sustituyendo en las rutinas con − f( x ) . Asimismo para alcanzar la
maximización para quadprog se sustituye − H y − f , y para linprog − f .
Restricciones Mayores que Cero. La Caja de herramientas de Optimización (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 multiplicándolas por -1. Por ejemplo, una restricción de
la forma Ci ( x ) ≥0 es equivalente a la restricción ⎣⎡−Ci ( x ) ⎦⎤ ≤ 0 ; una restricción de la forma Ci ( x ) ≥b es
equivalente a la restricción ⎡−
⎣ Ci ( x ) + b ⎤⎦ ≤ 0
Maximización vs Minimización. La optimización funciona en la caja de herramienta minimizando la
función objetivo. Para maximizar la función f se aplica una optimización para minimizar la función − f .
El punto resultante donde el máximo f ocurre también es el punto donde el mínimo de − f ocurre.
Problemas Cubiertos por la Caja de Herramientas. Las siguientes tablas muestran las funciones
disponibles para la minimización y maximización de las funciones a utilizar en este trabajo especial de
grado, donde la función objetivo es una ecuación lineal con restricciones lineales o no lineales de
desigualdad.
TIPO
NOTACION
min f x
FUNCION
T
tal que
Ax ≤ b, Aeq x = beq , 1 ≤ x ≤ u
Programación Lineal
Minimización 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 programación 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*x≤b
Soluciona el problema descrito inicialmente (1),
mientras que además 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 diseño en x, de modo que la solución
este siempre entre el rango lb ≤ x ≤ ub. Se
coloara Aeq = [ ] y beq
= [ ] si no existen igualdad.
fija el punto de partida x0. Esta opción esta
solamente disponible con el algoritmo a media
escala (la opción de Larga Escala, se fija a “off”
usando optimización).
El defecto del algoritmo a larga escala y del
algoritmo simplex es que ignoran los puntos de
partida.
Reduce al mínimo con las opciones de
optimización especificadas en la estructura
options. Se utiliza optimset para fijar estas
opciones.
Retorna el valor de la función objetivo fun en la
>> [x,lambda,exitflag] = linprog(...)
>> [x,lambda,exitflag,output] = linprog(...)
>> [x,fval,exitflag,output,lambda] = linprog(...)
solución x: fval = f'*x.
Devuelve un valor exitflag que describe la
condición de salida.
Devuelve una estructura output que contiene
Información acerca de la optimización.
Devuelve una estructura lambda donde contiene
los campos de los multiplicadores de Lagrange
en la solución 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 ecuación lineal f’*x o la ecuación
cuadráticax*H*x + f’*x.
La función para optimizar. fun es una función manipulada por una función m-file o por una
función anónima.
Limites inferior y superior de vectores (o matrices). Los argumentos son normalmente del
mismo tamaño que x. Sin embargo, si lb tiene menos elementos que x, entonces solo el
primer elemento de m es el límite inferior. Los límites superiores en ub se pueden definir
de la misma manera. También 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 también puede ser dos
elementos vectoriales representando un intervalo que es conocido para restricciones un
cero)
Una estructura de salida que contiene información acerca de los resultados de la
optimización.
La solución encontrada por la optimización de la función. Si exitflag > 0, entonces x es una
solución, si no, x es el valor de la optimización rutinaria cuando esta es terminada
prematuramente.
La evaluación de la función objetivo fun con la solución x
Un número entero que identifica la razón en la que el algoritmo de optimización finalizo. Se
puede utilizar el exitflag como una herramienta de programación al escribir m-files como
calculo de optimización.
La función que calcula las inecuaciones no lineales, las restricciones de ecuaciones e
inecuaciones no lineales “evitando variables globales vía funciones anónimas y
jerarquizadas”
Comando fmincon
>> fmincon Se utiliza para encontrar el mínimo o máximo de una función multivariable con
restricciones no lineales (intenta encontrar un mínimo de una función escalar de varias variables que
comienzan en una estimación inicial. Esto es generalmente denominado optimización de restricciones
no lineales o programación 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 función 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(...)
Evalúa el valor inicial x0 ,y encuentra un
mínimo de x para la función 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 también 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 diseño en x,
por esta razón la solución 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 minimización 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 = [ ] y⁄o ub = [ ] si no existen
limites.
Minimiza con las opciones de optimización
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 función objetivo fun en
la solución x
Retorna un valor exitflag que describe la
condición de salida de fmincon.
Retorna una estructura output con información
acerca de la optimización.
Retorna una estructura lamda cuyos campos
contienen los multiplicadores de lagrange en
la solución de x.
Retorna el valor del gradientede fun en la
solución de x
Opciones
Son las opciones de optimización 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 continuación se muestran las opciones de optimización utilizadas por las funciones linprog
y fmincon
Nombre de la opción
Diagnostics
DiffMaxChange
DiffMinChange
Display
Descripción
Display muestra información acerca de la función a minimizar
Máximo cambio en variables para diferencias infinitas
Mínimo cambio en variables para diferenciación 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 iteración; ‘final’ muestra el final de la salida ‘notify’
muestra si la función no converge
Comprueba si la función objetivo y los valores de restricciones son
validos. ’on’ muestra un error cuando la función objetivo o las
restricciones devuelven un valor que es complex, NaN o Inf.
Usa el algoritmo de larga escala si esposible
Máximo número de evaluaciones realizadas a la función
Máximo numero de iteraciones realizadas
Máximo numero de iteraciones de programación cuadrática
secuencial
Especifica una o mas usos definidos de las funciones que la función
a optimizar visita cada iteración
Amplitud de banda superior, preacondicionado para PCG, el ajuste
de ‘inf’ usa una factorización directa en lugar de CG
Condición de borde
Numero de iteraciones para el cual la condición de borde
especificada en RelLineSrchBnd debe ser activa
Si la función esta en, ‘on’ la función utiliza el algoritmo simplex.
Terminación de la tolerancia en la función evaluada
Terminación de la tolerancia en la iteración PCG L
Terminación de la tolerancia en x
Evaluación x típica. La longitud del vector es igual al numero de
elementos de x0
Minimizar la función 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 solución analítica, 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 función objetivo.
f ( A)=2 +8 =13.1
Alcanzándose el mínimo en el punto C.
7 7
Para la solución Matlab es necesario
que todas las restricciones estén de la
forma: ≤ 0 para poder crear el archivo,
multiplicando cada restricción por -1:
Se crea un archivo M-file definiendo la
función objetivo
x1 ≤ 0
x2 ≤ 0
f ( B )=2⋅5+8⋅2= 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
%Creación de un archivo M-file para definir la función 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 inecuación, 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
función 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 función 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 aplicación de Matlab y compararlo con el obtenido de forma gráfica,
se comprueba de forma consistente que la solución del problema es efectivamente en el punto C, que
es el punto donde se alcanza el mínimo para la función 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 optimización 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 función 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];
optimización:
>> [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
Solución en Matlab
Se crea archivo para definir la función f = objfun1(x)
función objetivo:
f = -x(1)*x(2)*x(3);
%Restricciones son lineales de desigualdad
Luego, se crea otro archivo que función [c, ceq] = confun1(x)
definen las restricciones de la % restricciones no lineales de desigualdad
función 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 través de las cuales x0=[10; 10; 10]
obtenemos los resultados de la disp('Matrices de Coeficientes de Ax=b')
optimización
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 solución
alcanzada para el valor de x que reduce al mínimo la función f( x ) = − x1 ⋅ x2 ⋅ x3 es el punto
x = ( 24,12,12 ) , y donde el valor de la función evaluada en este punto x , es de -3.4560e+003. De
esta manera se corrobora el resultado ya arrojado en el cálculo 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
función
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
Solución en Matlab
Se Crea el archivo para definir la function f = objfun2(x)
función objetivo:
f = -5*x(1)-4*x(2)-6*x(3);
función [c, ceq] = confun2(x)
Se crea otro archivo que define % Nonlinear inequality constraints
las restricciones de la función 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 través de las cuales x0 = [-1,1,1]
obtenemos los resultados de la options = optimset('LargeScale','off');
optimización
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 solución alcanzada para el valor de x que reduce al mínimo la función
f ( x ) = −5 x1 − 4 x2 − 6 x3 , es el punto x =( 0,15,3), y el valor de la función 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 más riesgo pero producen un beneficio del 10 %. Las de tipo B
son más seguras, pero producen sólo el 7% anual. Después de varias deliberaciones decide invertir
como máximo 6 millones en la compra de acciones A y por lo menos, 2 millones en la compra de
acciones B. Además, decide que lo invertido en A sea, por lo menos, igual a lo invertido en B. ¿Cómo
deberá invertir 10 millones para que le beneficio anual sea máximo?
x1 = cantidad invertida en acciones A
Sean las variables de decisión:
x2 = cantidad invertida en acciones B
10
7
x1 +
x2 = 0.1x1 + 0.07 x2
100
100
La función 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 función objetivo toma los valores de:
Solución en Matlab
Se Crea el archivo para definir la function f = objfun3(x)
función 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 través de las cuales disp('---------------------------------------------------------------')
disp('condiciones iniciales')
obtenemos los resultados de la x0=[-1,1]
optimización
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 gráfica, se comprueba que la solución del
problema es invertir 6 millones en acciones tipo A y 4 millones en acciones tipo B. Es importante señalar que el
hecho en que la evaluación de la función en el punto arrojado x= (6,4), de un resultado negativo (-), se debe a
que Matlab establece que para maximizar la función f se aplica una optimización para minimizar la función
− f . El punto resultante donde el máximo f ocurre también es el punto donde el mínimo de − f ocurre.
TRABAJO PRÁCTICO V
PROGRAMACION LINEAL CON MATLAB
Dadas las funciones objetivo y sus sistemas de restricciones. Hallar los máximos, mínimos
con Matlab:
FUNCION OBJETIVO
RESTRICCIONES
FUNCION OBJETIVO
RESTRICCIONES
1
f ( x1 , x2 ) = 7 + 5 x1 + 4 x2
2
f ( x1 , x2 ) = 8 x1 + 9 x2
3
f ( x1 , x2 ) = 3 + 5 x1 + 4 x2
4
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
7
f ( x1 , x2 ) = 5 + 8 x1 + 6 x2
8
f ( x1 , x2 ) = 9 + 8 x1 + 5 x2
9
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 fábrica debe producir mas de 80Kg entre clavos y tornillos cuyos costos de producción
respectivamente son de 3 y 4 dólares por kilogramo. Sin embargo para que los precios no se
modifiquen, no debe producirse más de 60 Kg de clavos ni mas de 50 Kg de tornillos. Hallar su
mínimo 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 máximo.
Una refinería de petróleo 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 composición. 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. Además, no puede contener más
de un 30% de la gasolina de tipo 1 ni más de un 40% de la gasolina de tipo 2. Determinar la forma
menos costosa de producir gasolina con estas especificaciones.
Descargar