Control Optimo 1

Embed Size (px)

Citation preview

  • 7/25/2019 Control Optimo 1

    1/15

    Informe Laboratorio #1

    Alumnos: Cristbal Valenzuela

    Profesor: Hctor Ramirez

    Fecha: 16 de septiembre de 2015

  • 7/25/2019 Control Optimo 1

    2/15

    NDICE 2

    ndice

    1. Ejercicio 1 41.1. Ejercicio 1.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

    1.2. Ejercicio 1.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

    2. Ejercicio 2 42.1. Ejercicio 2.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

    2.2. Ejercicio 2.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

    2.3. Ejercicio 2.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

    2.4. Ejercicio 2.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

    2.5. Ejercicio 2.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

    2.6. Ejercicio 2.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

    3. Ejercicio 3 63.1. Ejercicio 3.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

    3.2. Ejercicio 3.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

    4. Ejercicio 4 64.1. Ejercicio 4.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

    4.2. Ejercicio 4.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

    4.3. Ejercicio 4.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

    4.4. Ejercicio 4.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

    5. Ejercicio 5 8

    6. Ejercicio 6 8

    7. Ejercicio 7 97.1. Ejercicio 7.a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

    7.2. Ejercicio 7.b . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

    8. Ejercicio 8 108.1. Ejercicio 8.a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

    8.2. Ejercicio 8.b . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

    9. Ejercicio 9 119.1. Ejercicio 9.a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

    9.2. Ejercicio 9.b . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

    9.3. Ejercicio 9.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

    10. Ejercicio 10 13

    11. Ejercicio 11 14

    Informe #1 - Control ptimo

  • 7/25/2019 Control Optimo 1

    3/15

    NDICE 3

    12. Ejercicio 12 15

    Informe #1 - Control ptimo

  • 7/25/2019 Control Optimo 1

    4/15

    1. Ejercicio 1 4

    1. Ejercicio 1

    1.1. Ejercicio 1.1

    Se uso que, en Rn se tiene que

    < u, v >=||u|| ||v|| cos()

    con el ngulo entre ambos vectores. De modo que nuestro programa calcula y entrega

    arc cos

    < u, v >

    ||u|| ||v||

    dados los vectores u y v. Para ello MATLAB tiene la funcin .acos()"para el arcoseno, dot(u,v) pa-

    ra el producto punto y "norm(u)"para las normas correspondientes. Esta adjunto el programa como

    Ejercicio1.m.

    1.2. Ejercicio 1.2

    MATLAB tiene la propiedad de que si ya tenemos definidos los vectoresu, vywdefinidos entonces

    podemos definir inmediatamente la matriz A con el siguiente cdigo:

    A= [uvw]

    donde la comilla significa "traspuesto". Luego para calcular el Kernell y el rando ocupamos rank(A)"funci

    de MATLAB que entrega la dimensin de la imagen de A, y "null(A)"que entrega, en una matriz, una base

    otronormal del subespacio generado por elKer(A). Sin embargo, en este casoAes de rango completo,y por ende elK er(A)es el subespacio trivial (Por nucleo imagen). El cdigo esta en . Ejercicio1.m"

    2. Ejercicio 2

    2.1. Ejercicio 2.1

    Para la matrizAB MATLAB enva el siguiente mensaje:

    1 Error using *2 Inner matrix dimensions

    3 must agree.

    Lo cual es lgico pues las dimensiones de ambas matrices no calzan. Lo mismo ocurre con BA.

    ParaAB t se entrega lo siguiente:

    1

    2 ans =

    3

    Informe #1 - Control ptimo

  • 7/25/2019 Control Optimo 1

    5/15

    2.2 Ejercicio 2.2 5

    4 NaN 7

    5 NaN 286 NaN 637 NaN 8

    Lo que ocurre es que NaN es una abreviacin para "not a number 2es un objeto que aparece en opera-

    ciones mal definidas, como resta de infinitos o sumar NaN con algn nmero. De ah que es esperable

    lo que entrega MATLAB.

    2.2. Ejercicio 2.2

    La inversa deEse puede calcular usando el comando inv() de MATLAB. Y su determinante puede

    ser calculado con el comando det().

    Sin embargo hay un problema con Ey es que su determinante es 0(Y por ende no invertible). Sinembargo MATLAB aun as calcula la nversa". Imagino que MATLAB ocupa algun tipo de heuristica o

    clculo para encontrar el determinante de la matriz y en este caso en particular su algoritmo se cae,

    o no calcula que este es exactamente 0, si no que un numero muy pequeo (del orden de 1015), asque calcula una matriz que es supuestamente la inversa. Pero la susodicha matriz no lo es, pues al

    postmultiplicarEporE1 el programa entrega algo nada que ver a una matriz identidad.La moraleja es que hay que tener cuidado con los errores computacionales.

    Se puede ver el cdigo en Ejercicio2.m.

    2.3. Ejercicio 2.3

    El cdigox = E\ b entrega un vectorx solucin deE x= b. Sin embargo,Ees singular de formaque este sistema no puede tener solucin nica. La sorpresa es que MATLAB an as entrega un vector

    solucin (Por la misma razn anterior) que sin embargo, al post multiplicarla por Eno entrega nada

    parecido ab.

    Esto se chequea en Ejercicio2.m.

    2.4. Ejercicio 2.4

    Es bueno notar que rcond().es un afuncin en matlab a la cual se le asigna una matriz y la funcin te

    devuelve un nmero entre 0 y 1, el cual significa cuan "peligroso. es usar esta matriz para calculos como

    los que vimos anteriormente (ie. que tan cerca esta la matriz numricamente de una matriz singular).

    En el programa (que se puede cheuqear en el archivo Ejercicio2.m) vimos que efectivamente el valor

    rcond(E) es menor que la precisin del computador (el eps) lo cual indica que es muy probable que la

    matriz sea singular a pesar de los clculos que haga el computador (lo cual es el caso).

    2.5. Ejercicio 2.5

    Para obtener los vecotres y los valores propios usamos eig() el cual, si se iguala a un arreglo de dos

    matricesm entrega en la primera matriz, la matriz de los vectores propios y en la segunda una matriz

    cuya diagonal corresponde a cada valor propio respectivo. El radio espectral se calcula sencillamente

    Informe #1 - Control ptimo

  • 7/25/2019 Control Optimo 1

    6/15

    2.6 Ejercicio 2.6 6

    tomando el elemento de la matriz diagonal (ie.valor propio) cuyo mdulo sea el mayor. Nuevamente se

    puede chequear esto en el archivo Ejercicio2.m.

    2.6. Ejercicio 2.6

    Para obtener la parte real solo usamos la funcin real( ) de MATLAB la cual recibe un arreglo y

    calcula la parte real del arreglo (en este caso los valores propios tenan valores reales).

    3. Ejercicio 3

    3.1. Ejercicio 3.1

    Lo que hicimos para encontrar la matriz deseada fue lo siguiente:

    1 D=A(:,2)*B(3,:);

    A(:

    ,2)significa exactamente la submatriz de

    Aque corresponde a su segunda columna. La primeraentrada restringe que indices de filas tomar (Cuando se colocan ":"significa que se toman todos los

    ndices) y la segunda entrada los ndices de las columnas (Y en este caso solo el dis puesto que esa es la

    columna deseada). Se puede deducir queB(3, :)corresponde a la tercera fila de la matrizB . Se puedechequear esto en el archivo Ejercicio3.m.

    3.2. Ejercicio 3.2

    Vamos en orden

    El primer comando entrega la submatriz que va de la segunda fila hasta la tercera fila, y de la

    primera columna hasta la tercera, de C.

    El siguiente entrega la matriz formada por la primer,segunda y tercera columna de C.C(:)entrega los elementos de la matriz Cen un vector.C([21], :)entrega la submatriz con la segunda y primera fila deC(en ese orden).El comando find(E > 0) me entrega la posicin de los trminos de la matriz Etales que son

    estrictamente positivos.

    4. Ejercicio 4

    4.1. Ejercicio 4.1Para ver como se definieron esas funciones en MATLAB se recomienda revisar el archivo Ejercicio4-

    12.m.

    En cuanto a la pregunta de si existe algo parecido en SciLab, lo mas cercano que se encuentra es

    usar el comando deff que creo una funcin temporal. Su uso se ilustra en el siguiente cdigo:

    Informe #1 - Control ptimo

  • 7/25/2019 Control Optimo 1

    7/15

    4.2 Ejercicio 4.2 7

    1 >deff('y=f(x)','y=x*x');f(2)2 ans =

    3

    4 4.

    4.2. Ejercicio 4.2Se adjunta el archivo Ejercicio4-12.m donde se hace lo pedido. Cabe mencionar que la mayor di-

    ferencia entre ezplot y plot es que el primero recibe la funcin y el intervalo y no hay que definir un

    reticulado antes, no as plot donde necesita dos vectores como entrada y por ende hay que hacer un

    reticulado antes de usarlo. Ezplot hace mas rpido el trabajo pero es inflexible, puesto que quiz yo

    podra necesitar un reticulado mas fino, mientras que plot es mas engorroso.

    4.3. Ejercicio 4.3

    Al realizar lo pedido el grfico resultante es el siguiente.

    En rojo esta la funcin escrita como un polinomio extendido (No factorizado) y en azul el que

    esta factorizado. Claramente no son el mismo grfico, y ms an, claramente el azul es mas preciso. La

    intuicin es que al ser un polinomio escrito de forma .extendida.el omputador debe realizar ms clculos,

    y por ende mayor cantidad de aproximaciones (debe cortar el string de nmeros en algn momento) y

    por ende el clculo resulta mas impreciso. NO as en el grfico azul donde debe realizar pocos clculos

    y as se equivoca menos.

    4.4. Ejercicio 4.4

    Se adjunta la funcin "funcinmatriz()"la cual realiza lo pedido y guarda los ndices en dos vecotres,

    uno llamado fil, para las filas, y col para las columnas.

    Informe #1 - Control ptimo

  • 7/25/2019 Control Optimo 1

    8/15

    5. Ejercicio 5 8

    5. Ejercicio 5

    El cdigo usado para generar la imgen es

    1 y=[16 22 21 8 10 13];

    2 x = [ 1 2 3 4 5 6 ] ;

    3 figure;

    4 a=plot(x,y,'ko');

    5 hold on

    6 xlabel('eje x');

    7 ylabel('eje y');

    8 title('titulo');

    9 b=plot(x,y,'k');

    10 legend('data 1','data 2');

    11

    12 o=[0.4 0.5];

    13 d=[0.55 0.6];

    14 annotation('textarrow',o,d,'String','linea');

    Vale la pena mencionar que annotation nos permite hacer ciertos arreglos al grfico desde elcdigo. El trmino textarrow genera una flecha con coordenadas definidas por los vectores o y d, y

    String crea un texto adjunto a la flecha.

    El grfico resultante es:

    Esto puede chequearse en el archivo Ejercicio5.m

    6. Ejercicio 6

    El cdigo utilizado fue

    1 load detail

    2 colormap(gray)

    3 X=[X fliplr(X)];

    4 X=[X ; flipud(X)];

    5 image(X);

    load detail me carga un apquete de MATLAB de donde poder sacar la imagen original (e por

    default se llama X, y es en realidad una matriz).

    colormap(gray) hace que la imagen se encuentre en escala de grises cuando se grafique.

    En la tercera lnea redefinimos la imagen X como un arreglo del deoble de largo, donde en una

    mitad se encuentra la imagen original, y en la segunda la misma imagen pero volteada horizontalmente(flipr(A) en realidad voltea horizontalmente los valores de la matriz A). En la cuarta lnea, tomamos el

    dibujo anterior y lo reflejamos hacia abajo. Para ello se redefini X como un arreglo donde la mitad

    superior corresponde a X, y la mitad inferior a un volteo vertical de X (Esto se hizo usando flipud, que

    voltea verticalmente los valores de una matriz).

    Informe #1 - Control ptimo

  • 7/25/2019 Control Optimo 1

    9/15

    7. Ejercicio 7 9

    El resultado fue el siguiente:

    Los resultados pueden ser checkeados en el archivo Ejercicio6.m

    7. Ejercicio 7

    7.1. Ejercicio 7.a

    Se adjunta la imagen correspondiente

    Esta se puede chequear en el archivo Ejercicio7.m con las respectivas acotaciones de este

    Informe #1 - Control ptimo

  • 7/25/2019 Control Optimo 1

    10/15

    7.2 Ejercicio 7.b 10

    7.2. Ejercicio 7.b

    Se adjunta la iamgen correspondiente

    Esto se puede chequear en el archivo Ejercicio7.m con sus respectivas acotaciones.

    8. Ejercicio 8

    8.1. Ejercicio 8.a

    Para solucionar la EDO, la sintaxis es como sigue.

    1 dsolve('Dx=(ab*x)*x','x(0)=x0')

    Donde dsolve recibe como primer parmetro la ecuacin diferencial, y en el segundo las condi-

    ciones iniciales. Luego MATLAB entrega la solucin general, que en este caso es:

    1 ans =

    2

    3 (a*(tanh((a*( t + ( 2*atanh((2*b*x0)/a 1))/a))/2) + 1))/(2*b)

    Esto se puede chequear en el archivo Ejercicio8.m.

    8.2. Ejercicio 8.bLa sintaxis para esta parte es

    1 dx=@(t,x)((0.70.01.*x).*x);2 [T Y] = ode45(dx,[0 10],[10 20 50 60 70 80 100]);

    Informe #1 - Control ptimo

  • 7/25/2019 Control Optimo 1

    11/15

    9. Ejercicio 9 11

    Donde en la primera lnea definimos (Con los parmetros correspondientes) la funcin que repre-

    senta a nuestra ecuacin diferencial. Luego usamos ode45, instancia que recibe como parmetros la

    funcin recin definida, el intervalo donde se mover el parmetro y n vector de condiciones iniciales.

    T es un vector que guarda la discretizacin del intervalo y Y guarda las soluciones en una columna por

    cada condicin inicial.

    Luego, graficando todo, el programa entrega esto:

    Todo se puede cheuqear en el archivo Ejercicio8.m.

    9. Ejercicio 9

    9.1. Ejercicio 9.aEsta es la sintaxis para resolver un problema como el propuesto mediante dsolve

    1 syms x(t) y(t);

    2

    3 eqn1= diff(x) == 3*x0.4*x^2 x*y;4 eqn2= diff(y) == y + 2*x*y;5

    6 dsolve(eqn1,eqn2)

    Pero al ingresarlo la consola enva el siguiente mensaje de error

    1 >> Ejercicio9a

    2 Warning: Explicit solution could not be found.

    3 > In dsolve at 194

    4 In Ejercicio9a at 6

    Informe #1 - Control ptimo

  • 7/25/2019 Control Optimo 1

    12/15

    9.2 Ejercicio 9.b 12

    dsolve esta hecho para encontrar soluciones analticas explcitas, por ende es de esperar que falle

    en muchos casos (Cmo este). En cambio, ode45 utiliza mtodos numricos para encontrar un grfico

    que muestre la solucin.

    9.2. Ejercicio 9.b

    Planteando el problema en ode45 el grfico es

    El cdigo se encuentra en el archivo ej9.m

    9.3. Ejercicio 9.c

    Se adjunta la imagen correspondiente

    Informe #1 - Control ptimo

  • 7/25/2019 Control Optimo 1

    13/15

    10. Ejercicio 10 13

    10. Ejercicio 10

    El cdigo que se us para resolver el PL fue

    1 f=[5 4 6]';

    2 A=[1 1 1 ; 3 2 4 ; 3 2 0 ] ;3 b=[20 42 30];

    4 lb=zeros(3,1);

    5 display('Usando LargeScale')

    6 [x,fval,exitflag,output,lambda]=linprog(f,A,b,[],[],lb)

    7 options=optimset('LargeScale','off');

    8 display('Usando MediumScale')9 [x,fval,exitflag,output,lambda]=linprog(f,A,b,[],[],lb,[],[],options)

    e entrega como valor ptimo (tanto con LargeScale como con MediumScale)

    f =78

    y se alcanza en el mismo punto en ambos casos

    xopt= (0, 15, 3)

    La nica diferencial sustancial es que MediumScale necesito menos iteraciones que LargeScale (Lo

    cual es ad-hoc ya que el problema es pequeo).

    Informe #1 - Control ptimo

  • 7/25/2019 Control Optimo 1

    14/15

    11. Ejercicio 11 14

    Sobre las posibilidades que presenta linprog est:

    1. Mostrar nmero de iteraciones

    2. Mostrar valor de multiplicadores de Lagrange

    3. Mostrar el valor de la variable exitflag, que indica si se realizaron demasiadas interaciones por

    ejemplo , o si el problema es no acotado y del estilo.

    11. Ejercicio 11

    Aqu hay algo importante que mecionar: Dado que encontramos que el problema planteado no era

    interesante (Pues es un cubo) decidimo sgeneralizarlo un poquito (Optimizando sobre un paraleleppe-

    do).

    Por ende la funcin objetivo a maximizar es

    f(a,b,c) =abc

    Cona, b, clados del paraleleppedo.

    Agregando restricciones el problema de optimizacin es

    maximizara,b,c

    abc

    s.a a+ 2b+ 2c 108

    . a, b, c 0

    Pero el programa fmincon resuelve solo problemas de minimizacin, por ende replanteamos el pro-

    blema anterior como

    minimizara,b,c abcs.a a+ 2b+ 2c 108

    . a, b, c 0

    La sintaxis para usar fmincon[] es muy parecida a la que se usa con linprog [] y se puede ver en el

    archivo Ejercicio11.m

    Corriendo el programa este muestra:

    1 >> fval

    2

    3 fval =

    4

    5 1.1664e+04

    6

    7 >> x

    8

    9 x =

    Informe #1 - Control ptimo

  • 7/25/2019 Control Optimo 1

    15/15