Main Page | Namespace List | Class List | File List | Namespace Members | Class Members | File Members

System-FIGL-Loeser.hpp

Go to the documentation of this file.
00001 // ----------------------------------------------------------------------------
00002 // VFIS 
00003 // ----------------------------------------------------------------------------
00004 // Verified Fredholm Integral Equation Solver
00005 // for linear Fredholm Integral Equations of the second kind
00006 // (Serial System Version)
00007 // ----------------------------------------------------------------------------
00008 // Verifizierter Integralgleichungsloeser 
00009 // fuer lineare Fredholmsche Integralgleichungen zweiter Art
00010 // (Serielle Systemversion)
00011 // ----------------------------------------------------------------------------
00012 // Copyright (c) 2004-2007 Markus Grimmer
00013 //
00014 // markus.grimmer@math.uni-wuppertal.de
00015 // ----------------------------------------------------------------------------
00016 
00017 // This file is part of the Verified Fredholm Integral Equation Solver VFIS.
00018 // 
00019 // VFIS is free software; you can redistribute it and/or modify
00020 // it under the terms of the GNU General Public License as published by
00021 // the Free Software Foundation; either version 2 of the License, or
00022 // (at your option) any later version.
00023 // 
00024 // VFIS is distributed in the hope that it will be useful,
00025 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00026 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00027 // GNU General Public License for more details.
00028 // 
00029 // You should have received a copy of the GNU General Public License
00030 // along with VFIS; if not, write to the Free Software
00031 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
00032 
00033 // ----------------------------------------------------------------------------
00034 // ----------------------------------------------------------------------------
00035 // ----------------------------------------------------------------------------
00036 
00043 #include <vector>
00044 #include <fstream>
00045 #include <ctime> 
00046 
00047 #include "interval.hpp"
00048 #include "ivector.hpp"
00049 #include "imatrix.hpp"
00050 
00051 using namespace std;
00052 using namespace cxsc;
00053 using namespace taylor;
00054 
00055 void start_clock(clock_t& t1);
00056 void print_time_used(clock_t t1, ostream& out);
00057 
00067 class IntegralSystemOperatorRG
00068 
00069 {
00070   private:
00074     vector<vector<ivector> > KSys0;
00078     ivector      SSys;
00082     ivector      SmidSys;
00083 
00084   public:
00085     IntegralSystemOperatorRG(const IntegralSystemOperatorRG&);
00086     IntegralSystemOperatorRG(vector<vector<ivector> >&, ivector&, ivector&);
00087     vector<itaylor> operator()(vector<itaylor>&, int, int,
00088                                imatrix&, imatrix&); 
00089 };
00090 
00091 // -----------------------------------------------------------------------------
00092 
00100 class IntegralGleichungsSystem
00101 {
00102   private:
00103 
00107     typedef dim2taylor (*KFkt)(dim2taylor_vector&);
00111     typedef itaylor (*ReFkt)(itaylor&);
00115     vector<vector<KFkt> > KernFktSys0;
00119     vector<ReFkt> RechtsFktSys0;
00120     
00125     vector<vector<dim2taylor> > KpointSys0;
00126     vector<vector<dim2taylor> > KintSys0;
00127     vector<vector<dim2taylor> > KernSys0;
00129 
00133     vector<itaylor> RSpointSys0;
00134     vector<itaylor> RSintSys0;
00135     vector<itaylor> RSSys0;
00137 
00141     interval     Sglob, Tglob, RS_Sglob;
00142     ivector      SSys, TSys, SmidSys, TmidSys;
00143     ivector      RS_SSys, RS_SmidSys;
00145 
00148     ivector         ILGS_Lsg;
00152     vector<itaylor> Lsg0;
00156     int sysord;
00160     int ord;   
00164     imatrix BasisInt_a;
00168     imatrix BasisInt_b;
00172     vector<vector<ivector> > RestkernSys0;
00173 
00174   public:
00175 
00181     vector<vector<dim2taylor> >& getKern() { return KernSys0; }
00182     dim2taylor& getKern(int i, int j) { return (KernSys0.at(i)).at(j); }
00183     vector<itaylor>& getRS()          { return RSSys0; }
00184     itaylor& getRS(int i)             { return RSSys0.at(i); }
00185     ivector& getSSys()      { return SSys; }    
00186     ivector& getTSys()      { return SSys; }    
00187     ivector& getRS_SSys()   { return RS_SSys; }
00188     interval getS()         { return Sglob; }
00189     interval getS(int i)    { return SSys[i+1]; }  
00190     interval getSmid(int i) { return SmidSys[i+1]; }
00191     interval getT()         { return Tglob; }
00192     interval getT(int i)    { return TSys[i+1]; }   
00193     interval getTmid(int i) { return TmidSys[i+1]; }
00194     interval getRS_S()        { return RS_Sglob; }
00195     vector<itaylor>& getLsg() { return Lsg0; }
00196     itaylor& getLsg(int i)    { return Lsg0.at(i); }
00198   
00199     IntegralGleichungsSystem (int sysord=0, int ord=0);
00200     IntegralGleichungsSystem (KFkt,interval, interval,
00201                               ReFkt, interval, int, int, ostream&);  
00202 
00203     void Einschliessung_berechnen(ostream&);
00204     void SystemLoesungsansatz(vector<vector<vector<itaylor> > >&,
00205                               vector<itaylor>&, int, ostream&);
00206     void SystemLoesung_bilden(vector<vector<vector<itaylor> > >&,
00207                               vector<itaylor>&, int, ostream&);
00208     real Genauigkeit(int);
00209 
00210     void Export(string dest, string fname, string varname="IGLSys_Lsg");
00211     void Export_Plot(string dest, string fname, int steps, 
00212                      string varname="IGLSys_Lsg", 
00213                      string plottitle="Integral Equation System Solution Enclosure");
00214 
00215     friend ostream& operator<< (ostream&, IntegralGleichungsSystem&);
00216 };

Generated on Wed Apr 4 18:16:37 2007 for VFIS by  doxygen 1.4.4