Artículo

Solución de Ecuaciones por Técnicas Numéricas

Autor / Fuente

Harvey Triana / Métodos Númericos, Apostol

Tema

Matemática aplicada e Ingeniería

Actualización

Septiembre 20 de 1997

Descripción

Solucióna ecuaciones (funciones f(x)) por técnicas numéricas. Métodos de Intervalo de Bisección y Derivada de Newton.


Solución de Ecuaciones por Técnicas Numéricas

Las ecuaciones cuya solución algebraica es compleja, o no es posible, es un interesante tema de los métodos numéricos y por ende de la informática. También es fundamental en problemas de ingeniaría. A continuación les presento dos métodos aplicados tradicionalmente.


Búsqueda Binaria

Al algoritmo es similar al de búsqueda de un nombre en un directorio telefónico, abriendo sucesivamente por mitades hasta llegar al punto. También es conocido como intervalo de bisección. Para la efectividad de este método, es necesario que en un intervalo {x1, x2}, la función continua f(x) cambie de signo. La ecuación de recurrencia es:

x = (x2 - x1) / 2.0

El código que les presento en este articulo va más allá al explorar todos los cambios de signo en un intervalo de exploración y se calculan todas las raíces en el mismo. El Function ScanSngChange hace esto y devuelve el número de raíces encontradas en el intervalo.


Existe un método que lo conozco como Regula-Fals que también requiere de un intervalo de cambio de signo, pero a diferencia del método de bisección, es más rápido. La formula re recurrencia es :

x = [ x1| f(x2) | + x2| f(x1) | ]/ [ | f(x1) | + | f(x2) | ]

Note que se usa el valor absoluto de los valores de la función. El Function ScanSngChange aplicará también en este caso. Solo reemplace la llamada a la función GetRootInterval. Queda de tarea J .


Algoritmo de Newton

Apología al Cálculo numérico, el algoritmo de newton es una técnica que no requiere de intervalo de cambio de signo, a cambio requiere un valor inicial y la derivada explícita de la función f(x). La ecuación de recurrencia es:

x = xo - f(x) / f '(x)

Encuentra el código en el procedimiento GetRootNewton. En realidad no hay que preocuparse mucho por el valor inicial, xo, pues la respuesta es rápidamente hallada. Si la función no tiene una raíz, la derivada es nula en algún punto, o la función no es continua, se producirá un error interceptado.


¿ Cuándo emplear una u otra ?

Considere la siguiente regla. No se puede saber con certeza en que intervalo explorar una función. Por ejemplo, por razones de dominio de la función o simplemente por desconocer el comportamiento de la curva. En este caso es conveniente el algoritmo de Newton.

La función tiene una derivada compleja. En este caso no queda más remedio que investigar un intervalo. Otro caso es que la función tenga múltiples raíces, caso en el cual el algoritmo de Newton encuentra la más próxima al valor inicial que se le paso como argumento.

Por supuesto, existirán casos en que ninguno de los métodos tendría aplicación. También, la función podría no tener raíz alguna.


La función f

Es un buen momento para entablar una cuestión que aún no he podido solucionar con satisfacción: Quisiera tener la capacidad de cambiar el contenido de un procedimiento Function sin afectar los llamados a es función.

En otras palabras, Una ecuación no puede ser dato de entrada. Si quiere usar este código para solucionar una ecuación particular, debe reemplazar el código del Function f (y el de df) para especificar su ecuación. Lo que he hecho en mis programas, que emplean más de una función (normalmente con coeficientes que varían), es escribir un Select Case e incluir el caso como parámetro de f. ¿ Es posible colocar como parámetro el nombre de un Function ?.


Código y Ejemplo

El código de este articulo incluye un módulo de un sencillo ejemplo con salida a la ventana Debug. El siguiente vínculo baja éste artículo, el código del mismo y su ejemplo: « Download ».


Harvey Triana Envíe sus comentarios a: psoft@latino.net.co
Derechos libres de reutilización solo para programación.