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.