matlab

44
Matlab, Método de Bisección para Raices de Ecuaciones 10 ABRIL, 2013 / JULIO CÉSAR [RECUERDA, EN ESTA PÁGINA EL CÓDIGO SE ENCUENTRA AL FINAL PARA SU DESCARGA] Una de los usos mas importares en la aplicación de los métodos numéricos es el de hallar las raíces de ecuaciones o también llamados ceros de las funciones, ya sean funciones lineales o no lineales, como siempre, los métodos numéricos son usados en las ocasiones donde lo que necesitamos no requiere de la precisión exacta como cuando se hallan dichos valores analíticamente, es decir con papel y lápiz y hacer ciertos despejes, en algunos casos esto resulta trivial, pero en otros, no resulta tan fácil, y si se hicieran de forma simbólica, el costo computacional no permitiría que fuera para nada optimo, es aquí donde entran nuestros métodos numéricos a salvar nuestros diseños o cualquier trabajo que con base a esos datos estemos desarrollando. Existe gran variedad de métodos para hallar dichas raíces de ecuaciones, algunos son originales, otros tantos son derivaciones de estos, o corrigen falencias presentadas por los originales, haciéndolos mas óptimos tanto

Upload: edwincito-sa

Post on 07-Nov-2015

4 views

Category:

Documents


2 download

DESCRIPTION

trabajo

TRANSCRIPT

Matlab, Mtodo de Biseccin para Raices deEcuaciones10 ABRIL, 2013/JULIO CSAR[RECUERDA, EN ESTA PGINA EL CDIGO SE ENCUENTRA AL FINAL PARA SU DESCARGA]Una de los usos masimportaresen la aplicacin de los mtodos numricos es el de hallar lasracesde ecuaciones otambinllamadosceros de las funciones, ya sean funciones lineales o no lineales, como siempre, los mtodos numricos son usados en las ocasiones donde lo que necesitamos no requiere de la precisin exacta como cuando se hallan dichos valores analticamente, es decir con papel y lpiz y hacer ciertos despejes, en algunos casos esto resulta trivial, pero en otros, no resulta tan fcil, y si se hicieran de forma simblica, el costo computacional no permitira que fuera para nada optimo, es aqu donde entran nuestros mtodos numricos a salvar nuestros diseos o cualquier trabajo que con base a esos datos estemos desarrollando.Existe gran variedad de mtodos para hallar dichasracesde ecuaciones, algunos son originales, otros tantos son derivaciones de estos, o corrigen falencias presentadas por los originales,hacindolosmasptimostanto computacionalmente hablando como ms precisos en sus resultados.En esta vez ser de nuestrointersel desarrollo de un tipo demtodos, conocidos como mtodos de intervalo partiendo del hecho que un intervalo,matemticamentehablando es el conjunto que estacomprendidoentre dos valores.Los mtodos de intervalo, sacan ventaja del hecho que unafuncinnormalmente cambia de signo en la vecindad de unarazcomo se ve en lafigura 1.

cambio de signo en la vecindad de una raz.En lafigura 1se puede apreciar lo anteriormente dicho, donde en un intervalo comprendido entre XL (lower) y XU (upper) lafuncincambia de signo al cortar el eje x, es estasituacinen particular la que aprovechan los mtodos de intervalo.El algoritmo de la biseccin es muy bsico y consta de los siguientes pasos:1. Escoger las estimaciones iniciales XL y Xu es decir, el intervalo, de tal forma que se cumpla que:

2. Realizar unadivisindel intervalo que corresponder a un estimado de la raz:

3. Realizar las siguientes evaluaciones paradeterminarel intervalo en el cual esta la raz: Si f(XL)*f(Xr)0 la raz se encuentra en el intervalo superior, entonces XL=Xr, y se retorna al paso 2. Sif(XL)*f(Xr)=0 la raz es igual a Xr (muy poco probable), se terminan las iteraciones.Cdigo en Matlab.En nuestro caso, inicialmente podemos hacer una representacin grfica de la funcin para que se vea con mayor claridad el intervalo apropiado para iniciar las iteraciones. (para ver la imagen mejor, dar clic sobre ella).

Seguidamente de lavisualizacinde la respectivagrficade lafuncin, se pretende que el usuario ingrese los limites: ya sea que la funcin reciba estos como parmetros o de la siguiente forma dentro de la funcin:

Debido a la posibilidad que el usuario ingrese un intervalo no apropiado, es decir un intervalo donde no se cumpla que lafuncincambia de signo, es bueno enviar un mensaje de advertencia, avisando que el intervalo no es valido, esto lo hemos hecho de la siguiente forma: (para visualizar mejor la imagen darle clic).

Finalmente seinicia el mtodo de biseccin, con un ciclo, un umbral de error que ya hemos definido previamente de 0.000001% y con las respectivas sentencias condicionales (if)para cada uno de los 3 posibles casos: (dar clic en la imagen para ver mejor).

Cabe aclarar que para el correcto llamado de la funcin, debe de ser previamente definida una variable simblica X con el comando SYMS de Matlab, y posteriormente escribir la funcin Y correspondiente, para pasarla como parmetro a la funcin biseccion(Y) como ilustra la siguiente imagen.

Finalmente,despusde laejecucindelcdigo lafuncinde Matlab llamada biseccin, nos retorna una variable con el respectivo valor aproximado de la raz, con una precisin del 0.000001% de error.El mtodo de biseccin en particular sirve para encontrar unarazsimple en unafuncinfcilde evaluar, pero debido a que principalmente los mtodos numricos son usados para ecuaciones que no son tan fciles de evaluar, las funciones programadas requieren de bastantes lineas de cdigo y se deben evaluar muchas veces para ir cambiando los lmites para finalmenteencontrarla raz, este mtodo ya no es tan efectivo. Debido a factores de este tipo, es muy importante que los algoritmos numricos hagan lo msmnimoposible el nmero de evaluaciones de la funcin. Es por esto que el mtodo de biseccin se hace ineficiente, ya que la funcin debe ser evaluada en cada ciclo.Elcdigorespectivo del programa mostrado en lasimgenesanteriores, puede ser descargadoaqupuedes comentar las preguntas que tengas con respecto a este cdigo.

METODO DE BISECCION Y NEWTON-RAPSHON ENMATLABApril 8, 2014Leave a commentEn el siguiente articulo se precentaran los siguientes metodos, el de biseccion y el de newton-rapshon, estos son metodos para encontrar las raices de polinomios, son procesos muy largos y repetitivos segun la complejidad del polinomio, por lo tanto se planteara la solucion de estos metodos atraves de un programa en matlab.Todo lo que se vera en el articulo fue desarrolla y comprobado en matlab 2008.ObjetivoEl usuario debe ser capaz de desarrollar un programa en matlab el cual encuentre de manera correcta las raices de diferentes polinomios utilizando los metodos de biseccion o de newton-rapshon.Metodo de BiseccionEl Mtodo de Biseccion se basa en la bsqueda incremental donde el intervalo se divide siempre en dos. Si la funcin previamente planteada cambia de signo sobre un intervalo, se evala el valor de la funcin en el punto medio de este intervalo. La posicin de la raz se determina situndola en el punto medio del subintervalo dentro del cual ocurre un cambi de signo. El proceso se repite hasta obtener una mejor aproximacin.Los 2 teoremas que dan origen al metodo de biseccion son los siguientes;-Teorema de Bolzano:Sea f : [a; b] C IR > IR una funcin continua en [a; b] tal que f(a) f(b)< 0, esdecir, que tiene distinto signo en a y en b. Entonces, existe c 2 (a; b) tal que f(c) = 0.-Teorema de valor intermedio:Sea f : [a; b] C IR > IR continua en [a; b], y tal que f(a) < 0;5f(x3) = -0;0206x3 = 0;5 x2 = 1f(x3) = -0;0206 f(x2) = 0;8415x4 =(x3 + x2)/2= 0;75 > < 0;25f(x4) = 0;4316x3 = 0;5 x4 = 0;75f(x3) = -0;0206 f(x4) = 0;4316x5 =(x3 + x4)/2= 0;625 > < 0;125f(x5) = 0;2101x3 = 0;5 x5 = 0;625f(x3) = -0;0206 f(x5) = 0;2101x6 =(x3 + x5)/2= 0;5625 > < 0;0625f(x6) = 0;0958x3 = 0;5 x6 = 0;5625f(x3) = -0;0206 f(x6) = 0;0958x7 = (x3 + x6)/2= 0;53125 > < 0;03125f(x7) = 0;0379Hemos encontrado que 0;53125 0;03125 es solucin de la ecuacin y por tanto ser elpunto de corte de las dos funciones dadas.Metodo de biseccion, solucion en Matlab.A continuacion se explicara paso a paso el como programar matlab para dar solucion a una funcion, polinomio o ecuacion.para comenzar abriremos matlab, como ya se mencion anteriormente todo lo realizado en este articulo se lleva acabo en matlab version 7.6.0 2008.nuestra zona de trabajo sera la Ventana de comandos (command windows)

Todo nuestro trabajo se llevara acabo en nuestra ventada de comando, en esta introduciremos el siguiente codigo como se muestra en la imagen; (codigo)

Una ves finalizada la introduccion de los datos en la ventana de comando daremos un enter para que comience a correr el programa;

Una ves iniciado el programa procederemos a introducir los datos que se nos solicitan;

Una ves introducidos estos datos daremos un enter para obtener los resultados, la solucion de esta funcion segun los parametros indicado atraves del metodo de biseccion s la siguiente;

Utilizaremos el siguiente comando para graficar la solucion y comprobar la respuesta.x= [-5 : 0.1 : 10]y = -0.4.*X.^2 + 2.2.*X + 4.7plot (x,y)

El siguiente ejemplo se realizara de forma que el programa nos indique que no existe raiz dentro de este intervalo.

Algoritmo del metodo de Biseccion.1- Iniciar programa.2-Introducir la funcion (polinomio).3-Introducir limite inferior.4- Introducir limite Superior.5- Introducir porcentaje de error.6- El programa multiplica los limites y espera que sean menores a cero.7- El programa calcula la primera aproximacion de la raiz.8- Se determina en que sub-intervalo se encuentra la raiz.9- Si el producto de los limites es menor que cero volver al paso 7.10- Si el producto de los limites es mayor que cero volver al paso 3.11- Si el producto de los limites es igual a cero la raiz se a encontrado.12- Imprimir resultados.13-Fin.Diagrama de flujo, Metodo de biseccion

Metodo de Newton-RapshonEl mtodo de Newton-Raphson es un mtodo iterativo que nos permite las raicesde una ecuacin, funcion o polinomio. Secon estimacin inicial de la solucin x0 y construimos unasucesin de aproximaciones siguiendo la formula del metodo;xj+1 = xj (f(xj)/f(xj))Ejemplo;-El polinomo de ejemplo es el siguiente;f(x) = (e^x) (1/x).Expresamos la ecuacin, funcion o polinomio en la formaf(x)=0, e identicamosf.Calculamos la derivada: f0(x) = (e^x) +(1/x^2)Utilizamos la formula del metodo: xj+1 = xj [{ (e^xj) (1/xj)}/{(e^xj) + (1/x^2)}]Tomamos una estimacin inicial de la solucin. En este caso podemostomar por ejemplo x0 = 1.0, y calculamos las siguientes aproximaciones. Desde el punto de vista prctico, si deseamos aproximar lasolucin con 6 decimales, podemos detener los clculos cuando dosaproximaciones consecutivas coincidan hasta el decimal 8. En nuestrocaso, obtendramos:x0 = 1.0.x1 = 1[{ (e^1) (1/1)}/{(e^1) + (1/1^2)}]= 0.53788284.x2 = x1 [{ (e^x1) (1/x1)}/{(e^x1) + (1/x1^2)}]0.56627701x3 = 0.56714 258.x4 = 0.56714 329.x5 = 0.56714 329.Podemos, entonces, tomar como solucin x = 0.567143.Metodo de Newton-Rapshon, solucion en Matlab.A continuacion se mostrara como resolver una funcion, polinomio o ecuacion por el metodo de newton-rapshon utilizando matlab;Ubicamos la ventana de comando;

una ves que ubicamos la ventana de comando introduciremos el siguiente codigo como se muestra en la imagen;(codigo)

Una ves introducido el codigo daremos un enter para que comience a correr el programa, y comensaremos a introducir los datos que se nos van pidiendo;

Una ves obtenidos los resultados procederemos a graficar al igual que con el metododo de biseccion con los siguientes comendos;x= [0 : 0.1 : 5]y = -0.9.*X.^2 + 1.7.*X + 2.5plot (x,y)

Algoritmo del metodo de Newton-Rapshon.1- Iniciar.2- Introducir la funcion, ecuacion o polinomio.3- Introducir la derivada de la funcion.4- Introducir el valor de X0.5-introducir el error limite.6- Analizar si el error aprox. es mayor que el error limite.7- Calcular raiz mejorada.8- Calcular error aprox.9- Si el error aprox. es mayor regresar al paso 6, sino continuar.10- Imprimir resultados.11- Fin.Diagrama de flujo del metodo de Newton-Rapshon.

https://blogdelingeniero1.wordpress.com/2013/04/10/matlab-metodo-de-biseccion-para-raices-de-ecuaciones/comment-page-1/

https://nolorodriguez.wordpress.com/2014/04/08/metodo-de-biseccion-y-newton-rapshon-en-matlab/

Programacion en Matlabd: Mtodo de la biseccinPublicado porOier(3 intervenciones) el 15/02/2012 22:01:54Buenas, he creado un script para aplicar el mtodo de la biseccin. El cdigo que he creado slo sirve para la funcin almacenada en la function f. Lo que quiero hacer es que el usuario pueda introducir cualquier funcin f y el programa lo calcule, pero no s como hacer este paso. El cdigo que he creado es ste:1234567891011121314151617181920clearformat short;a=input('Introduzca el valor de a');b=input('Introduzca el valor de b');cont=input('Introduzca el nmero de iteraciones');for k=1:1:contc=(a+b)/2;e=abs((b-a)/2);A(k,:)=[k a b c f(c) e];

METODO BISECCION EN MATLAB2/07/2011CODIGOS TAZ18 COMENTARIOSEste es el codigo del Metodo de Biseccion en Matlab para hallar raices de una funcionAqui les va elcodigo:%Metodo de Biseccion - Metodos Numericos Matlabclc;Fx=input('Ingrese la funcion: ','s');a=input('Ingrese a : ');c=input('Ingrese c : ');e=input('Ingrese el error : ');

x=a;Fa=eval(Fx);x=c;Fc=eval(Fx);fprintf('\n %6s %7s %8s %10s %8s %8s %8s \n ','A','B','C','F(a)','F(b)','F(c)','|c-a|');while abs(c-a)>e b=(a+c)/2; x=b; Fb=eval(Fx); fprintf('\n %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f \n',a,b,c,Fa,Fb,Fc,abs(c-a)); if Fa*Fb