01: /*************************************************************************
02: * *
03: * 1) This source code file, in unmodified form, and compiled classes *
04: * derived from it can be used and distributed without restriction, *
05: * including for commercial use. (Attribution is not required *
06: * but is appreciated.) *
07: * *
08: * 2) Modified versions of this file can be made and distributed *
09: * provided: the modified versions are put into a Java package *
10: * different from the original package, edu.hws; modified *
11: * versions are distributed under the same terms as the original; *
12: * and the modifications are documented in comments. (Modification *
13: * here does not include simply making subclasses that belong to *
14: * a package other than edu.hws, which can be done without any *
15: * restriction.) *
16: * *
17: * David J. Eck *
18: * Department of Mathematics and Computer Science *
19: * Hobart and William Smith Colleges *
20: * Geneva, New York 14456, USA *
21: * Email: eck@hws.edu WWW: http://math.hws.edu/eck/ *
22: * *
23: *************************************************************************/package edu.hws.jcm.data;
24:
25: /**
26: * An Expression represents a mathematical expression such as "x+1" or
27: * "3" or "sin(x*ln(x)-3*abs(x/4))". An expression has a value, which
28: * can depend on the values of variables that occur in the expression.
29: * An expression can be differenetiated with respect to a variable. It has
30: * a print string representation. This interface is implemented by
31: * the classes Constant, Variable, and ExpressionProgram, for example.
32: * The Expression interface
33: * represents all the properties of expressions that you are likely to need
34: * to know about, unless you want to write a new kind of ExpressionCommand.
35: */
36: public interface Expression extends Value {
37:
38: // The method "public double getVal()" is inherited from the Value interface.
39: // It returns the current value of this expression.
40:
41: /**
42: * Compute and return the value of this expression. If cases is non-null,
43: * then data is stored in cases that can be used to check for possible
44: * discontinuities between one evaluation and the next. See the class
45: * Cases for more information.
46: */
47: public double getValueWithCases(Cases cases);
48:
49: /**
50: * Return an Expression that represents the derivative of
51: * this expression with respect to the variable wrt.
52: * (Note that if the expression contains other variables
53: * besides wrt, this is actually a partial derivative.)
54: */
55: public Expression derivative(Variable wrt);
56:
57: /**
58: * Checks whether the expression has any dependence on the variable x.
59: */
60: public boolean dependsOn(Variable x);
61:
62: /**
63: * Get a print string representation of this expression. (Of course,
64: * every object defines toString(). It is included here to remind you
65: * that classes that implement the Expression interface should have
66: * a print string representation that looks like a mathematical
67: * expression.)
68: */
69: public String toString();
70:
71: }
|