00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
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 };