












Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Los mejores documentos en venta realizados por estudiantes que han terminado sus estudios
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Descubre las mejores universidades de tu país según los usuarios de Docsity
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Una introducción a los métodos numéricos de bisección y falsa posición para encontrar raíces de ecuaciones. Se explica el concepto de raíz de una ecuación, las técnicas para hallarlas y la evaluación de la confiabilidad de cada método. Se incluyen ejemplos prácticos con el uso de matlab para ilustrar la aplicación de los métodos en problemas de ingeniería.
Tipo: Monografías, Ensayos
1 / 20
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!
La raíz de una ecuación es aquel valor de la variable independiente que hace que el resultado de la ecuación sea cero o por lo menos se acerque a cero con una cierto grado de aproximación deseado (error máximo permitido).
Al terminar esta unidad de estudio, el estudiante estará en capacidad de:
Aprender el concepto de raíz de una ecuación Comprender las distintas técnicas usadas para hallar raíces de ecuaciones Evaluar la confiabilidad de cada método Estar en capacidad de elegir el mejor método para aplicarlo en la solución de problemas de ingeniería, relacionados con la búsqueda de raíces de una ecuación.
Su característica fundamental es que se elige un intervalo [a, b] dentro del cual se encuentre la raíz buscada. No hay una regla a seguir para la selección de este intervalo, sin embargo, se debe cumplir que en los extremos del intervalo la función
a la solución se logra al elaborar un modelo gráfico de la ecuación y a partir de él, por simple inspección, seleccionar el intervalo más adecuado.
Figura 1. Raíces en diferentes intervalos.
Si al evaluar la función, en los extremo del intervalo elegido, presenta igual signo puede no existir raíces o existir un número impar de ellas. Si la función cambia de signo esto nos indica que al menos hay una raíz en dicho intervalo. Los casos que requieren análisis especial se presentan cuando la función tiene puntos tangentes al eje x o cuando tiene discontinuidades.
a (^) b
f(x)
x a^ b
f(x)
x No hay raíces o existe un número par de ellas
a (^) b
f(x)
x
Existe un número impar de raíces
a (^) b
f(x)
x
Tangente al eje x
a (^) b
f(x)
x
alguno de los siguientes criterios:
r
r r- 1 X
error aceptado que se puede definir ya sea con base en el número de cifras
exceda el número máximo de iteraciones propuesto, en cuyo caso lo más probable es que la solución no esté convergiendo hacia un valor determinado (cada vez se aleja más del valor estimado), por lo tanto se debe probar con otra estrategia de solución o revisar muy bien lo cálculos matemáticos realizados para ver si no se están cometiendo errores en el proceso.
modelo gráfico de la ecuación y luego por inspección estimar una aproximación a la raíz.
El mayor inconveniente de éste método es su poca precisión y exactitud. Sin embargo, hoy día se cuenta con excelentes herramientas de software para realizar rápidamente gráficas con un alto grado de realismo. El primer problema a resolver es ¿que intervalo usar para construir la gráfica? No hay regla que nos diga como hacerlo, por eso lo mejor es probar con varios intervalos hasta encontrar el más adecuado, no obstante es importante considerar las características particulares del problema que vamos a resolver, ya que eso nos dará una idea del rango de posibles soluciones, por ejemplo si queremos hallar una magnitud física como velocidad, distancia, masa, etc., sabemos que no tiene sentido probar con valores negativos, por lo tanto podemos graficar rangos a partir de cero.
sabemos además que la primera función tiene período 2π, lo cual nos ayuda a limitar e intervalo a graficar.
Usando MatLab podemos graficar la primera función el intervalo [0, π] y la segunda en el intervalo [-4, 4], para obtener un modelo gráfico como el de la figura 2.
Por leyes de la física se sabe que para este tipo de movimiento la velocidad está dada
por: (^ ) (^1 )
t m
c e c
gm v t
− = − donde m es la masa del objeto que cae, c es el
aprox.).
métodos numéricos para hallar una aproximación satisfactoria. Reemplazando los valores conocidos obtenemos:
( 1 )
10 60
c e c
− = −
como:
( 1 ) 40
10 = −^60 −
− c e c
f c.
operaciones hasta que se logre obtener un valor cercano a cero en la ecuación y esa sería la solución buscada, método que probablemente nos tome mucho tiempo y cálculos matemáticos. Si elaboramos la gráfica con MatLab, obtenemos una respuesta
Figura 3. Raíz aproximada de f(c) usando el método gráfico.
El archivo .m de MatLab que permite obtener esta gráfica es: clc clear all c=0.1:.01:15;
f=9.81.60./c .(1 - exp(-c.10/60))-40; plot(c,f) grid title ('f=9.81.60./c .(1 - exp(-c.10/60))-40')
No siempre la gráfica realizada con el MatLab, es la representación real de la función, esto depende le incremento que usemos para representar los valores de la variable independiente, de la resolución de la pantalla que usemos para visualizar la gráfica, del intervalo a considerar, etc. En MatLab, podemos delimitar la región que va a ser usada para trazar la gráfica y esto nos permite visualizar mejor la imagen. Veamos el siguiente ejemplo:
El siguiente guión escrito en MatLab, permite obtener la anterior figura:
x=0:0.01:20; y = cos(x).cosh(x)+1; plot(x,y) grid subplot(1,2,1) plot(x,y) grid subplot(1,2,2) plot(x,y) AXIS([0,20,-20,20]) GRID subplot(1,2,1) TITLE('Y = cos(x)cosh(x)+1') subplot(1,2,2) TITLE('Y = cos(x)*cosh(x)+1, usando el comando AXIS([0,20,-20,20])')
La gráfica de la izquierda difiere de la de la derecha, esto se debe a que el comando AXIS permite ajustar los valores mínimo y máximo de las coordenadas x e y para
sale de esos límites, se cortan, lo cual de una imagen mas cercana a la realidad. Si se
al paso 3.
Si f(x) < Tol ó ≤ Tol r
r r- 1 X
proceso se detiene.
está convergiendo. Se debe parar el proceso.
El siguiente programa codificado en MatLab, permite calcular raíces de ecuaciones por el método de bisección y corresponde al diagrama de flujo de la figura 5. En la parte final del programa se cambia la ecuación que se desea procesar. El programa se
% Programa para calcular raices de ecuaciones basado en el metodo de biseccion %autor: Ing. Edgar Romero Rodríguez %Docente Fundación Universitaria de San Gil, UISANGIL %San Gil, Santander – Colombia. Enero de 2004
function biseccion clc; clear; a=input('Valor de la cota inferior: '); b=input('Valor de la cota superior: '); TOL=input('Tolerancia de error : '); max_iter=input('Numero de iteracciones: '); iter = 0; fprintf('\nMETODO DE BISECCION...\nRESULTADOS\n') fprintf('Iter a Xr b f(a) f(xr) Error\n'); while 1 %Inicio un cliclo infinito del cual salgo al hallar la raíz o exceder max_iter xr=(b+a)/2; %Aproximo el valor de la posible raíz como el punto medio del intervalo. fa = funcion(a); %Evaluamos la función en la cota inferior fb = funcion(b); %evaluamos la función en la cota superior fxr= funcion(xr); %Evaluamos la función en la posible raíz error = abs((b - a)/a);
% Impresion de resultados en cada iteración fprintf('%4.0f,%10.6f,%10.6f,%10.6f,%10.6f,%10.6f,%12.6f\n',iter,a,xr,b,fa,fxr,error) if error <= TOL %Si supero el error aceptado detengo el proceso fprintf('Proceso concluido exitosamente con el nivel de error <= %10.6f\n\n',TOL) break; end if abs(fxr)<=TOL %Se hallo la aproximación a la raíz y salgo del ciclo infinito fprintf('\nProceso concluido exitosamente con el nivel de error <= %12.6e\n\n',TOL) break; end if fa*fxr < 0 b=xr; %La raiz esta en el primer intervalo else a=xr; %La raiz esta en el segundo intervalo end if (iter > max_iter) %Verifico si se excede el numero de iteracciones fprintf('\nNumero de iteracciones excedido...\n\n') break; end iter=iter+1; %Incremento el numero de iteracciones end fprintf('Raiz aproximada: %12.6f',xr); fprintf(' Iteraciones : %5.0f\n',iter); % Modelo gráfico x=CotaInf:0.01:CotaSup; f=funcion(x); plot(x,f) gris
function y=funcion(x) %A continuación debo colocar la función a evaluar y=cos(x); % fin del programa
significativas obtenemos:
Valor de la cota inferior : 1 Valor de la cota superior: 2 Tolerancia de error : 5e- Numero de iteraciones : 25
METODO DE BISECCION... RESULTADOS Iter a Xr b f(a) f(xr) Error 0, 1.000000, 1.500000, 2.000000, 0.540302, 0.070737, 0. 1, 1.500000, 1.750000, 2.000000, 0.070737, -0.178246, 0. 2, 1.500000, 1.625000, 1.750000, 0.070737, -0.054177, 0.
Figura 5. Diagrama de flujo para el algoritmo del método de Bisección.
En este método en cada iteración el intervalo se divide en dos, por lo tanto en n iteraciones se ha dividido el intervalo en 2 n^ partes. Si deseamos obtener un
Inicio
a, b, Tol, MaxIter MaxIter
Xr = (a + b) / 2 Iter = Iter + 1
fa = f(a) fb = f(b) fxr = f(Xr)
a = Xr fxr * fa < 0 (^) b = Xr
Error = |(b - a)/b|
Raíz: Xr
Iter = 0 Xa = 0
Fin
“No converge”
Error < Tol OR |fxr| < Tol
Iter >M>MaxIter
a Xr b
f(b)
f(a)
Xr- a
b- a
iteraciones realizar. (^) an n
b a E 2
= donde Ea n es el error aproximado en la iteración n.
Aplicando logaritmos podemos despejar n y obtenemos: Log ( 2 )
E
b a Log n
n a^
− = que será
el número de iteraciones necesarias para obtener la respuesta aproximada con el nivel de error deseado.
La aproximación a la raíz se toma como la intersección de la línea que une los puntos (a,f(a)) y (b,f(b)) con el eje X. Por semejanza de triángulos se puede expresar:
de donde podemos derivar la
fórmula:
El algoritmo para hallar raíces es entonces en esencia el mismo planteado para el método de bisección, pero reemplazando la fórmula para calcular la aproximación a la
%Programa para calcular raíces de ecuaciones, basado en el algoritmo de Falsa %Posición %Autor: Ing. Edgar Romero Rodríguez %Docente fundación Universiraria UNISANGIL %San Gil,Santander - Colombia. Enero de 2004
function FalsaPosicion clc; clear all; a=input('Valor de la cota inferior: '); b=input('Valor de la cota superior: '); TOL=input('Tolerancia de error : '); max_iter=input('Numero de iteracciones: '); %Modelo gráfico x=a:0.01:b; f=funcion(x); plot(x,x,x,f); grid; title ('Grafica de la función en el intervalo dado');
(^1) Ver demostración completa en el libro de métodos numéricos de Chapra y P. Canale, página 142.
Figura 6. Modelo gráfico.
Evaluamos la función en los extremos del intervalo:
f(1) = -7 y f(2) = 16 (la función cambia de signo en el intervalo)
Calculamos la posible raíz:
Xr = 2 – 16*(1 – 2)/(-7 – 16) = 1,
Evaluamos:
f(Xr)=1,30434782609³ + 21,30434782609² + 101,30434782609 - 20 = -1,
En este punto no tenemos aun datos para evaluar el error relativo pero podemos
siguiente iteración.
Segunda iteración:
Verificamos en que subintervalo queda la nueva aproximación de la raíz. Para ello
variamos la cota inferior pasándola a Xr, el nuevo intervalo a procesar es [1,30434782609, 2].
Evaluamos f(1,30434782609) = -1,33475795, f(2) = 16
Calculamos la posible raíz:
Xr = 2 – 16*(-1,33475795 – 2)/( -1,33475795 - 16) = 1,
Evaluamos la función en la nueva raíz: f(1,35791230466) = -0,
Calculamos el error como la diferencia entre las dos últimas iteraciones:
Error = Abs(-1,33475795184 - -0,22913572959) = 0,
nueva iteración.
Los cálculos de las siguientes se realizaron con ayuda de la hoja electrónica y sus resultados se muestran a continuación:
Iter a b f(a) f(b) Xr f(xr) Error 1 1 2 -7 16 1,30434782609 -1, 2 1,30434783 2 -1,33475795 16 1,35791230466 -0,22913572959 0, 3 1,3579123 2 -0,22913573 16 1,36697780482 -0,03859187678 0, 4 1,3669778 2 -0,03859188 16 1,36850097560 -0,00647872815 0, 5 1,36850098 2 -0,00647873 16 1,36875657901 -0,00108704283 0, 6 1,36875658 2 -0,00108704 16 1,36879946288 -0,00018237436 0, 7 1,36879946 2 -0,00018237 16 1,36880665748 -0,00003059668 0, 8 1,36880666 2 -3,0597E-05 16 1,36880786450 -0,00000513315 0, 9 1,36880786 2 -5,1331E-06 16 1,36880806700 -0,00000086118 0, 10 1,36880807 2 -8,6118E-07 16 1,36880810097 -0,00000014448 0, 11 1,3688081 2 -1,4448E-07 16 1,36880810667 -0,00000002424 0, 12 1,36880811 2 -2,4239E-08 16 1,36880810763 -0,00000000407 0, 13 1,36880811 2 -4,0665E-09 16 1,36880810779 -0,00000000068 0, 14 1,36880811 2 -6,8223E-10 16 1,36880810782^ -0,00000000011 0,
En la iteración 14 vemos como se alcanza la tolerancia de error deseada y por lo tanto
siguientes resultados:
Valor de la cota inferior: 1 Valor de la cota superior: 2 Tolerancia de error : 5e- Numero de iteracciones: 50
METODO DE FALSA POSICION...
Iter a Xr b f(a) f(xr) f(b) Error 0, 1.000000, 1.304348, 2.000000, -7.000000, -1.334758, 16.000000, 1.3348e+ 1, 1.304348, 1.357912, 2.000000, -1.334758, -0.229136, 16.000000, 2.2914e- 2, 1.357912, 1.366978, 2.000000, -0.229136, -0.038592, 16.000000, 3.8592e- 3, 1.366978, 1.368501, 2.000000, -0.038592, -0.006479, 16.000000, 6.4787e- 4, 1.368501, 1.368757, 2.000000, -0.006479, -0.001087, 16.000000, 1.0870e- 5, 1.368757, 1.368799, 2.000000, -0.001087, -0.000182, 16.000000, 1.8237e- 6, 1.368799, 1.368807, 2.000000, -0.000182, -0.000031, 16.000000, 3.0597e- 7, 1.368807, 1.368808, 2.000000, -0.000031, -0.000005, 16.000000, 5.1331e- 8, 1.368808, 1.368808, 2.000000, -0.000005, -0.000001, 16.000000, 8.6118e- 9, 1.368808, 1.368808, 2.000000, -0.000001, -0.000000, 16.000000, 1.4448e- 10, 1.368808, 1.368808, 2.000000, -0.000000, -0.000000, 16.000000, 2.4239e- 11, 1.368808, 1.368808, 2.000000, -0.000000, -0.000000, 16.000000, 4.0665e- 12, 1.368808, 1.368808, 2.000000, -0.000000, -0.000000, 16.000000, 6.8223e-
a. Guardar el valor de la aproximación anterior (Xa = Xr). b. Calcular una nueva aproximación: Xr = g(Xa) c. Incrementar el número de iteraciones (Iter = Iter + 1) d. Si Xr ≠ 0 entonces calcular: Error = |Xr – Xa| / Xr.
f. Si Iter > MaxIter entonces Imprimir mensaje de error de que el proceso fallo y parar. g. Volver al paso 7.
Ejemplo:
Usando MatLab podemos ver la solución al elaborar la gráfica de X y de g(x) respectivamente así:
Inicio
Iter = 0, Xr = Xo
Iter = Iter + 1 Xa = Xr Xr = g(Xa)
Xr ≠ 0 Xl = Xr Error = |Xr – Xa| / Xr
Error < TOL
V
V Iter > IMax
F
Fin
Xr
Iteraciones excedidas
Xo, Tol, MaxIter
V
F
Definimos:
Primera iteración:
Xr = g(Xo) = ( 0² + exp(0) -2)/3 = -0,
Evaluamos el error como el error relativo entre las dos aproximaciones:
Er = Abs((-0.3333333333 - 0)/-0.333333) = 1,
El valor es mayor que el error máximo aceptado, por lo tanto continuamos el proceso.
Segunda iteración:
Calculamos la nueva aproximación como el valor de g(x) en la aproximación anterior:
Xr = g(-0,33333333) = -0,
Evaluamos el error como el error relativo entre las dos aproximaciones:
Er = Abs((-0,39078586 -0.3333333333)/ -0,39078586) = 0,17235757832.
Es mayor que el error máximo aceptado, por lo tanto continuamos el proceso.
Algoritmo:
h. Guardar el valor de la aproximación anterior (Xa = Xr). i. Calcular una nueva aproximación: Xr = Xa – f(Xa) / f’(Xa) j. Incrementar el número de iteraciones (Iter = Iter + 1) k. Si Xr ≠ 0 entonces calcular: Error = |Xr – Xa| / Xr. l. Si Error < Tol entonces Imprimir Xr como aproximación de la raíz y parar. m. Si Iter > MaxIter entonces Imprimir mensaje de error de que el proceso fallo y parar. n. Volver al paso 6.
Surge como una variación del método de Newton. Usando el concepto de diferencia dividida para evaluar la derivada de la función con base en los dos valores anteriores de modo que la nueva aproximación puede calcularse como:
1 2 1 − −
− − −
i i
i i i i
En este caso para iniciar el proceso se requiere de dos aproximaciones iniciales pero no necesariamente deben ser un intervalo que incluya la raíz, incluso la segunda aproximación se pude calcular como Xi-1+∆x siendo ∆x un valor pequeño como 0.01.
Ejemplo: Halla la primera raíz positiva de la ecuación de Leonardo de Piza:
Aproximación inicial: X 0 =1 y X 1 = 1.01. Tol = 5E-11.
Evalúo la función en la aproximación inicial: f(1) = -7 y f(1.01) = -6.82949. Calculo la aproximación a la raíz: X 2 =-7 – (1.01 - 1)/(-7 -6.82949) = 1.
Evalúo el error: Ea=|1.41055478 – 1.01|/1.41055478 = 0.283969.
Como el valor del error es mayor que Tol, se continúa el proceso.
Evalúo la función en la nueva aproximación: f(1.4105549)=0. Calculo la aproximación a la raíz: X 3 =1.41055478 – (1.41055478 - 1.01)/( -6.82949 - 0.89140848) = 1,
Evaluación del error: Ea=|1,35867554 - 1.41055478|/1,35867554 = 0.03818.
Como el valor del error es mayor que Tol, se continúa el proceso.
Evalúo la función en la nueva aproximación: f(1,35867554)=-0. Calculo la aproximación a la raíz: X 4 =1.41055478 – (1.41055478 - 1.01)/( -6.82949 - 0.89140848) = 1,
Evaluación del error: Ea=|1,368686 - 1,35867554|/1,368686= 0.007314.
Como el valor del error es mayor que Tol, se continúa el proceso.
De esa misma manera se continúa el proceso hasta lograr el error tolerado. Los resultados se muestran en la siguiente tabla.
Iter Xi-2 Xi-1 Xi F(Xi-1) f(Xi-2) F(Xi) Error 1 1 1,01 1,41055478 -6,829499 -7 0,89140848 0, 2 1,01 1,41055478 1,35867554 0,89140848 -6,829499 0,30566022 0, 3 1,41055478 1,35867554 1,36868616 -0,21313213 0,89140848 -0,10267875 0, 4 1,35867554 1,36868616 1,36880847 -0,00257259 -0,21313213 -0,00121553 0, 5 1,36868616 1,36880847 1,36880811 7,5552E-06 -0,00257259 3,5812E-06 0, 6 1,36880847 1,36880811 1,36880811 -2,667E-10 7,5552E-06 -1,2642E-10 0,
En la sexta iteración se alcanza el nivel de error deseado por lo tanto se detiene el proceso y se toma como valor de la raíz aproximada de 1.3688011.