/** * Sets argument value. * * @param argumentName the argument name * @param argumentValue the argument value */ public void setArgumentValue(String argumentName, double argumentValue) { int argumentIndex = getArgumentIndex(argumentName); if (argumentIndex != NOT_FOUND) argumentsList.get(argumentIndex).setArgumentValue(argumentValue); } /**
/** * Calculates function f(x0) (given as expression) assigning Argument x = x0; * * * @param f the expression * @param x the argument * @param x0 the argument value * * @return f.calculate() * * @see Expression */ public static final double getFunctionValue(Expression f, Argument x, double x0) { x.setArgumentValue(x0); return f.calculate(); } /**
/** * Forward difference(h) operator (at the current value of the argument x) * * @param f the expression * @param h the difference * @param x the argument name * * @return Forward difference(h) value calculated at at the current value of the argument x. * * @see Expression * @see Argument */ public static final double forwardDifference(Expression f, double h, Argument x) { double xb = x.getArgumentValue(); if (Double.isNaN(xb)) return Double.NaN; double fv = f.calculate(); x.setArgumentValue(xb + h); double delta = f.calculate() - fv; x.setArgumentValue(xb); return delta; } /**
/** * Backward difference(h) operator (at the current value of the argument x) * * @param f the expression * @param h the difference * @param x the argument name * * @return Backward difference(h) value calculated at at the current value of the argument x. * * @see Expression * @see Argument */ public static final double backwardDifference(Expression f, double h, Argument x) { double xb = x.getArgumentValue(); if (Double.isNaN(xb)) return Double.NaN; double fv = f.calculate(); x.setArgumentValue(xb - h); double delta = fv - f.calculate(); x.setArgumentValue(xb); return delta; } /**
/** * Forward difference(1) operator (at current value of argument x) * * @param f the expression * @param x the argument name * * @return Forward difference(1) value calculated at the current value of argument x. * * @see Expression * @see Argument */ public static final double forwardDifference(Expression f, Argument x) { double xb = x.getArgumentValue(); if (Double.isNaN(xb)) return Double.NaN; double fv = f.calculate(); x.setArgumentValue(xb + 1); double delta = f.calculate() - fv; x.setArgumentValue(xb); return delta; } /**
/** * Backward difference(1) operator (at current value of argument x) * * @param f the expression * @param x the argument name * * @return Backward difference(1) value calculated at the current value of argument x. * * @see Expression * @see Argument */ public static final double backwardDifference(Expression f, Argument x) { double xb = x.getArgumentValue(); if (Double.isNaN(xb)) return Double.NaN; double fv = f.calculate(); x.setArgumentValue(xb - 1); double delta = fv - f.calculate(); x.setArgumentValue(xb); return delta; } /**
/** * Forward difference(h) operator (at x = x0) * * @param f the expression * @param h the difference * @param x the argument name * @param x0 x = x0 * * @return Forward difference(h) value calculated at x0. * * @see Expression * @see Argument */ public static final double forwardDifference(Expression f, double h, Argument x, double x0) { if (Double.isNaN(x0)) return Double.NaN; double xb = x.getArgumentValue(); double delta = mXparser.getFunctionValue(f, x, x0+h) - mXparser.getFunctionValue(f, x, x0); x.setArgumentValue(xb); return delta; } /**
/** * Backward difference(1) operator (at x = x0). * * @param f the expression * @param x the argument name * @param x0 x = x0 * * @return Backward difference value calculated at x0. * * @see Expression * @see Argument */ public static final double backwardDifference(Expression f, Argument x, double x0) { if (Double.isNaN(x0)) return Double.NaN; double xb = x.getArgumentValue(); double delta = mXparser.getFunctionValue(f, x, x0) - mXparser.getFunctionValue(f, x, x0-1); x.setArgumentValue(xb); return delta; } /**
/** * Forward difference(1) operator (at x = x0) * * @param f the expression * @param x the argument name * @param x0 x = x0 * * @return Forward difference(1) value calculated at x0. * * @see Expression * @see Argument */ public static final double forwardDifference(Expression f, Argument x, double x0) { if (Double.isNaN(x0)) return Double.NaN; double xb = x.getArgumentValue(); double delta = mXparser.getFunctionValue(f, x, x0+1) - mXparser.getFunctionValue(f, x, x0); x.setArgumentValue(xb); return delta; } /**
@Override protected void testScenario() { Argument x = new Argument("x"); Argument y = new Argument("y"); Function f = new Function("f(x,y)=3*x+4*y"); Expression e = new Expression(test.exprStr, f, x, y); for (int i = 0; i <= super.iterNum; i++) { if (mXparser.isCurrentCalculationCancelled()) break; x.setArgumentValue(i); y.setArgumentValue(i); e.calculate(); } } }
/** * Backward difference(h) operator (at x = x0) * * @param f the expression * @param h the difference * @param x the argument name * @param x0 x = x0 * * @return Backward difference(h) value calculated at x0. * * @see Expression * @see Argument */ public static final double backwardDifference(Expression f, double h, Argument x, double x0) { if (Double.isNaN(x0)) return Double.NaN; double xb = x.getArgumentValue(); double delta = mXparser.getFunctionValue(f, x, x0) - mXparser.getFunctionValue(f, x, x0-h); x.setArgumentValue(xb); return delta; } /**
@Override protected void testScenario() { Argument x = new Argument("x"); Expression e = new Expression(test.exprStr, x); for (int i = 0; i <= super.iterNum; i++) { if (mXparser.isCurrentCalculationCancelled()) break; x.setArgumentValue(i); e.calculate(); } } }
x.setArgumentValue(5); mXparser.consolePrintln(x.getArgumentName() + " = " + x.getArgumentValue()); x.setArgumentValue(1); mXparser.consolePrintln("x = " + x.getArgumentValue() + ", " + e20.getExpressionString() + " = " + e20.calculate()); x.setArgumentValue(5); mXparser.consolePrintln("x = " + x.getArgumentValue() + ", " + e20.getExpressionString() + " = " + e20.calculate()); x.setArgumentValue(10); mXparser.consolePrintln("x = " + x.getArgumentValue() + ", " + e20.getExpressionString() + " = " + e20.calculate()); Expression e21 = new Expression("2*sum(x, -1, 1, d*sqrt(1-x^2), d)", d); mXparser.consolePrintln("d = " + d.getArgumentValue() + ", " + e21.getExpressionString() + " = " + e21.calculate()); d.setArgumentValue(0.01); mXparser.consolePrintln("d = " + d.getArgumentValue() + ", " + e21.getExpressionString() + " = " + e21.calculate()); x.setArgumentValue(0); Expression e23 = new Expression("der-(abs(x), x)", x); mXparser.consolePrintln("x = " + x.getArgumentValue() + ", " + e23.getExpressionString() + " = " + e23.calculate()); x.setArgumentValue(1); x.setArgumentValue(1); mXparser.consolePrintln("x = " + x.getArgumentValue() + ", " + e25.getExpressionString() + " = " + e25.calculate()); x.setArgumentValue(5); mXparser.consolePrintln("x = " + x.getArgumentValue() + ", " + e25.getExpressionString() + " = " + e25.calculate()); x.setArgumentValue(10); mXparser.consolePrintln("x = " + x.getArgumentValue() + ", " + e25.getExpressionString() + " = " + e25.calculate()); x.setArgumentValue(2);
Argument a = new Argument("a"); Argument b = new Argument("b"); a.setArgumentValue(1); b.setArgumentValue(5); expStr = "if(a=6,-b,15)"; mXparser.consolePrint(expStr + " ...... ");