Package metodosnumericos

Source Code of metodosnumericos.Funcion

package metodosnumericos;
import javax.swing.JOptionPane;
import org.lsmp.djep.djep.DJep;
import org.nfunk.jep.Node;
import org.nfunk.jep.ParseException;
/**
*
* @author jam2
*/


public class Funcion {
    private DJep j;
    private String f;

    public String getF() {
        return f;
    }

    public void setF(String f) {
        this.f = f;
    }
   
    public Funcion(String f){
        j = new DJep();
        this.f = f;
        j.addStandardConstants();
        //agrega constantes estandares, pi, e, etc
        j.addStandardFunctions();
        //agrega funciones estandares cos(x), sin(x)
        j.addComplex();
        //por si existe algun numero complejo
        j.setAllowUndeclared(true);
        //permite variables no declarables
        j.setAllowAssignment(true);
        //permite asignaciones
        j.setImplicitMul(true);
        //regla de multiplicacion o para sustraccion y sumas
        j.addStandardDiffRules();
    }
   
    public Double Evaluar(double x) throws ParseException{
        Node re = null;
        String val="No";
        j.addVariable("x", x);
        try{
            re = j.parse(f)//esta funcion parse es la que en si hace el proceso de la evaluacion de la expresion
        } catch (ParseException ex) {
            JOptionPane.showMessageDialog(null, "Función Incorrecta", "ERROR", 0);
        }
        val = (j.evaluate(re)).toString();
        return Double.parseDouble(val);
    }
   
   
    public String Derivada(){
        String derivada = "No";
        try{
            //coloca el nodo con una funcion preestablecida
            Node node = j.parse(f);
            //deriva la funcion con respecto a x
            Node diff = j.differentiate(node,"x");
            //Simplificamos la funcion con respecto a x
            Node simp = j.simplify(diff);
            //Convertimos el valor simplificado en un String
            derivada =j.toString(simp);
        }catch(ParseException e){
            JOptionPane.showMessageDialog(null, "Función Incorrecta!", "ERROR", 0);
        }
        return derivada;
    }
   
    public boolean isNum(String num){
        char []ar = num.toCharArray();
        for(int i = 0; i < ar.length; i++){
            if(Character.isLetter(ar[i]))
                return false;
        }
        return true;
    }
   
    public double Redondear(double numero,int digitos){
        int cifras=(int) Math.pow(10,digitos);
        return Math.rint(numero*cifras)/cifras;
    }
   
    public int iteraciones(){
        String m = JOptionPane.showInputDialog("Ingrese el número maximo de Iteraciones:");
        while (!isNum(m) && Integer.parseInt(m) < 1) {
            JOptionPane.showMessageDialog(null, "Opción Incorrecta!", "ERROR", 0);
            m = JOptionPane.showInputDialog("Ingrese el número maximo de Iteraciones:");
        }
        return Integer.parseInt(m);
    }
   
    public double tolerancia(){
        String m = JOptionPane.showInputDialog("Ingrese el número maximo de Tolerancia:");
        while (!isNum(m) && Double.parseDouble(m) < 0) {
            JOptionPane.showMessageDialog(null, "Opción Incorrecta!", "ERROR", 0);
            m = JOptionPane.showInputDialog("Ingrese el número maximo de Tolerancia:");
        }
        return Double.parseDouble(m);
    }
   
    public int menu(){
        String m = JOptionPane.showInputDialog("Que método de Paro desea utilizar:\n1.- Iteraciones"
                + "\n2.- Tolerancia\nSeleccione una Opción:");
        while (!isNum(m) && (Integer.parseInt(m) != 1 || Integer.parseInt(m) != 2)){
            JOptionPane.showMessageDialog(null, "Opción Incorrecta!", "ERROR", 0);
            m = JOptionPane.showInputDialog("Que método de Paro desea utilizar:\n1.- Iteraciones"
                + "\n2.- Tolerancia\nSeleccione una Opción:");
        }
        return Integer.parseInt(m);
    }
   
    public int decimales(){
        String d = JOptionPane.showInputDialog("Ingrese el número de decimales que desea:");
        while (!isNum(d) && Integer.parseInt(d) < 1) {
            JOptionPane.showMessageDialog(null, "Opción Incorrecta!", "ERROR", 0);
            d = JOptionPane.showInputDialog("Ingrese el número de decimales que desea:");
        }
        return Integer.parseInt(d);
    }
}
TOP

Related Classes of metodosnumericos.Funcion

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.