APROXIMACIN GRFICA PARA RESOLVER ejemplo de ello es la grfica siguiente, que se ha obtenido por el...

download APROXIMACIN GRFICA PARA RESOLVER ejemplo de ello es la grfica siguiente, que se ha obtenido por el comando: colormap(hot(5)) Se aprecia que los colores utilizados son exactamente 5:

of 18

  • date post

    16-Feb-2018
  • Category

    Documents

  • view

    212
  • download

    0

Embed Size (px)

Transcript of APROXIMACIN GRFICA PARA RESOLVER ejemplo de ello es la grfica siguiente, que se ha obtenido por el...

  • APROXIMACIN GRFICA PARA RESOLVER DESIGUALDADES.

    Jose Luis Rodrguez Rey Lus Miguel Gonzlez Barcia

  • En este DEMO se explica como resolver una desigualdad. En este caso la pregunta es la siguiente:

    -Qu es mayor, e o e?

    Es cierto que podemos resolver en matlab esto numricamente, incluso con una calculadora, pero veremos como hacer una resolucin grfica para este problema.

    En primer lugar vamos a definir la superficie, y para ello determinamos las caractersticas de la malla para la superficie con dos vectores x e y del siguiente modo:

    x=0:0.16:5;

    y=0:0.16:5;

    Este comando nos dar dos vectores con componentes entre 0 y 5, espaciadas 0.16 unidades, pero podemos poner otros ejemplos al azar:

    x=1:0.4:6;

    y=1:0.4:6;

    Este es otro ejemplo. Debemos notar que si el valor es menor de 0.16, la malla ser mas fina que la que veremos cuando dibujemos la superficie.

    Definiremos la malla haciendo una combinacin para que todo punto de x se corresponda con uno de y, y esto lo hacemos con el comando meshgrid.

    [xx,yy]=meshgrid(x,y);

    Este comando nos devuelve una matriz xx que coloca en cada fila el vector x, y en un vector yy cuyas columnas contienen el vector y. Ademas debemos notar que la matriz es cuadrada, de orden 32x32.

    Ahora definiremos la funcin z como xy-yx.

  • Utilizaremos para ello el comando surf:

    zz=xx.^yy-yy.^xx;

    h=surf(x,y,zz);

    Y con ello obtenemos la grfica de la funcin con el tamao de malla definido previamente.

    Ahora podemos poner en prctica los comandos aprendidos para modificar la grfica, as como poder aadir titulo a los ejes, cambiarla de color, etc.

    set(h,'EdgeColor',[0.7 0.7 0.7]);

    Este comando nos permite combinar diferentes propiedades del grfico, en este caso se ha seleccionado el color de la malla. Los nmeros colocados entre corchetes indican la proporcin en formato RGB, esto es,

  • en cantidad de color rojo, verde y azul. El valor puede ser de 1 como mximo y 0 como mnimo. Esta proporcin de colores nos dar un gris claro, la grfica, queda as en consecuencia.

    Notamos que en efecto, la malla nos ha cambiado a color gris. El objeto h que aparece en el comando corresponde a que cuando definimos la grfica, denominamos con la letra h a la superficie de la grfica.

    El comando view que usaremos a continuacin nos permite girar la grfica para verla desde diferentes puntos de vista:

    view(20,50);

    El primer nmero nos indica el ngulo (en grados) de rotacin en torno al eje z o eje vertical, mientras que el segundo nmero implica el ngulo (en grados) de elevacin respecto al plano xy. En el esquema siguiente se ilustra mejor como funciona:

  • La vista de la grfica nos queda as tras aplicar el comando view:

  • Podemos tanto en el caso del color de la malla como en el ngulo de visin, hacer diferentes variantes, y obtenemos grficas muy variables cambiando solamente uno de los parmetros.

    El prximo comando para modificar las propiedades de la superficie, consiste en cambiar directamente el color de la superficie, este comando se denomina colormap, y nos ofrece una gran variedad de tonos que podemos aplicar a la grfica:

    En este caso, la gama de colores que se ha elegido es la de HSV:

    colormap(hsv);

    Con este comando, la grfica nos queda con este tono:

  • Pero no es esta la nica gama de colores que podemos aplicar, en la tabla anterior aparecen algunas posibilidades, pero hay ms.

    Otra opcin posible es colocar el color de la grfica con el formato RGB, pero el problema de usar este comando es que las desviaciones del plano, es decir, las zonas que en esta grfica estn en color azul oscuro, morado, verde y amarillo, apareceran del mismo color y no se apreciara igual de bien el desnivel.

    Una variante para modificar el color es aplicar el comando de una manera diferente. Podemos seleccionar el nmero de colores que queremos que aparezcan en la grfica, pero si seleccionamos un nmero bajo, no se apreciara bien el desnivel. Un ejemplo de ello es la grfica siguiente, que se ha obtenido por el comando:

    colormap(hot(5))

  • Se aprecia que los colores utilizados son exactamente 5: un amarillo claro, un amarillo algo mas oscuro, rojo, un color crema y blanco, si colocsemos otro nmero en el parntesis, el nmero de colores que pongamos, pero tampoco podemos excedernos, ya que podemos ver que es lo que sucede si ponemos un nmero muy elevado:

    colormap(hot(50000))

  • Podemos utilizar el comando colormap(hot) para comprobar los colores que salen, y vemos que son los mismos, es decir, que Matlab tiene un lmite de colores, y a partir de ah no se aaden ms.

    Como hemos notado ya, la grfica aparece coloreada por colores diferentes, que podemos modificar a nuestro gusto. Cada color representa una altura diferente.

    Para poder saber a que altura corresponde cada uno de los colores, Matlab nos permite colocar junto a la grfica una barra que nos indica los colores con su altura, y el comando ser colorbar. Si lo aplicamos a la grfica, nos quedar as:

  • Una vez hemos coloreado la grfica, podremos etiquetar los ejes que la forman, para ello utilizaremos los comandos xlabel e ylabel. Adems, podemos tambin colocar un ttulo a la grfica con el comando title.

    De este modo escribimos:

    title('z=x^y-y^x'); xlabel('x'); ylabel('y');

    Esto nos etiquetara la grfica con el titulo z=x^y-y^x, y los ejes x e y con las letras correspondientes.

  • Debemos notar en la imagen que el eje z no esta etiquetado, pero podemos etiquetarlo como a los otros dos con el comando zlabel, nos queda la grfica con la etiqueta de z en el eje vertical.

    Con esto terminamos la personalizacin de la grfica. Por supuesto no es necesario el uso de estos comandos para resolver el problema inicial. De todos modos la grfica puede ser modificada en la propia ventana en la que aparece.

    Ahora calcularemos una matriz que contenga las curvas de nivel de esta superficie, para ello, el comando utilizado se denomina contourc. Este comando guarda los vectores de las curvas de nivel en una matriz. Llamamos a esta matriz c.

    Definimos las variables que van a determinar las curvas de nivel en torno a los 2 ejes, y se define el tamao, y adems, los puntos que van a pasar por ellos.

    Lo siguiente en esta prctica es definir una constante, que se llamar list1Len, y la definimos del siguiente modo:

  • list1Len=c(2,1)

    Este comando nos proporciona el valor de la primera columna y de la segunda fila de la matriz c que hemos definido anteriormente.

    Definiremos las lneas que trazaremos posteriormente para la resolucin del problema inicial. Lo hacemos as:

    xcontour=[c(1,2:1+list1Len) NaN c(1,3+list1Len:size(c,2))],ycontour=[c(2,2:1+list1Len) NaN c(2,3+list1Len:size(c,2))],

    El NaN que aparece en este comando implica lo siguiente:

    -Primero hemos de tener en cuenta que definir xContour sin el NaN, nos devolvera una matriz que se puede dividir en 2: por un lado c(1,2:1+list1Len), y pegada a la derecha c(1,3+list1Len:size(c,2)).

    NaN se conoce como abreviatura de not a number. Esto, trata a las dos matrices que componen xContour e yContour de forma separada, y aunque nos devuelva una sola matriz, matlab tratar posteriormente las matrices de contorno por separado. Consideramos que al final, en vez de tener dos matrices, es como si tuviramos cuatro matrices

    Ahora que tenemos definidas las variables de contorno en los vectores xContour e yContour, representaremos en la grfica actual. Debemos tener precaucin, ya que si la representamos inmediatamente, perderemos la grfica que tenemos en este momento. Para poder colocar el nuevo trazado en la misma grfica, lo que hacemos es utilizar el comando hold on de modo que el trazado que vamos a hacer aparecer superpuesto a nuestra grfica.

    El trazado se realiza con el comando line:

    line(xcontour, ycontour,'color','k');

    El comando en la forma general es line(x,y), donde x es el vector xContour e y es el vector yContour. Si se ha realizado correctamente, la grfica que obtendremos ser la siguiente.

  • En este caso, al utilizar el comando line, hemos aadido un apartado que en principio parece no haber hecho nada. Por el nombre se deduce fcilmente que lo que se ha cambiado es el color, y la k implica color negro, procedente del ingles dark. No se utiliza b de black ya que la b se utiliza para azul (blue). Otros colores utilizados son el g de verde (green), r de rojo (red) y y de amarillo (yellow).

    En la siguiente tabla se muestra una serie de abreviaturas que maneja matlab para definir los parmetros de modificacin en el comando line:

  • Tambin podemos utilizar el comando RGB que ya hemos visto como se aplica, para elegir un color personalizado.

    El comando line nos permite ademas, elegir un ancho de lnea. Para ello introduciremos en los parmetros el comando LineWidth, seguido de un nmero que representa el ancho de la lnea. Por ejemplo, si colocamos el siguiente comando:

    line(xContour,yContour,'LineWidth',4,'Color',[.8 .8 .8]);

    la grfica que obtenemos es la siguiente:

  • Esta representacin muestra las soluciones enteras a la ecuacin planteada (xy yx=0). La nica solucin entera que tenemos para un x aproximadamente igual que y es 24 = 42 ..Dnde tenemos entonces la interseccin que nos defina la ecuacin (xy yx=0).

    Ahora representaremos una serie de puntos en las lneas dibujadas, para ello utilizaremos el comando plot:

    plot([0:5 2 4],[0:5 4 2],'r.','MarkerSize',25);

    Este comando nos representar unos marcadores (cuyo color y tamao vienen dados por el parmetro r, que ya sabemos que corresponde al color rojo, y el parmetro 25, que nos indica el tamao del marcador.

    NOTA: debemos tener en cuenta