Métodos Numéricos Raíces de Funciones By Luis E Brito Copyright 2016 - 2017
RaĂces de Funciones
Luis E Brito
3
Copyright Š 2016 by Luis E Brito All rights reserved. This book or any portion thereof may not be reproduced or used in any manner whatsoever without the express written permission of the publisher except for the use of brief quotations in a book review.
Contenido Otros Libros Publicados por Luis E Brito Introducción Capítulo 1 - Raíces de funciones y Métodos Capítulo 2 - Métodos Cerrados Capítulo 3 - Métodos Abiertos Acerca del Autor
Raíces de Funciones
Luis E Brito
Otros Libros Publicados por Luis E Brito VBA Excel Guía Esencial
Amazon US https://www.amazon.com/dp/B01M8K5120 Amazon México 0
https://www.amazon.com.mx/dp/B01M8K512
5
VBA Excel Modelo de Objetos
Amazon US https://www.amazon.com/dp/B01M674D09 Amazon México 9
https://www.amazon.com.mx/dp/B01M674D0
Raíces de Funciones
Luis E Brito
7
VBA Excel UserForms
Amazon US https://www.amazon.com/dp/B01N63S43C Amazon México https://www.amazon.com.mx/dp/B01N63S43C
Introducción Encontrar las raíces de una función, es una poderosa herramienta para la solución de problemas que se presentan en ciencia e ingeniería. Es muy común que en el análisis de problemas se desarrollen ecuaciones que requieran que se encuentren los valores de la variable independiente que hacen que las ecuaciones se cumplan. Las aplicaciones son muchas, entre ellas podemos citar las ecuaciones que se generan de la aplicación de balance de energía, balance de materia, balance de fuerzas, circuitos eléctricos, y en general cualquier problema donde se genere una ecuación requerirá de algún método para hallar las raíces de las funciones asociadas a esas ecuaciones. Existen diferentes métodos para encontrar las raíces de las funciones, entre ellas tenemos el método gráfico, los métodos analíticos, los métodos algebraicos y los métodos numéricos. Los métodos analíticos pueden ser utilizados para funciones algebraicas sencillas, existiendo
Raíces de Funciones
Luis E Brito
9
soluciones muy simples para funciones polinómicas de grado 1 (recta), grado 2 (ecuación cuadrática), también existe una solución analítica para funciones de tercer grado (cubicas), aunque la solución es un poco más compleja. Las soluciones que existen para polinomios de mayor orden no son de carácter general y son muy complejas para su aplicación práctica. Para funciones trascendentales no existen soluciones analíticas. Para ayudar a resolver el problema de encontrar las raíces de funciones, que no tienen una solución analítica, o cuya solución analítica es muy compleja se pueden utilizar varios métodos numéricos. En los métodos numéricos se utilizan diferentes algoritmos, que buscan a través de un número de iteraciones lograr una convergencia a un valor cercano a la raíz de la función dentro de una tolerancia establecida previamente. Dependiendo en si la raíz se encuentra encerrada dentro de un intervalo inicial, los métodos se agrupan en métodos cerrados y abiertos. Los métodos cerrados aseguran una convergencia a un resultado, aunque lo hacen a una velocidad más lenta. Los métodos abiertos no siempre garantizan
la convergencia a un resultado, pero cuando convergen lo hacen más rápido que los métodos cerrados. En este libro trataremos los conceptos fundamentales de los métodos numéricos aplicados al cálculo de raíces de funciones, trataremos el tema de los errores, la tolerancia, Se describirán los principales métodos en la categoría de cerrados y abiertos, se describirán los algoritmos que se aplican y se utilizaran tablas de Excel y procedimientos escritos en VBA para la implementación de los algoritmos. Se utiliza una gran cantidad de figuras para ayudar en la comprensión de los temas. También se muestran algunas aplicaciones prácticas.
Raíces de Funciones
Luis E Brito
11
Capítulo 1 - Raíces de Funciones y Métodos Concepto Una raíz de una función resulta de resolver ecuaciones como la siguiente: 224=(4x+2)*2x*(1+x). Si ubicamos todos los elementos en un solo lado de la ecuación, obtendremos una expresión que es una función de la variable x. La función es: f(x)=(4x+2)*2x*(1+x)-224 Si queremos obtener las raíces de la ecuación, igualamos la función a cero y resolvemos para obtener los valores de x que hacen que el valor de la función sea cero. Los valores de x que hacen que la función f(x)=0, se denominan raíces de la función f(x).
Esta función podemos asociarla con el cálculo del volumen de un paralelepípedo de dimensiones (4x + 2), 2x y (1 + x), donde el volumen es de 224 unidades cubicas, y deseamos calcular el valor de x que produce este volumen. Al final tenemos una función cubica que representa esta igualdad. En la figura anterior se observa la gráfica de la función. Se observa que la curva de la función intersecta el eje X en un punto que esta entre 2 y 3. otro ejemplo que podemos mostrar sobre cómo se origina una función, lo constituye la obtención de la raíz cuadrada de un numero m. Comenzamos con una ecuación, donde hacemos que la raíz
Raíces de Funciones
Luis E Brito
13
cuadrada de un número m es igual a un valor x, movemos todos los elementos de la ecuación hacia el lado derecho y hemos convertido la ecuación en una función de x, que podemos utilizar para calcular la raíz cuadrada de un numero m.
De la misma manera podríamos crear una función para la raíz cubica, o la raíz de cualquier orden. En general cualquier ecuación puede ser transformada en una función de forma que podemos obtener sus raíces, las cuales representan valores que permiten que estas ecuaciones se cumplan. Así como estas simples ecuaciones matemáticas, podemos encontrar en ciencia y en las diferentes ramas de la ingeniería aplicaciones donde podemos formular ecuaciones, las cuales
podemos transformar en funciones y encontrar soluciones a los problemas planteados encontrando las raíces de dichas funciones. Métodos Existen diversos métodos para encontrar las raíces de una función, entre estos tenemos: Métodos Gráficos Métodos Analíticos Métodos Algebraicos Métodos Numéricos Métodos Gráficos Este método es muy simple de implementar y resulta muy intuitivo de comprender. Simplemente hay que construir la gráfica de la función y directamente mediante inspección se puede determinar el punto de corte de la gráfica de la función f(x) con el eje X. El inconveniente es que este valor dependerá de la apreciación de la gráfica, dependiendo del tamaño de la escala se obtendrá una aproximación. Este método se puede utilizar como un paso previo a la utilización de un método numérico,
Raíces de Funciones
Luis E Brito
15
para tener una imagen completa de como se comporta la función y optimizar el uso de otros métodos más precisos. En la siguiente figura se muestra la gráfica de una función derivada de una ecuación. Se han calculado los valores de la función entre 0 y 2.25. De los valores calculados se observa que existe un cambio de signo entre x= 1.25 (-) y x= 1.50 (+). Inspeccionando la gráfica de la función se observa que el punto de intersección esta alrededor de 1.4.
Otra forma de proceder es utilizar cada lado de la ecuación y crear dos funciones. En un lado de la ecuación podemos dejar el termino en x y la constante. Así en lugar de escribir f(x)=0, escribimos g(x)=h(x), y graficamos ambas
funciones en el mismo gráfico, y observamos la intersección de ambas funciones. Este valor corresponde con la raíz de la función f(x).
Aquí en esta figura hemos hecho una ampliación y podemos observar que la raíz de la función f(x), la cual corresponde a la intersección de las curvas de las funciones g(x) y h(x) está alrededor de 1.44. En resumen, el método gráfico es muy sencillo de aplicar, sin embargo, es de muy poca utilidad práctica, debido a que no permite su automatización. Metodología 1.- Si se tiene una ecuación expresarla como una función f(x). Para eso se tienen que agrupar todos los elementos en un solo lado de la ecuación. Esta expresión es igual a la función.
Raíces de Funciones
Luis E Brito
17
2.- Seleccionar varios valores de x y calcular el valor de la función. Hacer el grafico de f(x) y examinar su comportamiento. Seleccionar puntos adicionales, si se requieren, para obtener un cruce de la curva de la función f(x) con eje X. 3.- Observar la gráfica y determinar el valor de la raíz en la intersección de la curva con el eje X. Ampliar la escala en eje X para facilitar la lectura del valor de la raíz. Un método alternativo consiste en: 1.- Reordenar la ecuación, de ser necesario, para hacer que la ecuación sea más simple. Hacer cada lado de la ecuación igual a una función, así se obtendrán 2 funciones: g(x) y h(x). 2.- Seleccionar varios valores de x y calcular el valor de las funciones g(x) y h(x). Hacer el grafico de las funciones g(x) y h(x) y examinar su comportamiento. Seleccionar puntos adicionales si se requieren para obtener un cruce entre las curvas de las dos funciones. 3.- Observar la gráfica y determinar el valor de la raíz en la intersección de las curvas de las
funciones g(x) y h(x). Ampliar la escala en eje X para facilitar la lectura del valor de la raíz. Métodos Analíticos En los métodos analíticos existe una formula, o grupos de fórmulas, no iterativas que permiten el cálculo de las raíces de la función. En una función lineal f(x)=m*x + b existe una sola raíz, la cual puede obtenerse aplicando la siguiente formula: f(x)=0=mx+b, tiene raíz igual a x = -b/m
Existe un método analítico para polinomios de segundo grado, que es la famosa ecuación cuadrática que la mayoría hemos estudiado en el colegio. Para polinomios de tercer grado también
Raíces de Funciones
Luis E Brito
19
existe un método analítico, el cual es un poco más complicado que el utilizado para polinomios de segundo grado. En la siguiente figura se presenta el método analítico para encontrar la solución de funciones polinómicas de segundo grado.
La solución analítica para un polinomio de tercer grado, aunque más compleja que la solución analítica para una ecuación de segundo grado, todavía es manejable. En las siguientes figuras se presentan las ecuaciones que se utilizan.
En la literatura se pueden conseguir diferentes conjuntos de ecuaciones para resolver las raĂces de las ecuaciones cubicas, aquĂ les muestro las que me parecen mĂĄs sencillas de manejar. Aunque a decir verdad todas funcionan muy bien, solamente son variaciones algebraicas de las mismas formulas.
Dependiendo de los valores de la variable D, tenemos tres casos. Caso 1 D = 0, Caso 2 D > 0 y Caso 3 D <0.
Raíces de Funciones
Luis E Brito
21
En el caso 1: D=0, se tienen tres raíces reales, al menos dos son iguales.
En el caso 2: D>0, se tiene 1 raíz real y dos raíces complejas.
En el caso 3: D <0, se tienen 3 raíces reales diferentes.
Para polinomios de orden superiores existen métodos analíticos muy complejos, que los hace poco prácticos de utilizar. Métodos Numéricos Los métodos numéricos se basan en la aplicación de algoritmos, que se aproximan, mediante iteraciones, a un valor cada vez más cercano al valor de la raíz. La ventaja de los métodos numéricos es que pueden ser utilizados en todo tipo de funciones, ya sean funciones algebraicas o transcendentales. Pueden encontrar las raíces en funciones que no pueden ser determinadas por métodos analíticos. Dentro de los métodos numéricos se pueden distinguir dos tipos de metodologías: métodos cerrados y métodos abiertos.
Raíces de Funciones
Luis E Brito
23
Métodos Cerrados Los métodos cerrados se caracterizan porque utilizan como punto de inicio un intervalo [a, b] donde la función f(x) entre esos dos puntos extremos cambia de signo. Es decir, la curva de la función cruza el eje X en ese intervalo. La raíz se encuentra acotada entre los puntos extremos del intervalo, se encuentra encerrada, de allí el nombre de estos métodos. Los métodos cerrados son muy fáciles de entender y de implementar. Siempre convergen a una solución, aunque lo hacen de forma muy lenta. Entre los métodos cerrados se tienen: Método de Bisección Método de la Falsa Posición o Regula Falsi Métodos que son variaciones del Regula Falsi Métodos Abiertos Los métodos abiertos son aquellos donde no se requiere que la raíz se encuentre encerrada dentro de un intervalo inicial. En los métodos abiertos se utiliza un punto inicial, o en algunos casos se
pueden utilizar dos puntos, que no necesariamente encierran a la raíz. Inclusive hay métodos que utilizan tres puntos iniciales, como el método de Muller. Entre los métodos abiertos tenemos: Método de Iteración de Punto Fijo. Método de Newton-Raphson Método de la Secante Método de Muller Criterios Para Detener las Iteraciones al Utilizar Métodos Numéricos Cuando estamos utilizando un método numérico para estimar el valor de una raíz, lo que obtenemos en cada iteración es una aproximación al valor de la raíz r, si el método converge, a medida que aumentamos el número de iteraciones nos acercaremos más y más al valor de la raíz. También hay que considerar que el concepto de raíz implica que f(r) =0, así que el valor de la aproximación f(xi) debe estar muy cerca del valor
Raíces de Funciones
Luis E Brito
25
de cero, para que la consideremos como una raíz de la función f(x). Tolerancia La tolerancia es la magnitud máxima de las desviaciones de las aproximaciones con respecto al verdadero valor de la raíz, r que estamos dispuestos a aceptar, esta representa la tolerancia en x. También podemos definir la tolerancia en f(x) como la desviación máxima entre el valor de la función en la aproximación xi, f(xi) y f(r) =0 que podemos aceptar.
Tolerancia en x Para expresar la tolerancia en x podemos utilizar el error real y el error aproximado. Error Verdadero o Real
Es la desviación que existe entre el valor verdadero de la raíz y el valor calculado en la iteración i. El error real puede expresarse en forma absoluta y en forma relativa.
Cuando estamos buscando una raíz, se supone que no conocemos a priori su valor, por lo que su utilización como criterio para detener las iteraciones no es apropiado. En este caso es mejor utilizar el error entre una iteración y la anterior. Error Aproximado Cuando un método converge a una solución, el error verdadero va disminuyendo, así que podemos expresar:
Raíces de Funciones
Luis E Brito
27
En este caso hemos sustituido el valor de r por xi+1, y obtenemos un valor aproximado del error, el cual es mayor que el error verdadero. Así que, para cualquier valor de error aproximado, el error verdadero será menor. Tolerancia en f(x) Mide cual es el valor máximo de la desviación entre el valor de la función en la aproximación xi, f(xi) y el valor de la función en la raíz, f(r)=0.
Cuando detener un proceso iterativo Para detener un proceso iterativo seleccionamos una tolerancia en x o en f(x), de forma que cuando en una iteración el valor del error absoluto o relativo sea menor que un valor máximo de error permitido el programa se detendrá y tomara como valor de la raíz el valor calculado en la última iteración.
En lugar del error absoluto podemos utilizar el error relativo, e, el cual puede ser expresado como un número decimal o en forma porcentual.
Si se selecciona como criterio de paro una tolerancia en f(x) cuando en una iteración el valor de f(xi) sea menor que un valor máximo de desviación el proceso iterativo se detendrá y el valor de la raíz será el valor de la última iteración calculada.
Raíces de Funciones
Luis E Brito
29
Como criterio para evitar que el ciclo de iteraciones se convierta en un ciclo sin fin, debido a la no convergencia del método, se recomienda añadir como criterio el número máximo de iteraciones.
Capítulo 2 Métodos Cerrados Concepto En los métodos cerrados se selecciona un intervalo entre dos puntos [a, b] del eje X, y se observa el comportamiento del signo de la función en los puntos extremos del intervalo: f(a) y f(b). Si la función cambia de signo en los puntos extremos del intervalo: Existe una raíz o un número impar de raíces.
Raíces de Funciones
Luis E Brito
31
Si la separación entre los puntos a y b es pequeña, es muy probable que exista una sola raíz en ese intervalo. Si la función no cambia de signo en los puntos extremos del intervalo: Existe un número par de raíces o no existe ninguna raíz. Si la separación entre los puntos a y b es pequeña, es muy probable que no exista una raíz en ese intervalo.
En los métodos cerrados se trata de encerrar una raíz dentro de un intervalo, lo suficientemente pequeño, para asegurar que en ese intervalo exista una sola raíz. Teorema de Bolzano Si una función f(x) es continua en el intervalo [a, b], y f(a) tiene signo diferente a f(b), entonces existe por lo menos un punto c, dentro del intervalo [a, b] tal que f(c) = 0. Si además la primera derivada f'(x) no cambia de signo en el intervalo [a, b], entonces la solución es única. Esta es la base teórica de todos los métodos abiertos utilizados para hallar la raíz de una función en dicho intervalo. La aplicación repetida de estos métodos siempre da como resultado un valor cercano al valor verdadero de la raíz, aunque la tasa de convergencia es lenta. Entre estos métodos tenemos el método de bisección, el método de la falsa posición (Regula falsi) y algunas variantes de este método. Bisección Este es uno de los métodos más antiguos y de más fácil implementación. Intuitivamente si una
Raíces de Funciones
Luis E Brito
33
función f(x), cambia de signo en un intervalo, debe existir al menos una raíz para la función f(x).
En la figura se muestra la gráfica de la función f(x)=X2-8X+5. En la gráfica se observa que en el intervalo [0, 4] se observa un cambio de signo de positivo (+ve) a negativo (-ve), por lo que debe existir una raíz dentro de este intervalo. Igualmente se observa un cambio de signo en el intervalo [4, 8] por lo que debe existir otra raíz en este intervalo. Supongamos una ecuación f(x)=0, donde f es continua en el intervalo [a , b] y f(a)*f(b)<0,
entonces existe al menos una raíz en dicho intervalo. Si c=(a+b)/2 y f(c)=0, entonces c es una raíz de la función f(x). En caso contrario es una aproximación de la raíz. En este punto podemos continuar obteniendo mejores aproximaciones sucesivas entre el punto c y los puntos a o b. Si f(a)*f(c)>0, entonces la raíz no se encuentra en el intervalo [a, c]. Si f(c)*f(b)<0, entonces la raíz se encuentra en este intervalo, [c, b]. Evaluamos si el punto medio es una raíz, o una mejor aproximación de acuerdo a una tolerancia establecida. Repetimos este proceso de ir dividiendo el intervalo en dos partes hasta conseguir una aproximación que se encuentre dentro de una tolerancia que haya sido establecida. En la siguiente figura se muestra una ampliación del gráfico de la función.
Raíces de Funciones
Luis E Brito
35
Vamos a seleccionar el intervalo [0, 2] para calcular el valor de la raíz que se encuentra en ese intervalo a= 0 y b=2. De la gráfica se observa que f(0)= 5 >0, y f(2)=-7 <0. Calculamos el punto medio del intervalo, c=(a+b)/2, c=1, f(1)=-2 <0. Verificamos el cambio de signo entre el punto medio calculado y los extremos del intervalo: f(a)*f(c) < 0, entonces la raíz se encuentra entre este intervalo y realizamos una nueva iteración. Este proceso lo podemos continuar hasta que logremos una convergencia a un resultado con una tolerancia definida.
Se puede automatizar este procedimiento mediante el uso de una hoja de cĂĄlculo en Excel, o se puede elaborar un procedimiento en VBA, o en cualquier otro programa de su preferencia como Mathematica, Octave, Python o Scilab. En la siguiente figura se muestra una tabla realizada en Excel, donde se aplica el mĂŠtodo de bisecciĂłn.
Se fijan los valores de a y b iniciales, se calculan los valores de f(a) y f(b), se verifica que tengan signos contrarios. Se calcula el valor del punto medio c= (a+b)/2, y se calcula el valor de f(c).
Raíces de Funciones
Luis E Brito
37
En la siguiente línea de iteración se verifica si continúa habiendo un cambio de signo entre a y el punto medio. Si es así, a= a y b=c, es decir el punto medio se convierte en el nuevo valor b. Para eso se evalúa la siguiente función: Si(f(a)*f(c)<0, a , c). En caso de que a y c tengan el mismo signo, entonces a=c y b=b. Se calcula un nuevo valor del punto medio, c, y el valor de la función f(c) y se vuelve a repetir la iteración en la siguiente línea. En cada iteración el tamaño del intervalo se va reduciendo a la mitad del valor del intervalo anterior, los valores iniciales son [a0, b0], en la primera iteración el intervalo es [a1, b1], en la segunda iteración el intervalo es [a2, b2] y en la n-esima iteración es [an, bn].
En la siguiente figura se muestra gráficamente como se va reduciendo el tamaño del intervalo con respecto al intervalo anterior.
Detenemos las iteraciones cuando el tamaño del intervalo b - a en la iteración alcanza un valor muy pequeño, que podemos establecer de forma predeterminada, o cuando el valor de f(c) calculado se desvía muy poco del valor de cero. En el ejemplo mostrado, luego de 15 iteraciones, el valor de la aproximación es 0.68341, y el valor de la función se desvía en 0.0002 con respecto al valor cero. Y el tamaño del intervalo es b-a es de 0.000122.
Raíces de Funciones
Luis E Brito
39
Para hacer más claro la forma de implementar este método en Excel se muestran las fórmulas utilizadas en la siguiente figura.
También podemos crear un procedimiento en VBA Excel para la implementación de este método. Primero realizaremos un seudo código y luego escribiremos un procedimiento para VBA: Algoritmo 1.- Definir la función a la que deseamos calcular la raíz f(x). 2.- Seleccionar el intervalo inicial a y b 3.- Calcular el punto medio c = (a + b) / 2 4.- Calcular el valor de la función en a, b y c; f(a), f(b) y f(c)
5.- Evaluar si f(c) es una raíz dentro de la tolerancia establecida. Si la respuesta es si ir al final. Si la respuesta es no, iterar. 6.- Ver en que intervalo está el cambio de signo. Si en el intervalo [a, c] o en intervalo [c, b]. Para eso preguntamos si f(a)*f(c)<0. Si la respuesta es verdadera la raíz se encuentra en el intervalo [a, c] y hacemos que el valor de a=a, y b=c. Si la respuesta es falsa la raíz se encuentra en el intervalo [c, b] y hacemos a=c, y b=b. 7.- Calculamos un nuevo valor del punto medio y volvemos a realizar una iteración. A continuación, un procedimiento en VBA para calcular la raíz de un función en un intervalo [a, b]. Se han creado dos funciones definidas por el usuario (UDF por sus siglas en inglés: User defined function). La primera función funct(x) se utiliza para definir la función a la que deseamos calcular la raíz. Hay
Raíces de Funciones
Luis E Brito
41
que introducir dentro del código la ecuación de la función. La segunda función Biseccion(a,b) es el código del método Bisección. Esta llama a la primera función y realiza las iteraciones para conseguir el valor de la raíz de acuerdo a la tolerancia que especifiquemos, en este caso hemos definido que la desviación no sea mayor de 0.0001. Public Function funct(x As Double) As Double funct = x ^ 2 - 8 * x + 5 End Function ### Public Function Biseccion(a As Double, b As Double) As Double Dim c As Double Dim fa As Double Dim fb As Double Dim fc As Double Dim count As Integer
Do c = (a + b) / 2 fa = funct(a) fb = funct(b) fc = funct(c) If fa * fc < 0 Then a=a b=c Else a=c b=b End If count = count + 1 Loop While Abs(fc) > 0.0001 Biseccion = c End Function
Raíces de Funciones
Luis E Brito
43
Esta función es bastante simple. Habría que incluir instrucciones para: 1- Verificar que los valores iniciales a y b generen valores f(a) y f(b) de signo contrario. 2- Evitar que el ciclo Do - Loop While no entre en un ciclo sin fin. Crear alguna instrucción que finalice el ciclo luego de alcanzar un número máximo de iteraciones sin conseguir un resultado satisfactorio. En la siguiente figura se muestra la aplicación de la función Biseccion para la función que hemos venido utilizando de ejemplo. La función puede ser utilizada como cualquier otra función interna de Excel.
La diferencia en los resultados entre esta función y la tabla en Excel se deben a que en la función se
realizaron 16 iteraciones y en la tabla 14 iteraciones (descontando la condición inicial). Tabla Excel luego de 14 iteraciones: 0.68341. Función creada en VBA luego de 16 iteraciones: 0.6833801 Regula Falsi El método de regula falsi o falsa posición, es un método parecido al método de la bisección, porque también se utiliza un intervalo entre dos puntos de la función f(x), donde se produce un cambio de signo, es decir existe una raíz en ese intervalo. La aproximación a la raíz en lugar de ser el punto medio del intervalo es el punto de intersección de la recta entre los dos puntos del intervalo y el eje x. Este valor de x constituye una aproximación al valor de la raíz. Para la siguiente iteración se verifica entre cual punto del intervalo y la intersección de la recta con el eje x, se encuentra la raíz. Este método por lo general converge con mucha mayor rapidez a una solución que el método de bisección.
Raíces de Funciones
Luis E Brito
45
En la figura se observa como la función f(x) cambia de signo en el intervalo [a, b], la intersección de la línea recta con eje x genera una aproximación (1) a la raíz, utilizando este nuevo punto se construye una nueva línea recta y se consigue una nueva intersección con el eje x, con una nueva aproximación (2) a la raíz; el punto que se genera en la curva se utiliza para construir una nueva línea recta y se consigue otra aproximación a la raíz (3). El procedimiento se continua hasta que se alcance una tolerancia predefinida. Como criterio de tolerancia se puede utilizar la desviación del valor de la función en la aproximación con respecto a cero, o el error
absoluto o relativo entre una iteración y la iteración anterior. Para comprender como funciona el algoritmo para calcular las aproximaciones utilizaremos un gráfico y haremos la deducción de la fórmula de la nueva aproximación.
En este método se seleccionan dos puntos x0 y x1 de forma que f(x0) y f(x1) son de signos contrarios. Es decir, el gráfico de la función y=f(x) cruza el eje x entre estos dos puntos. En la construcción geométrica de la línea recta que une los puntos (x0, f(x0)) y (x1, f(x1)) y que intersecta el eje X en el punto (x2, 0) se generan dos triángulos semejantes.
Raíces de Funciones
Luis E Brito
47
El valor encontrado de x2 no es una raíz, sino una aproximación, que se encuentra en la intersección con el eje X de la recta que pasa por los puntos (x0 , f(x0)) y (x1 , f(x1)). Si ahora los valores de f(x0) y f(x2) son de signos opuestos, entonces la raíz cae entre los puntos x0 y x2, así que reemplazando x1 por x2 obtendremos la siguiente aproximación. El proceso se repite hasta lograr una aproximación que se encuentre dentro de una tolerancia establecida. El procedimiento para conseguir una raíz utilizando este método es similar al método de bisección ya que utiliza un intervalo inicial, donde existe un cambio de signo, por lo que debe encontrarse una raíz dentro de este intervalo. En lugar de seleccionar una aproximación en el punto medio del intervalo, se obtiene una aproximación en la intersección de la línea recta que une a los dos puntos del intervalo con el eje
X. El criterio para obtener el nuevo intervalo de iteración es similar. El nuevo intervalo debe tener puntos extremos de signo contrario, Así que podemos utilizar el criterio de preguntar si f(x0)*f(x2)<0 en cuyo caso hacemos x1=x2. Si f(x2)*f(x1)<0, entonces x0=x2. Para evaluar cómo funciona este método hagamos el cálculo manual utilizando la función f(x)=X2 8X + 5 (La misma utilizada en el método de bisección).
Con estos dos nuevos valores se realiza la siguiente iteración, calculando una nueva aproximación x2.
Raíces de Funciones
Luis E Brito
49
Podemos realizar una tabla en Excel o un procedimiento en VBA para automatizar el método. El procedimiento general es el que se describe a continuación: Algoritmo 1.- Definir la función a la que deseamos calcular la raíz f(x). 2.- Seleccionar el intervalo inicial x0 y x1 3.- Calcular el valor de la función f(x0) y f(x1) 3.- Calcular el punto de intersección de la recta que une los puntos y el eje X, x2. 4.- Calcular f(x2) y Evaluar si es una raíz dentro de la tolerancia establecida. Si la respuesta es sí ir al final. Si la respuesta es no, iterar. 6.- Ver en que intervalo está el cambio de signo. Si en el intervalo [x0, x2] o en intervalo [x2, x1]. Para eso preguntamos si f(x0)*f(x2)<0.
Si la respuesta es verdadera la raíz se encuentra en el intervalo [x0, x2] y hacemos que el valor de x0=x0, y x1=x2. Si la respuesta es falsa la raíz se encuentra en el intervalo [x2, x1] y hacemos x0=x2, y x1=x1. 7.- Con este nuevo intervalo volvemos a realizar una iteración. 8.- El proceso se repite hasta que el criterio de tolerancia establecida sea alcanzada, desviación de la aproximación de cero, o los errores absolutos o relativos. En la siguiente figura se muestra implementación del método Regula Falsi.
una
Este método converge más rápido a una solución que el método de Bisección. Con el método Regula Falsi se necesitaron 5 iteraciones para lograr una desviación de la función en el orden de
Raíces de Funciones
Luis E Brito
51
10E-6. Con el método de bisección luego de 14 iteraciones se alcanza una desviación de 10E-4. A continuación, se presenta un procedimiento Sub para generar una tabla con las iteraciones utilizando el método de la Regula Falsi. Es un procedimiento sencillo, tiene un contador para utilizar la propiedad Offset para ir copiando los valores del número de iteración, xo, x1, x2, fxo, fx1 y fx2. Se creó un botón en la hoja para iniciar la ejecución del procedimiento. Los valores iniciales del intervalo deben colocarse en las celdas A2 y B2 de la hoja. Existe una instrucción para limpiar los valores anteriores de la tabla. La función a la que se le va a calcular la raíz debe introducirse en la función definida por el usuario funct. Public Function funct(x As Double) As Double funct = x ^ 2 - 8 * x + 5 End Function ### Public Sub Regula_1() Dim xo As Double
Dim x1 As Double Dim x2 As Double Dim fxo As Double Dim fx1 As Double Dim fx2 As Double Dim count As Integer Dim error As Double xo = Worksheets("Falsi").Range("A2") x1 = Worksheets("Falsi").Range("B2") fxo = funct(xo) fx1 = funct(x1) Worksheets("falsi").Range("A7").CurrentRegion. Offset(2, 0).Clear Worksheets("Falsi").Range("A7").Activate count = 0 Do x2 = xo - (x1 - xo) / (fx1 - fxo) * fxo fx2 = funct(x2)
RaÃces de Funciones
Luis E Brito
ActiveCell.Offset(count, 0) = count ActiveCell.Offset(count, 1) = xo ActiveCell.Offset(count, 2) = x1 ActiveCell.Offset(count, 3) = x2 ActiveCell.Offset(count, 4) = fxo ActiveCell.Offset(count, 5) = fx1 ActiveCell.Offset(count, 6) = fx2 If fxo * fx2 < 0 Then x1 = x2 fx1 = funct(x1) Else xo = x2 fxo = funct(xo) End If count = count + 1 Loop While Abs(fx2) > 0.0001 End Sub
53
Variante del Regula Falsi Existe otra variante del método de la Regula Falsi, que utiliza el mismo principio de utilizar un intervalo [x0 , x1], y trazar una recta entre estos dos puntos y conseguir el punto de intersección con el eje X, este punto x2 es una aproximación inicial a la raíz de la función. Si la función en este punto, f(x2), está muy cerca de cero, dentro de la tolerancia establecida, consideraremos que x2 es la raíz de la función, En caso contrario debemos seleccionar un nuevo intervalo, que incluya el valor de x2 calculado. En lugar de utilizar el criterio del cambio de signo, que utilizamos en el método estándar, podemos utilizar como criterio seleccionar el valor x0 o x1 más cercano a el valor calculado x2. Y realizar una nueva iteración utilizando este nuevo intervalo. En la siguiente figura el valor de 'a' representa el valor xo y 'b' el valor x1 del intervalo. X2-1, x22, representan aproximaciones sucesivas.
Raíces de Funciones
Luis E Brito
55
En cada iteración sucesivas utilizamos como nuevo intervalo el valor calculado de x2 y el valor que se encuentra más cercano a este. En la primera iteración obtenemos el valor x2-1. El valor más cercano a este es el punto 'a', así que sustituimos el valor 'b' por x2-1. La recta que une a estos dos puntos genera un punto de intersección que esta fuera del intervalo, sin embargo, en las siguientes iteraciones los valores de las aproximaciones se encuentran dentro del intervalo y comienza a converger rápidamente. En la figura se muestra en caja de color rojo para indicar la distancia mínima entre el punto x2 calculado y los extremos del intervalo.
Una descripción del algoritmo para el uso de esta variante del método de la Regula Falsi es el siguiente, este puede ser implementado en una tabla en Excel o en un procedimiento en VBA: Algoritmo 1.- Definir la función a la que deseamos calcular la raíz f(x). 2.- Seleccionar el intervalo inicial x0 y x1. Los valores de la función en los puntos extremos de este intervalo pueden ser de signo contrario, es decir encierran una raíz, sin embargo, el método puede converger a una solución a pesar que el intervalo inicial no encierre la raíz. Solo se necesita que el intervalo este cerca de la raíz. 3.- Calcular el valor de la función f(x0) y f(x1) 3.- Calcular el punto de intersección de la recta que une los puntos y el eje X, x2. 4.- Calcular f(x2) y Evaluar si es una raíz dentro de la tolerancia establecida. Si la respuesta es si ir al final. Si la respuesta es no, iterar. 6.- Ver que intervalo es el más pequeño. Si el intervalo [x0, x2] o el intervalo [x2, x1].
Raíces de Funciones
Luis E Brito
57
Para eso preguntamos si Abs[x2-x0]<Abs[x2-x1]. Si la respuesta es verdadera el valor del intervalo [x0, x2] es el más corto. Entonces hacemos x0=x0 y x1=x2. Si la respuesta es falsa el valor del intervalo [x2, x1] es más corto y hacemos x0=x2, y x1=x1. 7.- Con este nuevo intervalo volvemos a realizar una iteración. 8.- El proceso se repite hasta que el criterio de tolerancia establecida sea alcanzada, desviación de la aproximación de cero, o los errores absolutos o relativos. En la siguiente figura se muestra una implementación de la variación del método Regula Falsi en una tabla de Excel.
Se puede observar que ese método converge mucho más rápido que la forma convencional de la regula falsi que utiliza el cambio de signo.
Aquí luego de solo 3 iteraciones se tiene una aproximación que está en el orden de 10E-6. Otra ventaja que tiene este método es que no se requiere que los valores de la función en los extremos del intervalo inicial tengan signos diferentes, es decir, no es necesario que la raíz este contenida dentro del intervalo. Solo es necesario que el intervalo este razonablemente cerca de la raíz. Debido a esto, este método podría ser considerado como un método abierto, sin embargo lo hemos colocado dentro de los métodos cerrados, por ser muy parecido a el método de la falsa posición. A continuación, se presenta un procedimiento Sub para generar una tabla con las iteraciones utilizando la variante del método de la Regula Falsi. Es un procedimiento sencillo, tiene un contador para utilizar la propiedad Offset para ir copiando los valores del número de iteración, xo, x1, x2, fxo, fx1 y fx2. Se creó un botón en la hoja para iniciar la ejecución del procedimiento. Los valores iniciales del intervalo deben colocarse en las celdas A2 y B2 de la hoja. Existe una instrucción para limpiar los valores anteriores
Raíces de Funciones
Luis E Brito
59
de la tabla. La función a la que se le va a calcular la raíz debe introducirse en la función definida por el usuario funct. Public Function funct(x As Double) As Double funct = x ^ 2 - 8 * x + 5 End Function ### Public Sub Regula_2() Dim xo As Double Dim x1 As Double Dim x2 As Double Dim fxo As Double Dim fx1 As Double Dim fx2 As Double Dim count As Integer Dim error As Double xo = Worksheets("Variante").Range("A2") x1 = Worksheets("Variante").Range("B2") fxo = funct(xo)
fx1 = funct(x1) Worksheets("Variante").Range("A7").CurrentRe gion.Offset(2, 0).Clear Worksheets("Variante").Range("A7:I50").Font.Si ze = 16 Worksheets("Variante").Range("A7").Activate count = 0 Do x2 = xo - (x1 - xo) / (fx1 - fxo) * fxo fx2 = funct(x2) ActiveCell.Offset(count, 0) = count ActiveCell.Offset(count, 1) = xo ActiveCell.Offset(count, 2) = x1 ActiveCell.Offset(count, 3) = x2 ActiveCell.Offset(count, 4) = fxo ActiveCell.Offset(count, 5) = fx1 ActiveCell.Offset(count, 6) = fx2 If Abs(fx2 - fxo) < Abs(fx2 - fx1) Then x1 = x2
RaÃces de Funciones
Luis E Brito
fx1 = funct(x1) Else xo = x2 fxo = funct(xo) End If count = count + 1
Loop While Abs(fx2) > 0.0001 End Sub
61
Capítulo 3 Métodos Abiertos Concepto Los métodos abiertos no requieren de un intervalo que encierre a la raíz de la función f(x). La mayoría de los métodos utilizan la tangente en un punto a la curva de la función f(x), y su intersección con el eje X como una aproximación a la raíz. En cada iteración un nuevo valor es calculado a partir del valor o valores calculados en la iteración anterior. En este sentido se puede decir que estos métodos utilizan el proceso de recursión. Estos métodos no siempre convergen a un resultado, pero cuando lo hacen, convergen más rápido que los métodos cerrados. Entre los métodos abiertos tenemos: Método de iteración de Punto Fijo Método de Newton-Raphson Método de la Secante Método de Muller
Raíces de Funciones
Luis E Brito
63
Para continuar leyendo. Muéstrele al autor que usted aprecia su trabajo. Visite: Métodos Numéricos Raíces de Funciones: Como calcular raíces de funciones utilizando métodos numéricos (Spanish Edition)
https://www.amazon.com/dp/B01N9V29HM https://www.amazon.com.mx/dp/B01N9V29HM