Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / Java / Métodos Numéricos: Sustitución Directa

Métodos Numéricos: Sustitución Directa

Autor jc mouse martes, mayo 10, 2016

El Método de Sustitución Directa básicamente consiste en asumir un valor, reemplazar el mismo en la función despejada y emplear el resultado como nuevo valor de prueba. Repitiendo este procedimiento hasta que los valores asumido y calculado sean iguales en un determinado número de dígitos (en una precisión preestablecida).

No obstante se debe aclarar que  el método de sustitución directa no siempre encuentra la solución (no siempre converge). En ocasiones puede alejarse de la misma u oscilar entre dos o más valores.

El algoritmo es el siguiente

Direct Replacement

En el algoritmo, el proceso se lleva a cabo en un ciclo que termina cuando se alcanza la precisión o alternativamente la exactitud: |x1-y1| < err.

  • La precisión es el número de dígitos que son correctos en el valor de la incógnita (en el resultado calculado) y se determina comparando los valores de la incógnita de dos iteraciones consecutivas.
  • La exactitud es el número de dígitos que son correctos cuando se calcula el valor de la ecuación. La forma más sencilla de determinar la exactitud es igualar la ecuación a 0, entonces la exactitud es simplemente el número de ceros después del punto. Para determinar la exactitud en el algoritmo se compara el valor de la función igualada a cero, con el error predeterminado.

Como ya dijimos más arriba, este método a veces no encuentra la solución lo que nos llevaría a un ciclo infinito, para evitar esto se implementa un numero máximo de iteraciones tras los cuales el método retornaría “-1” para romper el ciclo.

Implementando el algoritmo en código java, tenemos:

/**
 * @see http://www.jc-mouse.net/
 * @author jc mouse
 */
public class SustitucionDirecta {
    
    /**
     * @param x1 Valor incial Ej. 3
     * @param err Error permitdo Ej. 1e-10
     * @param li Limite de iterraciones Ej. 100
     * @return double 
     */
    public double calcular(double x1, double err, double li){
        double y1;
        double c=1;
        while (true){
            y1 = g(x1);
            if (Math.abs(x1-y1)<err) 
                return y1;
            if (Math.abs(x1/y1-1)<err) 
                return y1;
            if (c==li)
                return -1;                            
            c++;
            x1=y1;
        }        
    }
    
    /**
     * Funcion a resolver
     * @param x incognita
     * @return double
     */
    private double g(double x){
        return Math.pow(52+3*Math.sqrt(x)-8*Math.pow(x,0.8),0.36);        
    }
    
}

En la clase, al declarar el método g(x), se escribe la ecuación que se busca resolver que para nuestro ejemplo es:

metodos numericos

Y para resolver esa ecuación haríamos lo siguiente:

SustitucionDirecta sustitucionDirecta = new SustitucionDirecta();
double valor = sustitucionDirecta.calcular(3, 1e-10, 100);        
System.out.println(valor);

y por consola tenemos:

metodos java

enjoy!!!

Tags

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.

Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye

Enjoy! :)

También Te Podría Interesar

Crear componente Switch de Android para Java Swing

Crear componente Switch de Android para Java Swing

En este post crearemos un componente que solo hay en android y que no esta disponible en la paleta de controles de Netbe...

iFrame Injection – Ocultar código malicioso

iFrame Injection – Ocultar código malicioso

En ocasiones los administradores de sitios web experimentan problemas de lentitud en su carga o en el peor de los casos...

Reportes con imagenes en Java (Video)

Reportes con imagenes en Java (Video)

Video Tutorial que muestra una de las maneras de utilizar y mostrar imagenes en iReport, pasando estas como parametros d...

Blog MVC en PHP (Código Fuente)

Blog MVC en PHP (Código Fuente)

En este post dejo el código fuente de un blog en PHP desarrollado siguiendo el patrón de diseño MVC (Modelo, Vista y Con...

Bloquear orientación de la pantalla

Bloquear orientación de la pantalla

Cuando escribimos aplicaciones para android debemos tener cuidado al diseñar la interfaz en la posición que tomaran los...

Ejecutar función de postgreSQL desde Java

Ejecutar función de postgreSQL desde Java

Este es una continuación de un tutorial pasado [Funciones en PostgreSQL y pgAdmin], así que si quieres entenderlo mucho...

Comparte lo que sabes

Categorias

Últimas entradas

En este post, crearemos una tabla swing que implemente un control jcombobox en una columna de una tabla, llenaremos con...

En este post personalizaremos una tabla JTable Swing para pintar una imagen de fondo y darle un poco de estilo al encabe...

De las pocas herramientas disponibles entre librerías, frameworks, engines, etc para el desarrollo de videojuegos en len...

¿Quien no ha querido programar un juego? creo que la mayoría si no es que todos los que conocen de programación sin impo...

Android Bolivia

MAUS