KrisLibrary  1.0.0
realfunction.h
1 #ifndef MATH_REAL_FUNCTION_H
2 #define MATH_REAL_FUNCTION_H
3 
4 #include "function.h"
5 
6 namespace Math {
7 
8 //y=a*t+b
10 {
11 public:
12  LinearFunction(Real _a=One,Real _b=Zero) : a(_a),b(_b) {}
13  virtual std::string Label() const { return "<a*t+b>"; }
14  virtual Real Eval(Real t) { return a*t+b; }
15  virtual Real Deriv(Real t) { return a; }
16  virtual Real Deriv2(Real t) { return 0; }
17 
18  Real a,b;
19 };
20 
21 //y=1/t
23 {
24 public:
25  virtual std::string Label() const { return "<1/t>"; }
26  virtual Real Eval(Real t) { return One/t; }
27  virtual Real Deriv(Real t) { return -One/(t*t); }
28  virtual Real Deriv2(Real t) { return Two/(t*t*t); }
29 };
30 
31 //y=f(g(t))
33 {
34 public:
35  ComposeFunction(RealFunction* _f,RealFunction* _g) : f(_f), g(_g) {}
36  virtual std::string Label() const;
37  virtual void PreEval(Real t);
38  virtual Real Eval(Real t);
39  virtual Real Deriv(Real t);
40  virtual Real Deriv2(Real t);
41 
42  RealFunction *f,*g;
43  Real gt;
44 };
45 
46 //y=f(t)+g(t)
47 class AddFunction : public RealFunction
48 {
49 public:
50  AddFunction(RealFunction* _f,RealFunction* _g) : f(_f), g(_g) {}
51  virtual std::string Label() const;
52  virtual void PreEval(Real t);
53  virtual Real Eval(Real t);
54  virtual Real Deriv(Real t);
55  virtual Real Deriv2(Real t);
56 
57  RealFunction *f,*g;
58 };
59 
60 //y=f(t)*g(t)
61 class MulFunction : public RealFunction
62 {
63 public:
64  MulFunction(RealFunction* _f,RealFunction* _g) : f(_f), g(_g) {}
65  virtual std::string Label() const;
66  virtual void PreEval(Real t);
67  virtual Real Eval(Real t);
68  virtual Real Deriv(Real t);
69  virtual Real Deriv2(Real t);
70 
71  RealFunction *f,*g;
72  Real ft,gt;
73 };
74 
75 } //namespace Math
76 
77 #endif
Abstract base classes for function interfaces.
Definition: realfunction.h:22
Definition: realfunction.h:9
Definition: realfunction.h:61
A function from R to R.
Definition: function.h:42
Definition: realfunction.h:32
Contains all definitions in the Math package.
Definition: WorkspaceBound.h:12
Definition: realfunction.h:47