00001 00011 #ifndef _DirectionalUnivariateAdapter_h 00012 #define _DirectionalUnivariateAdapter_h 00013 00014 00015 // SYSTEM INCLUDES 00016 // 00017 00018 // PROJECT INCLUDES 00019 // 00020 00021 // LOCAL INCLUDES 00022 // 00023 #include "UnivariateFunction.h" 00024 00025 // FORWARD REFERENCES 00026 // 00027 00028 00029 class DirectionalUnivariateAdapter 00030 : public UnivariateFunction 00031 { 00032 public: 00033 // LIFECYCLE 00034 00042 DirectionalUnivariateAdapter(const FunctionBase& function); 00043 00044 // Nie może być protected, bo się nie skompiluje przez ten wyżej 00045 DirectionalUnivariateAdapter(const DirectionalUnivariateAdapter& from); 00046 00057 DirectionalUnivariateAdapter(const FunctionBase& function, 00058 const ColumnVector& x, 00059 const ColumnVector& d); 00060 00061 00064 virtual ~DirectionalUnivariateAdapter(void); 00065 00066 00067 // OPERATORS 00068 00069 // OPERATIONS 00070 00072 virtual std::auto_ptr<FunctionBase> Clone() const; 00073 00074 // ACCESS 00075 00082 void SetDirection(const ColumnVector& x, 00083 const ColumnVector& d); 00084 00087 unsigned EvaluationCount() const; 00088 00089 // TODO: poprawić opis, jak ToString zostanie skończone 00094 virtual wxString ToString(bool full = true) const; 00095 00098 virtual VariableNames PresentVariables() const; 00099 // INQUIRY 00100 00101 // /** Sprawdza, czy funkcja jest różniczkowalna. 00102 // */ 00103 // virtual bool IsDifferentiable() const; 00104 00107 virtual bool ContainsUnknown(const VariableNames& variables) const; 00108 00109 protected: 00110 00119 virtual double DoEvaluateNoThrow(const ColumnVector& point) const 00120 throw(); 00121 00122 virtual double DoEvaluate(const ColumnVector& point) const 00123 throw(EvaluationError); 00124 00125 const FunctionBase& mFunction; 00126 ColumnVector mBase; 00127 ColumnVector mDirection; 00128 private: 00129 }; 00130 00131 // INLINE METHODS 00132 // 00133 00134 // EXTERNAL REFERENCES 00135 // 00136 00137 #endif // _DirectionalUnivariateAdapter_h