public static IntegrationFunction parse(String string) throws InvalidIntegralException { variablesNames = new ArrayList<String>(); countVariables(string); try { if (variablesNames.size() == 0) { return new ConstantFunction(Double.parseDouble(string)); } ExpressionBuilder builder = new ExpressionBuilder(string); builder.withVariableNames("x", "y", "z"); final Calculable calc = builder.build(); IntegrationFunction function = new IntegrationFunction() { @Override public double evaluate(double... args) { if (args.length == 1) { return calc.calculate(args[0], 0, 0); } else if (args.length == 2) { return calc.calculate(args[0], args[1], 0); } else { return calc.calculate(args); } } }; return function; } catch (UnknownFunctionException e) { throw new InvalidIntegralException(e); } catch (UnparsableExpressionException e) { throw new InvalidIntegralException(e); } }
/* * Sets the actual expression string for this expression */ private void setExpressions(String start, String end) { startBuilder = new ExpressionBuilder(start); endBuilder = new ExpressionBuilder(end); for (String n : getAllSymbols()) { startBuilder.withVariable(new Variable(n)); endBuilder.withVariable(new Variable(n)); } }