1 #ifndef MATH_FUNCTION_H 2 #define MATH_FUNCTION_H 5 #include <KrisLibrary/errors.h> 46 virtual std::string Label()
const {
return "<unknown R->R>"; }
47 virtual std::string VariableLabel()
const {
return "x"; }
48 virtual Real operator ()(Real t) { PreEval(t);
return Eval(t); }
49 virtual void PreEval(Real t) {}
50 virtual Real Eval(Real t) =0;
51 virtual Real Deriv(Real t) { FatalError(
"Deriv not defined in subclass of RealFunction");
return 0; }
52 virtual Real Deriv2(Real t) { FatalError(
"Deriv2 not defined in subclass of RealFunction");
return 0; }
59 virtual std::string Label()
const {
return "<unknown R2->R>"; }
60 virtual std::string VariableLabel(
int i)
const {
return (i==0?
"t":
"x"); }
61 virtual Real operator ()(Real t, Real x) { PreEval(t,x);
return Eval(t,x); }
62 virtual void PreEval(Real t, Real x) {}
63 virtual Real Eval(Real t, Real x) =0;
73 virtual std::string Label()
const {
return "<unknown R->Rn>"; }
74 virtual std::string Label(
int i)
const;
75 virtual std::string VariableLabel()
const {
return "t"; }
76 virtual int NumDimensions()
const { FatalError(
"NumDimensions() not defined in subclass of VectorFunction");
return -1; }
77 virtual void operator()(Real t,
Vector& x);
78 virtual void PreEval(Real t) {}
79 virtual void Eval(Real t,
Vector& x) =0;
80 virtual void Deriv(Real t,
Vector& dx) { FatalError(
"Deriv not defined in subclass of VectorFunction"); }
81 virtual void Deriv2(Real t,
Vector& ddx) { FatalError(
"Deriv2 not defined in subclass of VectorFunction"); }
101 virtual std::string Label()
const {
return "<unknown Rn->R>"; }
102 virtual std::string VariableLabel(
int i)
const;
103 virtual Real operator ()(
const Vector& x) { PreEval(x);
return Eval(x); }
104 virtual void PreEval(
const Vector& x) {}
105 virtual Real Eval(
const Vector& x) =0;
106 virtual void Gradient(
const Vector& x,
Vector& grad) { FatalError(
"Gradient not defined in subclass of ScalarFieldFunction"); }
107 virtual Real Gradient_i(
const Vector& x,
int i) { FatalError(
"Gradient_i not defined in subclass of ScalarFieldFunction");
return 0; }
108 virtual Real DirectionalDeriv(
const Vector& x,
const Vector& h);
109 virtual void Hessian(
const Vector& x,
Matrix& H) { FatalError(
"Hessian not defined in subclass of ScalarFieldFunction"); }
110 virtual Real Hessian_ij(
const Vector& x,
int i,
int j) { FatalError(
"Hessian_ij not defined in subclass of ScalarFieldFunction");
return 0; }
111 virtual Real DirectionalDeriv2(
const Vector& x,
const Vector& h);
138 virtual std::string Label()
const;
139 virtual std::string Label(
int i)
const;
140 virtual std::string VariableLabel(
int i)
const;
141 virtual int NumDimensions()
const { FatalError(
"NumDimensions() not defined in subclass of VectorFieldFunction");
return -1; }
142 virtual void operator ()(
const Vector& x,
Vector& v) { PreEval(x);Eval(x,v); }
143 virtual void PreEval(
const Vector& x) {}
145 virtual Real Eval_i(
const Vector& x,
int i);
146 virtual Real Jacobian_ij(
const Vector& x,
int i,
int j) { FatalError(
"Jacobian_ij() not defined in subclass of VectorFieldFunction");
return 0; }
147 virtual void Jacobian_i(
const Vector& x,
int i,
Vector& Ji);
148 virtual void Jacobian_j(
const Vector& x,
int j,
Vector& Jj);
151 virtual Real Divergence(
const Vector& x);
153 virtual void Hessian_i(
const Vector& x,
int i,
Matrix& Hi) { FatalError(
"Hessian_i() not defined in subclass of VectorFieldFunction"); }
154 virtual Real Hessian_ijk(
const Vector& x,
int i,
int j,
int k) { FatalError(
"Hessian_ijk() not defined in subclass of VectorFieldFunction");
return 0; }
161 virtual int NumDimensions()
const { FatalError(
"NumDimensions not defined in subclass of DiffEqFunction");
return -1; }
162 virtual void operator ()(Real t,
const Vector& y,
Vector& fy) { PreEval(t,y); Eval(t,y,fy); }
163 virtual void PreEval(Real t,
const Vector& y) {}
164 virtual void Eval(Real t,
const Vector& y,
Vector& fy) =0;
Common math typedefs, constants, functions.
A function from R^n to R^m.
Definition: function.h:134
A function from R to R.
Definition: function.h:42
A function from R^n to R.
Definition: function.h:97
Definition: function.h:55
A matrix over the field T.
Definition: function.h:10
Contains all definitions in the Math package.
Definition: WorkspaceBound.h:12
A vector over the field T.
Definition: function.h:9
Definition: function.h:157
A function from R to R^n, identical to RealFunction except a vector is returned.
Definition: function.h:69