Ir al contenido principal

2.1 Métodos de intervalos: Gráficos, Bisección y falsa posición


2.1 Métodos de intervalos: Gráficos, Bisección y falsa posición.






El problema de obtener las soluciones o raíces de una ecuación algebraica o trascendente de la forma F(x)=0 se representa frecuentemente dentro el campo de la ingenierá.
Se puede definir a la raíz de una ecuación como el valor de x que hace a f(x) = 0.

Asi, que un método simple para obtener a la raíz de la ecuación f(x)=0, consiste en graficar la función y observar donde cruza el eje x. Por eso estos tipos de métodos, son llamados "Métodos Graficos"

Debido a ello, el desarrollo de métodos que nos permiten solucionarlo es amplio; en esta unidad presentamos algunos para determinar las raíces reales o complejas de ecuaciones de este tipo, tales como:

Método de Bisección o Bolzano

El método de la bisección o también llamado Método de Bolzano, parte de una funcion F(x) y un intervalo [x1,x2] tal que F(x1) y F(x2) tienen signos contrarios. Si la función es continua en este intervalo, entonces existe una raíz de F(x) entre x1 y x2.
Una vez determinado el intervalo [x1,x2] y asegura lacontinuidad de la función en dicho intervalo, se valúa ésta en el punto madion xm del intervalo:






Si F(xm) y F(x1) tiene signos contrarios, se reducirá el intervalo de x1 a xm, ya que dentro de estos valores se encuentra la raíz buscada. Al repetir este proceso, hasta lograr que la diferencia entre los dos últimos valores de xm sea menor que una tolerancia prefijada, el último valor xm será una buena aproximación de la raíz.

Pasos:
Elija valores iniciales inferior x1, y superior de x2, que encierren a la raíz, de forma que la función cambien el signo en el intervalo. Esto se verifica comprobando que f(x1) f(x2)<0
Una aproximación de la raíz, se determina mediante: Xr= x1 + x2 / 2
Realice las siguiente evaluaciones para determinar en que subintervlo ésta la raíz:
Si f(x1) f(Xr)<0, entonces la raíz se encuentra dentro del subintervalo inferior o izquierdo. Por tanto, haga X2 = Xr y vuelva al paso 2.
Si f(x1) f(Xr)>0, entonces la raíz se encuentra dentro del subintervalo superior o derecho. Por tanto, haga X1 = Xr y vuelva al paso 2.
Si f(x1) f(Xr) =0, entonces la raíz se igual a Xr; y termina el cálculo. 
Resultado de imagen para falsa posición










Método de la Falsa Posición

Aun cuando la bisección es una técnica perfectamente válida para determinar raíces, su método de aproximación por "fuerza bruta" es relativamente ineficiente. La falsa posición es una alternativa basada en una visualización gráfica.
Un inconveneiente del método de bisección es que al dividir el intervalo de x1 a xu en mitades iguales, no se toman en cuenta las magnitudes de f(x1) y f(xu). Por ejemplo, si f(x1) está mucho más cercana a cero quef(xu), es lógico que la raíz se encuentre más cerca de x1 que de xu. Un método alternaticvo que aprovecha esta visualización gráfica consiste en unir f(x1) y f(xu) con una línea recta. La intersección de esta línea con el eje de las x representa un mejor aproximación de la raíz. El hecho de que se reemplace la curva por una línea recta de una "falsa posición" de la raíz; de aquí el nombre de método de la falsa posición, o en latín,regula falsi. También se le conoce como método de interpolación lineal.



Usando triángulos semejantes, la intersección de la línea recta con el eje de las x se estima mediante:



Multiplicando en cruz la ecuación anterior obtenemos:



Agrupando términos y reordenando:



Dividiendo entre



Esta es una de las formas del método de la falsa posición. Esta puede ponerse en una forma alternativa al separa los términos:



sumando y restando xu en el lado derecho:



Agrupando términos se obtiene:




o:



Esta es la fórmula de la falsa posición. El valor de xr calculado con la ecuación reemplazará, después, a cualquiera de los dos valores iniciales, xl o xu, y da un valor de la función con el mismo signo de f(xr). De esta manera, los valores xl y xu siempre encierran la verdadera raíz. El proceso se repite hasta que la aproximación a la raíz sea adecuada.

Bisección

Datos de Entrada 
Intervalo con raíz
Error absoluto (tolerancia de error)
Numero de iteraciones (Calculado a partir del error absoluto)

Este método parte de un intervalo donde debe haber un cambio de signo en los extremos al evaluar la función. Este cambio implica que la función corta el eje x y por ende en dicho intervalo existe una raíz de la función (siempre y cuando esta sea continua). Se debe aclarar que este método es el más lento pero tiene la particularidad que siempre es convergente. 

El algoritmo empieza dividiendo el intervalo a la mitad, esto genera dos sub-intervalos, el algoritmo debe evaluar nuevamente en cuál de los dos subintervalos se cumple el cambio de signo al evaluar la función. De esta forma es posible desechar uno de los dos subintervalos, al subintervalo restante se le aplica el mismo procedimiento. 
Al realizar este proceso varias veces se obtendrá cada vez un intervalo más ajustado. El proceso finaliza cuando el tamaño del intervalo resultante es tal que el error absolutodefinido por el usuario es mayor o igual a este. Por lo tanto la raíz puede aproximarse como el punto medio de este ultimo intervalo.   
Pseudocodigo Biseccón
Datos de entrada:
a, b, función, error absoluto máximo
Datos de Salida:
Raíz, numero iteraciones
Lea: f,  a, b, tol,
n= redondeararriba(log((b-a)/tol)/log(2))
Si  f(a)= 0
Muestre ‘a es raíz’
Sino si f(b)= 0
Muestre ‘b es raíz’
Si no  si f(a)*f(b)<0
x=(a+b)/2
fx=f(x)
i=1
error=tol+1
mientras i<=n y fx~=0 y error>tol haga
si f(a)*f(x)<0
b=x
sino
a=x
fin si
aux=x
x=(a+b)/2
error=abs(x-aux)
fx=f(x)
i=i+1
fin mientras
si f(x)=0
muestre ‘La raíz es x’
sino si error<tol
Muestre ‘x es una aproximación a la raíz con un error máximo de tol’
sino
Muestre ‘Fracaso en n iteraciones.’
Fin si
Fin si
 Codigo Matlab/Octave
Se debe crear un archivo .m llamado biseccion y copiar y pegar el siguiente codigo
function biseccion
    f=input('Ingrese la funcion: ','s');
    f=inline(f);
    a=input('Ingrese el limite inferior: ');
    b=input('Ingrese el limite superior: ');
    tol=input('Ingrese el error admisible: ');
    n=ceil(log((b-a)/tol)/log(2));
   
    if f(a)==0
        fprintf('\n La raíz es: %1.10f \n',a)
    else if f(b)==0
        fprintf('\n La raíz es: %1.10f \n',b)
        else if f(a)*f(b)<0
                fprintf('\n n  a         b         x             f(x)            \n')   
                x=(a+b)/2;
                fx=f(x);
                i=1;
                error=tol+1;
            while i<=n && fx~=0 && error>tol              
                fprintf('%3.0f %10.10f %10.10f %10.10f %10.10f \n',i,a,b,x,f(x))               
                if f(a)*f(x)<0
                    b=x;                   
                    else
                    a=x;
                end
                aux=x;
                x=(a+b)/2;
                error=abs(x-aux);
                fx=f(x);
                i=i+1;
            end

            if f(x)==0
                fprintf('\n La raíz es: %1.10f \n',x)
            else if error<tol
                fprintf('\n %1.10f es una aproximacion a la raiz con un error maximo de %1.10f \n',x,tol)
               
                else
                fprintf('\n Fracaso en %0.0f iteraciones.\n',n)
                end
            end
            else
                disp('El intervalo es inadecuado.')
            end
        end
    end
end


Pseudocodigo Regla Falsa

Datos de entrada:
a, b, función, error absoluto máximo
Datos de Salida:
Raíz, numero iteraciones
Lea: f,  a, b, tol,
n= redondeararriba(log((b-a)/tol)/log(2))
Si  f(a)= 0
Muestre ‘a es raíz’
Sino si f(b)= 0
Muestre ‘b es raíz’
Si no  si f(a)*f(b)<0
x a-((f(a)*(b-a))/(f(b)-f(a)))
fx=f(x);
i=1;
error=tol+1;
mientras i<=n y fx~=0 y error>tol haga
si f(a)*f(x)<0
b=x
sino
a=x
fin si
aux=x
x=(a+b)/2
error=abs(x-aux)
fx=f(x)
i=i+1
fin mientras
si f(x)=0
muestre ‘La raíz es x’
sino si error<tol
Muestre ‘x es una aproximación a la raíz con un error máximo de tol’
sino
Muestre ‘Fracaso en n iteraciones.’
Fin si
Fin si
Fin si


Codigo Matlab/octave

Se debe crear un archivo .m llamado reglafalsa y copiar y pegar el siguiente codigo

function reglafalsa

f=input('Ingrese la funcion: ','s');
    f=inline(f);
    a=input('Ingrese el limite inferior: ');
    b=input('Ingrese el limite superior: ');
    tol=input('Ingrese el error admisible: ');
    n=input('ingrese el numero de iteraciones: ');
   
    if f(a)==0
        fprintf('\n La raíz es: %1.10f \n',a)
    else if f(b)==0
        fprintf('\n La raíz es: %1.10f \n',b)

        else if f(a)*f(b)<0
                fprintf('\n n  a         b         x             f(x)            \n')   
                x=a-((f(a)*(b-a))/(f(b)-f(a)));
                fx=f(x);
                i=1;
                error=tol+1;
            while i<=n && fx~=0 && error>tol              
                fprintf('%3.0f %10.10f %10.10f %10.10f %10.10f \n',i,a,b,x,f(x))     
                % la instrucción %10.10f significa dejar 10 espacios y colocar el número con 10 decimales       
                if f(a)*f(x)<0
                    b=x;                   
                    else
                    a=x;
                end
                aux=x;
                x=a-((f(a)*(b-a))/(f(b)-f(a)));
                error=abs(x-aux);
                fx=f(x);
                i=i+1;
            end

            if f(x)==0
                fprintf('\n La raíz es: %1.10f \n',x)
            else if error<tol
                fprintf('\n %1.10f es una aproximacion a la raiz con un error maximo de %1.10f \n',x,tol)
               
                else
                fprintf('\nFracaso en %0.0f iteraciones.\n',n)
                end
            end
            else
                disp('El intervalo es inadecuado.')
            end
        end
    end
end

Comentarios

Entradas populares de este blog

6.3 Métodos de pasos múltiples

6.3 Métodos de pasos múltiples Los métodos de un paso descritos en las secciones anteriores utilizan información en un solo punto xi para predecir un valor de la variable dependiente yi+1 en un punto futuro xi+1. Procedimientos alternativos, llamados métodos multipaso, se basan en el conocimiento de que una vez empezado el cálculo, se tiene información valiosa de los puntos anteriores y esta a nuestra disposición. La curvatura de las líneas que conectan esos valores previos proporciona información con respecto a la trayectoria de la solución. Los métodos multipaso que exploraremos aprovechan esta información para resolver las EDO. Antes de describir las versiones de orden superior, presentaremos un método simple de segundo orden que sirve para demostrar las características generales de los procedimientos multipaso. Observe la ecuación ec. 2  alcanza ) a expensas de emplear un tamaño de paso mas grande, 2h. Además, ob

6.2 Métodos de un paso: Método de Euler, Método de Euler mejorado y Método de Runge-Kutta

6.2 Métodos de un paso: Método de Euler, Método de Euler mejorado y Método de Runge-Kutta   Método de Euler El método de Euler es un procedimiento de integración numérica para resolver ecuaciones diferenciales ordinarias a partir de un valor inicial dado. El método de Euler es el más simple de los métodos numéricos para resolver un problema del siguiente tipo: Consiste en multiplicar los intervalos que van de x0 a xf en n subintervalos de ancho h; Osea: de manera que se obtiene un conjunto discreto de n+1 puntos: x0, x1, x2, ... , xn del intervalo de interés [x0,xf]. Para cualquiera de estos puntos de cumple que:  0<i<n. La condición inicial y(x0)=y0, representa el punto P0=(x0,y0) por donde pasa la curva solución de la ecuación del plantamiento inicial, la cual se denotará cmo F(x)=y. Ya teniendo el punto P0 se puede evaluar la primera derivada de F(x) en ese punto; por lo tanto: Con esta información se traza una recta, aquella que pasa por

6.1 Fundamentos de Ecuaciones Diferenciales

UNIDAD 6 ECUACIONES DIFERENCIALES ORDINARIAS 6.1 Fundamentos de Ecuaciones Diferenciales Una  ecuación diferencial  es una  ecuación  en la que intervienen  derivadas  de una o más funciones desconocidas. Dependiendo del número de variables independientes respecto de las que se deriva, las ecuaciones diferenciales se dividen en Ecuaciones diferenciales ordinarias : aquellas que contienen derivadas respecto a una sola variable independiente. Ecuaciones en derivadas parciales : aquellas que contienen derivadas respecto a dos o más variables. Una ecuación diferencial es una ecuación que incluye expresiones o términos que involucran a una función matemática incógnita y sus derivadas. Algunos ejemplos de ecuaciones diferenciales son: es una ecuación diferencial ordinaria, donde   representa una función no especificada de la variable independiente  , es decir,  ,   es la derivada de   con respecto a  . La expresión es una ecuación en derivadas pa