Changeset 2808 in Sophya for trunk/SophyaLib/NTools/integ.cc


Ignore:
Timestamp:
Jun 14, 2005, 1:25:05 PM (20 years ago)
Author:
ansari
Message:

MAJ documentation - Reza 14/6/2005

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaLib/NTools/integ.cc

    r2615 r2808  
    1010//     utilisant le (1)
    1111
    12 //++
    13 // Class        Integrator
    14 // Lib          Outils++
    15 // include      integ.h
    16 //
    17 //      Classe abstraite d'intégration numérique 1D.
    18 //      On fournit une fonction double f(double) au constructeur, ou
    19 //      une GeneralFunction avec des paramètres définis.
    20 //      L'objet Integrator est convertible en valeur double qui est la valeur
    21 //      de l'intégrale. Diverses méthodes permettent de choisir des options
    22 //      de calcul, et ces méthodes retournent une référence sur l'objet, pour
    23 //      permettre une notation chaînée.
    24 //--
    25 //++
    26 // Links        Implementations
    27 // TrpzInteg
    28 // GLInteg
    29 //--
    30 
    31 //++
    32 // Titre        Constructeurs
    33 //--
    34 
    35 //++
     12/*!
     13  \ingroup NTools
     14  \class SOPHYA::Integrator
     15
     16  \brief Classe abstraite d'intégration numérique 1D.
     17
     18  On fournit une fonction double f(double) au constructeur, ou
     19  une GeneralFunction avec des paramètres définis.
     20  L'objet Integrator est convertible en valeur double qui est la valeur
     21  de l'intégrale. Diverses méthodes permettent de choisir des options
     22  de calcul, et ces méthodes retournent une référence sur l'objet, pour
     23  permettre une notation chaînée.
     24
     25  \sa TrpzInteg GLInteg
     26*/
     27
     28//!  Constructeur par défaut. L'objet n'est pas utilisable en l'état.
    3629Integrator::Integrator()
    37 //
    38 //      Constructeur par défaut. L'objet n'est pas utilisable en l'état.
    39 //--
    40 
    4130: mFunc(NULL), mGFF(NULL), mGFFParm(NULL),
    4231  mNStep(50), mDX(-1), mReqPrec(-1),
     
    4433{}
    4534
    46 //++
     35//! Constructeur à partir de la fonction double->double, et des bornes d'intégration.
    4736Integrator::Integrator(FUNC f, double xmin, double xmax)
    48 //
    49 //      Constructeur à partir de la fonction double->double, et des
    50 //      bornes d'intégration.
    51 //--
    5237: mFunc(f), mGFF(NULL), mGFFParm(NULL),
    5338  mNStep(50), mDX(-1), mReqPrec(-1),
     
    5540{}
    5641
     42//! Constructeur à partir de la fonction double->double, et des bornes d'intégration.
    5743Integrator::Integrator(fun f, double xmin, double xmax)
    58 //
    59 //      Constructeur à partir de la fonction double->double, et des
    60 //      bornes d'intégration.
    61 //--
    6244: mFunc(new Function(f)), mGFF(NULL), mGFFParm(NULL),
    6345  mNStep(50), mDX(-1), mReqPrec(-1),
     
    6648
    6749
    68 //++
     50/*!
     51  Constructeur sans spécifier les bornes. Elles sont positionnées
     52  à [0,1], et on pourra les modifier plus tard.
     53*/
    6954Integrator::Integrator(FUNC f)
    70 //
    71 //      Constructeur sans spécifier les bornes. Elles sont positionnées
    72 //      à [0,1], et on pourra les modifier plus tard.
    73 //--
    7455: mFunc(f), mGFF(NULL), mGFFParm(NULL),
    7556  mNStep(50), mDX(-1), mReqPrec(-1),
     
    7758{}
    7859
    79 //++
     60/*!
     61  Constructeur sans spécifier les bornes. Elles sont positionnées
     62  à [0,1], et on pourra les modifier plus tard.
     63*/
    8064Integrator::Integrator(fun f)
    81 //
    82 //      Constructeur sans spécifier les bornes. Elles sont positionnées
    83 //      à [0,1], et on pourra les modifier plus tard.
    84 //--
    8565: mFunc(new Function(f)), mGFF(NULL), mGFFParm(NULL),
    8666  mNStep(50), mDX(-1), mReqPrec(-1),
     
    8868{}
    8969
    90 //++
     70/*!
     71  Constructeur à partir d'une GeneralFunction. La fonction doit être une
     72  fonction de une variable, et on fournit les valeurs des paramètres ainsi
     73  que les bornes d'intégration.
     74*/
    9175Integrator::Integrator(GeneralFunction* gff, double* par, double xmin, double xmax)
    92 //
    93 //      Constructeur à partir d'une GeneralFunction. La fonction doit être une
    94 //      fonction de une variable, et on fournit les valeurs des paramètres ainsi
    95 //      que les bornes d'intégration.
    96 //--
    9776: mFunc(NULL), mGFF(gff), mGFFParm(par),
    9877  mNStep(50), mDX(-1), mReqPrec(-1),
     
    10281}
    10382
    104 //++
     83/*!
     84  Constructeur à partir d'une GeneralFunction. La fonction doit être une
     85  fonction de une variable, et on fournit les valeurs des paramètres.
     86  On ne spécifie pas les bornes. Elles sont positionnées
     87  à [0,1], et on pourra les modifier plus tard.
     88*/
    10589Integrator::Integrator(GeneralFunction* gff, double* par)
    106 //
    107 //      Constructeur à partir d'une GeneralFunction. La fonction doit être une
    108 //      fonction de une variable, et on fournit les valeurs des paramètres.
    109 //      On ne spécifie pas les bornes. Elles sont positionnées
    110 //      à [0,1], et on pourra les modifier plus tard.
    111 //--
    11290: mFunc(NULL), mGFF(gff), mGFFParm(par),
    11391  mNStep(50), mDX(-1), mReqPrec(-1),
     
    12098{if(mFunc) delete mFunc;}
    12199
    122 //++
    123 // Titre        Méthodes
    124 //--
    125 
    126 //++
     100/*!
     101  \brief Spécifie le nombre de pas pour l'intégration numérique.
     102 
     103  La signification peut dépendre de la méthode d'intégration.
     104*/
    127105Integrator&
    128106Integrator::NStep(int n)
    129 //
    130 //      Spécifie le nombre de pas pour l'intégration numérique.
    131 //      La signification peut dépendre de la méthode d'intégration.
    132 //--
    133107{
    134108  mNStep = n;
     
    138112}
    139113
    140 //++
     114/*!
     115  \brief Spécifie le nombre de pas pour l'intégration numérique.
     116 
     117  La signification peut dépendre de la méthode d'intégration.
     118*/
    141119Integrator&
    142120Integrator::DX(double d)
    143 //
    144 //      Spécifie le pas d'intégration.
    145 //      La signification peut dépendre de la méthode d'intégration.
    146 //--
    147121{
    148122  mDX = d;
     
    152126}
    153127
    154 //++
     128/*!
     129  \brief Spécifie la précision souhaitée.
     130
     131  La signification peut dépendre de la méthode d'intégration.
     132  Non disponible dans toutes les méthodes d'intégration.
     133*/
    155134Integrator&
    156135Integrator::ReqPrec(double p)
    157 //
    158 //      Spécifie la précision souhaitée.
    159 //      La signification peut dépendre de la méthode d'intégration.
    160 //      Non disponible dans toutes les méthodes d'intégration.
    161 //--
    162136{
    163137  DBASSERT( !"Pas encore implemente !");
     
    168142}
    169143
    170 //++
     144//! Spécifie les bornes de l'intégrale.
    171145Integrator&
    172146Integrator::Limits(double xmin, double xmax)
    173 //
    174 //      Spécifie les bornes de l'intégrale.
    175 //--
    176147{
    177148  mXMin = xmin;
     
    181152}
    182153
    183 //++
     154//! Spécifie la fonction à intégrer, sous forme double f(double).
    184155Integrator&
    185156Integrator::Func(FUNC f)
    186 //
    187 //      Spécifie la fonction à intégrer, sous forme double f(double).
    188 //--
    189157{
    190158  mFunc = f;
     
    195163}
    196164
    197 //++
     165/*!
     166  \brief Spécifie la fonction à intégrer, sous forme de GeneralFunction
     167  à une variable, et les paramètres sont fournis.
     168*/
    198169Integrator&
    199170Integrator::Func(GeneralFunction* gff, double* par)
    200 //
    201 //      Spécifie la fonction à intégrer, sous forme de GeneralFunction
    202 //      à une variable, et les paramètres sont fournis.
    203 //--
    204171{
    205172  mGFF = gff;
     
    234201}
    235202
    236 //++
    237 // Class        TrpzInteg
    238 // Lib          Outils++
    239 // include      integ.h
    240 //
    241 //      Classe d'intégration par la méthode des trapèzes.
    242 //      Voir Integrator pour les méthodes. Le nombre de pas
    243 //      est le nombre de trapèze, le pas d'intégration est
    244 //      la largeur des trapèzez. Impossible de demander une
    245 //      précision.
    246 //
    247 //--
    248 //++
    249 // Links        Parents
    250 // Integrator
    251 //--
    252 
    253 //++
    254 // Titre        Constructeurs
    255 //      Voir Integrator pour les détails.
    256 //--
    257 
    258 //++
     203/*!
     204  \ingroup NTools
     205  \class SOPHYA::TrpzInteg
     206
     207  \brief Implementation de Integrator par la methode des trapezes.
     208 
     209  Classe d'intégration par la méthode des trapèzes.
     210  Voir Integrator pour les méthodes. Le nombre de pas
     211  est le nombre de trapèze, le pas d'intégration est
     212  la largeur des trapèzez. Impossible de demander une
     213  précision.
     214 
     215  \sa SOPHYA::Integrator
     216*/
     217
     218
    259219TrpzInteg::TrpzInteg()
    260 //
    261 //--
    262 {}
    263 
    264 //++
     220{}
     221
    265222TrpzInteg::TrpzInteg(FUNC f, double xmin, double xmax)
    266 //
    267 //--
    268223: Integrator(f, xmin, xmax)
    269224{}
    270 //++
     225
    271226TrpzInteg::TrpzInteg(fun f, double xmin, double xmax)
    272 //
    273 //--
    274227: Integrator(f, xmin, xmax)
    275228{}
    276229
    277 //++
    278230TrpzInteg::TrpzInteg(FUNC f)
    279 //
    280 //--
    281231: Integrator(f)
    282232{}
    283233
    284234TrpzInteg::TrpzInteg(fun f)
    285 //
    286 //--
    287235: Integrator(f)
    288236{}
    289237
    290 //++
    291238TrpzInteg::TrpzInteg(GeneralFunction* gff, double* par, double xmin, double xmax)
    292 //
    293 //--
    294239: Integrator(gff, par, xmin, xmax)
    295240{}
    296241
    297 //++
    298242TrpzInteg::TrpzInteg(GeneralFunction* gff, double* par)
    299 //
    300 //--
    301243: Integrator(gff, par)
    302244{}
     
    305247{}
    306248
     249//! Return the value of the integral.
    307250double
    308251TrpzInteg::Value()
     
    329272
    330273
    331 //++
    332 // Class        GLInteg
    333 // Lib          Outils++
    334 // include      integ.h
    335 //
    336 //      Classe d'intégration par la méthode de Gauss-Legendre.
    337 //      Voir Integrator pour les méthodes.
    338 //      Pour le moment, nstep est l'ordre de la méthode.
    339 //      Il est prévu un jour de spécifier l'ordre, et que NStep
    340 //      découpe en intervalles sur chacun desquels on applique GL.
    341 //      Le principe de la méthode est de calculer les valeurs de la
    342 //      fonction aux zéros des polynomes de Legendre. Avec les poids
    343 //      qui vont bien, GL d'ordre n est exacte pour des polynomes de
    344 //      degré <= 2n+1 (monome le + haut x^(2*n-1).
    345 //      Impossible de demander une précision donnée.
    346 //
    347 //--
    348 //++
    349 // Links        Parents
    350 // Integrator
    351 //--
    352 
    353 //++
    354 // Titre        Constructeurs
    355 //      Voir Integrator pour les détails.
    356 //--
    357 
    358 
    359 
    360 
    361 //++
     274/*!
     275  \ingroup NTools
     276  \class SOPHYA::GLInteg
     277 
     278  \brief Implementation de Integrator par la methode de Gauss-Legendre.
     279
     280  Classe d'intégration par la méthode de Gauss-Legendre.
     281  Voir Integrator pour les méthodes.
     282  Pour le moment, nstep est l'ordre de la méthode.
     283  Il est prévu un jour de spécifier l'ordre, et que NStep
     284  découpe en intervalles sur chacun desquels on applique GL.
     285  Le principe de la méthode est de calculer les valeurs de la
     286  fonction aux zéros des polynomes de Legendre. Avec les poids
     287  qui vont bien, GL d'ordre n est exacte pour des polynomes de
     288  degré <= 2n+1 (monome le + haut x^(2*n-1).
     289  Impossible de demander une précision donnée.
     290
     291  \sa SOPHYA::Integrator
     292
     293  \warning statut EXPERIMENTAL , NON TESTE
     294*/
     295
     296
     297
    362298GLInteg::GLInteg()
    363 //
    364 //--
    365299: mXPos(NULL), mWeights(NULL)
    366300{}
    367301
    368302
    369 //++
    370303GLInteg::GLInteg(FUNC f, double xmin, double xmax)
    371 //
    372 //--
    373304: Integrator(f, xmin, xmax), mXPos(NULL), mWeights(NULL), mOrder(8)
    374305{
    375306  NStep(1);
    376307}
     308
    377309GLInteg::GLInteg(fun f, double xmin, double xmax)
    378 //
    379 //--
    380310: Integrator(f, xmin, xmax), mXPos(NULL), mWeights(NULL), mOrder(8)
    381311{
    382312  NStep(1);
    383313}
    384 //++
     314
    385315GLInteg::GLInteg(FUNC f)
    386 //
    387 //--
    388316: Integrator(f), mXPos(NULL), mWeights(NULL), mOrder(8)
    389317{
    390318  NStep(1);
    391319}
     320
    392321GLInteg::GLInteg(fun f)
    393 //
    394 //--
    395322: Integrator(f), mXPos(NULL), mWeights(NULL), mOrder(8)
    396323{
     
    398325}
    399326
    400 //++
    401327GLInteg::GLInteg(GeneralFunction* gff, double* par, double xmin, double xmax)
    402 //
    403 //--
    404328: Integrator(gff, par, xmin, xmax), mXPos(NULL), mWeights(NULL), mOrder(8)
    405329{
     
    407331}
    408332
    409 //++
    410333GLInteg::GLInteg(GeneralFunction* gff, double* par)
    411 //
    412 //--
    413334: Integrator(gff, par), mXPos(NULL), mWeights(NULL), mOrder(8)
    414335{
     
    453374
    454375
     376//! Definit l'ordre de la methode d'integration Gauus-Legendre
    455377GLInteg&
    456378GLInteg::SetOrder(int order)
     
    462384
    463385
    464 
     386//! Retourne la valeur de l'integrale
    465387double
    466388GLInteg::Value()
     
    527449}
    528450
     451//! Imprime l'ordre et la valeur des poids sur cout
    529452void
    530453GLInteg::Print(int lp)
Note: See TracChangeset for help on using the changeset viewer.