00001 #ifndef __ATikhonovPhillipsSolver_H__ 00002 #define __ATikhonovPhillipsSolver_H__ 00003 00004 00032 #include <stdio.h> 00033 #include "AFloatMatrix.hpp" 00034 #include "FloatVector.hpp" 00035 00036 class ATikhonovPhillipsSolver 00037 { 00038 protected: 00039 00040 int kmax; 00041 00042 double alpha0; 00043 double q; 00044 00045 double delta; 00046 double t; 00047 00048 FloatVector* r; 00049 00050 protected: 00051 virtual bool check(AFloatMatrix* A, FloatVector* b, FloatVector* x); 00052 00053 public: 00054 ATikhonovPhillipsSolver(int iter= 10, double adelta=0.0001) 00055 {kmax=iter; r=0; alpha0=1.0; q=0.5; t=2.0; delta=adelta; } 00056 virtual ~ATikhonovPhillipsSolver(){} 00057 00058 // A * u = b 00059 virtual FloatVector* solve(AFloatMatrix* m, FloatVector* b, FloatVector* dest)=0; 00060 virtual FloatVector* solve(AFloatMatrix* m, FloatVector* b, bool factorisation=true, FloatVector* dest=0)=0; 00061 }; 00062 00063 #endif 00064