00001 #ifndef __F_IterativeLS_H__
00002 #define __F_IterativeLS_H__
00003
00004
00029 #include <stdio.h>
00030 #include "AbsFLinearSolver.hpp"
00031
00032
00033 class F_IterativeLS : public AbsFLinearSolver
00034 {
00035 protected:
00036
00037 int maxIter;
00038 double eps;
00039
00040 bool converge;
00041
00042 protected:
00043
00044 virtual FloatVector* singleSolve(AFloatMatrix* A, FloatVector* b, FloatVector* x=0)=0;
00045
00046 public:
00047 F_IterativeLS(int maxIterations, double epsilon=1.0e-4){maxIter=maxIterations; eps=epsilon;}
00048 virtual ~F_IterativeLS(){}
00049
00050
00051 virtual FloatVector* solve(AFloatMatrix* A, FloatVector* b, bool factorisation, FloatVector* dest)
00052 { return solve(A, b, dest); }
00053
00054 virtual FloatVector* solve(AFloatMatrix* A, FloatVector* b, FloatVector* dest)
00055 {
00056 converge=false;
00057
00058 for(int i=0; i<maxIter; i++)
00059 {
00060 dest= singleSolve(A, b, dest);
00061
00062 if(converge == true)
00063 break;
00064 }
00065 return dest;
00066 }
00067 };
00068
00069 #endif
00070