Ejemplo Práctica 7

download Ejemplo Práctica 7

of 22

description

practica 7

Transcript of Ejemplo Práctica 7

  • Objetivo. Familiarizar al alumno con la aplicacin de matlab en la determinacin de races de funciones y polinomios mediante los mtodos de biseccin y Newton-Raphson utilizando GUIDE, haciendo el programa ms amigable y presentable. Introduccin. El presente trabajo contiene el desarrollo de dos programas, en el primero de ellos se utiliza el mtodo de biseccin para calcular la raz de una funcin y en el segundo se da la opcin de calcular la raz utilizando Newton-Raphson o Newton-Raphson mejorado. A continuacin se muestran los fundamentos tericos de dichos mtodos. Biseccin. Al aplicar las tcnicas graficas se observa que f(x) cambia de signo a ambos lados de la raz.

    En general si f(x) es real y continua en el intervalo que va desde xl hasta xu y f(xl) y f(xu) tienen signos opuestos, es decir,

    Entonces hay al menos una raz entre xl y xu. Paso 1. Elija valores iniciales inferior, xl y superior, xu que encierren la raiz, da forma que la funcion cambie de signo en el intervalo. Esto se verifica comprobando que:

    Paso 2. Una aproximacion de la raiz x, se determina mediante.

    Paso 3. Realice las siguientes evaluaciones para determinar en que subintervalo esta la raz.

  • a) Si f(xl)f(xr)0, entonces la raz se encuentra dentro del subintervalo superior o derecho, por lo tanto haga xl=xr y vuelva al paso 2.

    c) Si f(xl)f(xr)=0 la raz es igual a xrl termina el clculo. Newton-Raphson Si el valor inicial para la raz es xi se puede trazar una tangente desde el punto (xi,f(xi)) de la curva. Por lo comn, el punto donde esta tangente cruza al eje representa una aproximacin mejorada de la raz.

    La formula de Newton-Raphson es:

    Newton-Raphson mejorado. Este mtodo fue sugerido por Ralston y Rabinowits, consiste en definir una nueva funcin u(x), que es el cociente de la funcin original.

    La ecuacin anterior se sustituye en la ecuacin original de Newton-Raphson.

  • u(x) se deriva con respecto a x.

    Se sustituye u(x) y u`(x) en la ecuacin de Newton-Raphson. La formula es:

  • Mtodo de biseccin. Requerimientos. Se requiere crear un programa con el que sea posible calcular las races de una funcin aplicando el mtodo de Biseccin. Para ello se debern introducir la funcin, el lmite inferior, el lmite superior y la tolerancia de error. Este programa se creara utilizando la ventana guide. El programa debe graficar la funcin. Algoritmo.

    1. Pedir al usuario la funcin. 2. Pedir al usuario el lmite inferior del intervalo. 3. Pedir al usuario el lmite superior del intervalo. 4. Pedir al usuario el porcentaje de error. 5. Calcular el producto del lmite inferior por el superior y verificar que el producto

    sea menor que cero. 6. Calcular la primera aproximacin de la raz. 7. Determinar en que subintervalo se encuentra la raz. 8. Si f(xl)f(xr)0, hacer xl=xr y volver al paso 2. 10. Si f(xl)f(xr)=0 la raz es igual a xrl 11. Imprimir el resultado 12. Graficar funcin 13. Fin

  • Diagrama de flujo. No Si Si No Si

    Inicio

    f, a, b, t

    i= 1 ea(1)=100

    f(xai).f(xbi=tol

    fxa(i).fxr(i)0

    1

    2 Raz(r) Grafica

    Fin

  • 1

    xa(i+1)=xr(i) xb(i+1)=xb(i)

    xr(i+1)=(xa(i+1)+xb(i+1))/2 ea(i+1) = (( xr(i+1)-xr(i+1)/(xr(i+1))*100

    i=i+ 1

    2

  • Metodo Newton-Raphson/Newton-Raphson mejorado Requerimientos. Crear un programa en la ventana guide que permita calcular la raiz de una funcin, en el cual se pueda elegir si se desea resolver con el mtodo de Newton-Raphson o Newton-Raphson mejorado. Se requiere la funcin, valor inicial del intervalo y tolerancia. El programa debe graficar la funcin. Algoritmo.

    1. Inicio 2. Pedir al usuario la funcin a la cual se le calculara la raz. 3. Pedir al usuario el valor inicial del intervalo. 4. Pedir al usuario el porcentaje de error. 5. Usuario deber seleccionar el mtodo con el que desea calcular la raz, ya sea

    Newton-Raphson o Newton-Raphson mejorado. 6. Los valores de entrada se guardaran en el programa. 7. El programa calculara la primera derivada, la segunda derivada 8. Dependiendo del caso que el usuario haya elegido el programa calculara la raz

    de la funcin, y graficara la funcin desde un intervalo a otro, en el cual se muestre la raz.

    9. Los clculos se hacen hasta que el error aproximado sea menor que el error limite, y se imprime la raz que cumpla con este requisito.

    10. Fin

  • Diagrama de flujo. 2 3 Si Si

    Inicio

    f, xi, Es

    df=derivada de f ddf=segunda derivada i=1 Ea(1)=100 xi1=xi

    xi1= xi -(fxi/dfxi) Ea=abs((xi1-xi)/(xi1)*100) xi=xi1

    xi1= xi -((fxi*dfxi)/((dfxi)^2-fxi*ddfxi)) Ea=abs(((xi1-xi)/xi1)*100) xi=xi1;

    Ea>=Es

    Ea>=Es

    raz (h), grafica

    Fin

    fxi=f(xi) dfxi=df(xi)

    fxi=f(xi) dfxi=df(xi)

    ddfxi=ddf(xi)

  • Desarrollo de la prctica. Esta practica tiene gran relacin con la practica 6, ya que seguimos trabajando con los mtodos para calcular la raz de una ecuacin, Biseccin y Newton-Raphson, solo que haremos algunos cambios a los dos programas, ya que utilizaremos la ventana guide para darle mayor presentacin a nuestro programa, esta ventana se haba utilizado anteriormente, tambin es conocida como la interfaz. Mtodo biseccin. Lo primero que se hizo fue abrir el programa matlab y una ventana guide, la cual se puede encontrar en la barra superior de tareas de matlab.

    Aparece la siguiente ventana, en la cual podremos disear nuestra interfaz, agregando cuadro de textos, botones, o grficos segn sea necesario.

  • En la interfaz se agregaron 3 paneles, 4 cuadros de texto, 3 cuadros estticos de texto, 1 botn y 1 cuadro para graficar.

    Para identificar cada uno de los elementos de la interfaz en el cdigo fuente, es necesario conocer el nombre de cada uno de ellos. Para darle nombre a los elementos se debe de dar click en ellos, y dirigirse a property inspector, en la parte de tag se coloca el nombre. A continuacin indico el nombre que se le dio a cada elemento y para que nos servirn. Los paneles nos sirven para dar una mejor imagen de la interfaz, dentro de ellos podemos colocar varios elementos, de esa manera si queremos moverlos podremos hacerlo al mismo tiempo sin tener que mover de uno por uno. Se colocaron Static text que solamente nos sirven para indicarle al usuario que dato de entrada deben ingresar en los Edit text, otros dos Static text nos sirven para imprimir el resultado y un mensaje de advertencia. El botn nos sirve para que cuando se hayan proporcionado los datos de entrada se de click en el y el programa comience a calcular, por ello el cdigo fuente se programara en ese botn.El cuadro axes nos mostrara la grafica de la funcin ingresada. Nombre Elemento Funcin funcin Edit text Entrada (funcin) liminf Edit text Entrada(limite inferior) limsup Edit text Entrada(limite superior) tolerancia Edit text Entrada(tolerancia) raz Static text Salida(raz) advertir Static text Salida(mensaje) calcular Push button Calcula (raz) grafica Axes Grafica (funcin)

  • Para programar el cdigo se da click en el botn calcular y despus en view callback y callback.

    El cdigo que se tecleo fue el siguiente.

  • La opcin get nos permite obtener un valor desde un elemento de la interfaz, la opcin set nos permite desplegar un valor en un elemento. fplot sirve para graficar, srt2num para pasar de cadena de caracteres a numrico y num2srt para pasar de numrico a cadena de caracteres. Ejemplos. a) Utilice el mtodo grafico para determinar el coeficiente de arrastre e necesario para que un paracaidista de masa m= 68.1 kg tenga una velocidad de 40 m/s despus de una caida libre de t=10s. Nota la aceleracin de la gravedad es 9.8 m/s. Solucin: Este problema se resuelve determinando la raz de la siguiente ecuacin, usando los parmetros t= 10, g =9.8, v=40 y m=68.1

    Para insertar la funcin en la ventana de comandos de matlab es recomendable que se sustituyan los valores conocidos en la funcin. De este modo tendremos como nica incgnita a C. Solucin en ventana guide.

  • b) Determine las races reales de f(x)= -0.4x2 + 2.2x + 4.7 emplee como valores iniciales xl=5 y xu=10. Solucin en la ventana guide.

  • Mtodo Newton-Raphson/Newton-Raphson mejorado Para hacer el programa de Newton-Rapshon se abri una nueva ventana guide.

    Aparece la siguiente ventana sin ningn elemento.

    La interfaz que se creo quedo de la siguiente manera:

  • Se colocaron 4 paneles, 4 edit text, 4 static text y 1 axes. Para identificar cada elemento de la interfaz y poder utilizarlos en el cdigo del programa, se debe conocer el nombre de cada uno de ellos. Para darle nombre a los elementos se da click en ellos, y en property inspector, se coloca en la parte de tag el nombre. A continuacin se indica el nombre de cada elemento y para que sirven. Nombre Elemento Funcin funcin Edit text Entrada(funcin) xini Edit text Entrada(valor inicial) tolerancia Edit text Entrada(tolerancia) seleccionar Pop-up Menu Elegir(normal o mejorado) raz Edit text Salida(raiz) grafica Axes Imprimir(grafica de funcion) advertir Static text Salida(mensaje) Para programar el cdigo se da click en seleccionar, despus view callback, y callback.

  • El cdigo del programa es el siguiente:

  • Ejemplos.

    d) Determinar la raiz de f(x)= -0.9x2 + 1.7x +2.5 usando xo=5. Efectu el clculo hasta que Ea sea menor que Es=0.01%

    Solucin en ventana de matlab usando Newton-Raphson.

  • Solucin en ventana de matlab usando Newton-Raphson mejorado.

  • e) Determinar la raz de f(x)= -2 + 6x -4x2 + 0.5x3, usando valores iniciales de 4.2 y 4.43.

    Solucin en ventana de matlab usando Newton-Raphson.

  • Solucin en ventana de matlab usando Newton-Raphson mejorado.

  • Conclusin Durante esta prctica desarrollamos dos programas, en el primero utilizamos el mtodo de biseccin y en el segundo Newton-Raphson y Newton Raphson mejorado. Para darle una mejor presentacin al programa utilizamos la ventana GUIDE, en ella colocamos los elementos necesarios para la programacin. Al momento de declarar una entrada en el programa utilizamos el comando get, que nos permite obtener el valor escrito en un elemento, por ejemplo en un edit text. Utilizamos tambin el comando inline el cual construye una funcin, el comando str2num o str2double nos convierten una cadena de caracteres a un valor numrico y el comando feval nos permite evaluar una funcin con un valor de x. La programacin del mtodo de biseccin fue casi igual que el cdigo que utilizamos en la practica 6, pero hicimos algunas modificaciones como usar get en lugar de input para obtener los datos de entrada, adems solo se imprime la raz que cumple con la tolerancia y no todas las calculadas durante el bucle de repeticin. La programacin del mtodo de Newton-Raphson cambio un poco ms, ya que el usuario puede seleccionar el mtodo con el que quiere calcular la raz, puede ser Newton-Raphson normal o el Newton-Raphson mejorado. Esta seleccin se lleva a cabo en un pop up men. Para que el programa reconozca el caso que se est seleccionando se debe declarar una variable que obtenga el valor de la posicin en la que el usuario coloco el cursor. Por ejemplo v=get(handles.seleccionar,'value'); y despus se coloca switch v. En ambos programas para imprimir la raz de la funcin se usa el comando set que nos permite desplegar un valor en un elemento, por ejemplo en un static text. Para graficar la funcin se utiliza el comando fplot nos sirve para graficar la funcin en un axes. Esta prctica me pareci muy completa ya que utilizamos varios comandos que nos permiten dar solucin a problemas ms complejos.