Changeset 926 in Sophya for trunk/SophyaLib/NTools/fct1dfit.cc


Ignore:
Timestamp:
Apr 13, 2000, 8:39:39 PM (25 years ago)
Author:
ansari
Message:

documentation cmv 13/4/00

File:
1 edited

Legend:

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

    r514 r926  
    1818
    1919/////////////////////////////////////////////////////////////////
    20 //++
    21 // Module       Classes de fonctions 1D
    22 // Lib  Outils++
    23 // include      fct1dfit.h
    24 //--
    25 /////////////////////////////////////////////////////////////////
    26 
    27 /////////////////////////////////////////////////////////////////
    28 //++
    29 // Titre        Gauss1DPol
    30 // \index{Gauss1DPol}
    31 //
    32 //|  Gaussienne+polynome:
    33 //|  Si polcenter=true: xc=(x-par[1]), sinon xc=x
    34 //|  f(x) = par[0]*exp[-0.5*( (x-par[1]) / par[2] )**2 ]
    35 //|        +par[3] + par[4]*xc + .... + par[3+NDegPol]*xc**NDegPol
    36 //|  NDegPol = degre du polynome, si <0 pas de polynome
    37 //--
    38 /////////////////////////////////////////////////////////////////
    39 
    40 //++
     20/*!
     21  \class SOPHYA::Gauss1DPol
     22  \ingroup NTools
     23  \anchor Gauss1DPol
     24  \verbatim
     25     Gaussienne+polynome:
     26     Si polcenter=true: xc=(x-par[1]), sinon xc=x
     27     f(x) = par[0]*exp[-0.5*( (x-par[1]) / par[2] )**2 ]
     28           +par[3] + par[4]*xc + .... + par[3+NDegPol]*xc**NDegPol
     29     NDegPol = degre du polynome, si <0 pas de polynome
     30  \endverbatim
     31*/
    4132Gauss1DPol::Gauss1DPol(unsigned int ndegpol,bool polcenter)
    42 //
    43 //      Createur.
    44 //--
    4533: GeneralFunction(1,ndegpol+4), NDegPol(ndegpol), PolCenter(polcenter)
    4634{
    4735}
    4836
    49 //++
    5037Gauss1DPol::Gauss1DPol(bool polcenter)
    51 //
    52 //      Createur.
    53 //--
    5438: GeneralFunction(1,3), NDegPol(-1), PolCenter(polcenter)
    5539{
     
    10791
    10892/////////////////////////////////////////////////////////////////
    109 //++
    110 // Titre        GaussN1DPol
    111 // \index{GaussN1DPol}
    112 //
    113 //| Gaussienne_Normalisee+polynome (par[0]=Volume:
    114 //|  Si polcenter=true: xc=(x-par[1]), sinon xc=x
    115 //|  f(x) = par[0]/(sqrt(2*Pi)*par[2])*exp[-0.5*((x-par[1])/par[2])**2 ]
    116 //|        +par[3] + par[4]*xc + .... + par[3+NDegPol]*xc**NDegPol
    117 //|  NDegPol = degre du polynome, si <0 pas de polynome
    118 //--
    119 /////////////////////////////////////////////////////////////////
    120 
    121 //++
     93/*!
     94  \class SOPHYA::GaussN1DPol
     95  \ingroup NTools
     96  \anchor GaussN1DPol
     97  \verbatim
     98    Gaussienne_Normalisee+polynome (par[0]=Volume:
     99     Si polcenter=true: xc=(x-par[1]), sinon xc=x
     100     f(x) = par[0]/(sqrt(2*Pi)*par[2])*exp[-0.5*((x-par[1])/par[2])**2 ]
     101           +par[3] + par[4]*xc + .... + par[3+NDegPol]*xc**NDegPol
     102     NDegPol = degre du polynome, si <0 pas de polynome
     103  \endverbatim
     104*/
    122105GaussN1DPol::GaussN1DPol(unsigned int ndegpol,bool polcenter)
    123 //
    124 //      Createur.
    125 //--
    126106: GeneralFunction(1,ndegpol+4), NDegPol(ndegpol), PolCenter(polcenter)
    127107{
    128108}
    129109
    130 //++
    131110GaussN1DPol::GaussN1DPol(bool polcenter)
    132 //
    133 //      Createur.
    134 //--
    135111: GeneralFunction(1,3), NDegPol(-1), PolCenter(polcenter)
    136112{
     
    189165
    190166/////////////////////////////////////////////////////////////////
    191 //++
    192 // Titre        Exp1DPol
    193 // \index{Exp1DPol}
    194 //
    195 //|  Exponentielle+polynome:
    196 //|  xx = x - X_Center
    197 //|  f(x) = exp[par[0]+par[1]*xx]
    198 //|        +par[2] + par[3]*xx + .... + par[2+NDegPol]*xx**NDegPol
    199 //|  NDegPol = degre du polynome, si <0 pas de polynome
    200 //--
    201 /////////////////////////////////////////////////////////////////
    202 
    203 //++
     167/*!
     168  \class SOPHYA::Exp1DPol
     169  \ingroup NTools
     170  \anchor Exp1DPol
     171  \verbatim
     172     Exponentielle+polynome:
     173     xx = x - X_Center
     174     f(x) = exp[par[0]+par[1]*xx]
     175           +par[2] + par[3]*xx + .... + par[2+NDegPol]*xx**NDegPol
     176     NDegPol = degre du polynome, si <0 pas de polynome
     177  \endverbatim
     178*/
    204179Exp1DPol::Exp1DPol(unsigned int ndegpol,double x0)
    205 //
    206 //      Createur.
    207 //--
    208180: GeneralFunction(1,ndegpol+3), NDegPol(ndegpol), X_Center(x0)
    209181{
    210182}
    211183
    212 //++
    213184Exp1DPol::Exp1DPol(double x0)
    214 //
    215 //      Createur.
    216 //--
    217185: GeneralFunction(1,2), NDegPol(-1), X_Center(x0)
    218186{
     
    259227
    260228/////////////////////////////////////////////////////////////////
    261 //++
    262 // Titre        Polyn1D
    263 // \index{Polyn1D}
    264 //
    265 //| polynome 1D:
    266 //|  xx = x - X_Center
    267 //|  f(x) = par[0] + par[1]*xx + .... + par[NDegPol+1]*xx**NDegPol
    268 //|  NDegPol = degre du polynome
    269 //--
    270 /////////////////////////////////////////////////////////////////
    271 
    272 //++
     229/*!
     230  \class SOPHYA::Polyn1D
     231  \ingroup NTools
     232  \anchor Polyn1D
     233  \verbatim
     234    polynome 1D:
     235     xx = x - X_Center
     236     f(x) = par[0] + par[1]*xx + .... + par[NDegPol+1]*xx**NDegPol
     237     NDegPol = degre du polynome
     238  \endverbatim
     239*/
    273240Polyn1D::Polyn1D(unsigned int ndegpol,double x0)
    274 //
    275 //      Createur.
    276 //--
    277241: GeneralFunction(1,ndegpol+1), NDegPol(ndegpol), X_Center(x0)
    278242{
     
    309273
    310274/////////////////////////////////////////////////////////////////
    311 //++
    312 // Titre        HarmonieNu
    313 // \index{HarmonieNu}
    314 //
    315 //| Analyse harmonique:
    316 //|  f(t) = par(1) + Sum[par(2k)  *cos(2*pi*k*par(0)*(t-t0)]
    317 //|                + Sum[par(2k+1)*sin(2*pi*k*par(0)*(t-t0)]
    318 //|  la somme Sum porte sur l'indice k qui varie de [1,NHarm()+1]
    319 //|  avec la convention   k=1  pour le fondamental
    320 //|                       k>1  pour le (k-1)ieme harmonique
    321 //--
    322 //++
    323 //|  par(0) = inverse de la periode (frequence)
    324 //|  par(1) = terme constant
    325 //|  par(2), par(3) = termes devant le cosinus et le sinus
    326 //|                   du fondamental
    327 //|  par(2(m+1)), par(2(m+1)+1) = termes devant le cosinus
    328 //|                   et le sinus de l'harmonique m (m>=1).
    329 //|  NHarm() = nombre d'harmoniques a fitter.
    330 //|  T0() = centrage des temps, ce n'est pas un parametre du fit.
    331 //      `Conseil:' Avant de faire un fit avec les `NHarm()'
    332 //      harmoniques, il est preferable de faire un pre-fit
    333 //      ou seuls les parametres 1,2 et 3 sont libres et d'injecter
    334 //      le resultat du fit sur ces 3 parametres comme valeurs
    335 //      de depart pour le fit global avec les `NHarm()' harmoniques.
    336 //      De toute facon, le fit ne marchera que si la periode
    337 //      est initialisee de facon tres precise.
    338 //--
    339 /////////////////////////////////////////////////////////////////
    340 
    341 //++
     275/*!
     276  \class SOPHYA::HarmonieNu
     277  \ingroup NTools
     278  \anchor HarmonieNu
     279  \verbatim
     280    Analyse harmonique:
     281     f(t) = par(1) + Sum[par(2k)  *cos(2*pi*k*par(0)*(t-t0)]
     282                   + Sum[par(2k+1)*sin(2*pi*k*par(0)*(t-t0)]
     283     la somme Sum porte sur l'indice k qui varie de [1,NHarm()+1]
     284     avec la convention   k=1  pour le fondamental
     285                          k>1  pour le (k-1)ieme harmonique
     286     par(0) = inverse de la periode (frequence)
     287     par(1) = terme constant
     288     par(2), par(3) = termes devant le cosinus et le sinus
     289                      du fondamental
     290     par(2(m+1)), par(2(m+1)+1) = termes devant le cosinus
     291                      et le sinus de l'harmonique m (m>=1).
     292     NHarm() = nombre d'harmoniques a fitter.
     293     T0() = centrage des temps, ce n'est pas un parametre du fit.
     294        `Conseil:' Avant de faire un fit avec les `NHarm()'
     295        harmoniques, il est preferable de faire un pre-fit
     296        ou seuls les parametres 1,2 et 3 sont libres et d'injecter
     297        le resultat du fit sur ces 3 parametres comme valeurs
     298        de depart pour le fit global avec les `NHarm()' harmoniques.
     299        De toute facon, le fit ne marchera que si la periode
     300        est initialisee de facon tres precise.
     301  \endverbatim
     302*/
    342303HarmonieNu::HarmonieNu(unsigned int nharm,double t0)
    343 //
    344 //      Createur.
    345 //--
    346304: GeneralFunction(1,4+2*nharm), NHarm(nharm), T0(t0)
    347305{
     
    384342
    385343/////////////////////////////////////////////////////////////////
    386 //++
    387 // Titre        HarmonieT
    388 // \index{HarmonieT}
    389 //
    390 //| Analyse harmonique:
    391 //|  f(t) = par(1) + Sum[par(2k)  *cos(2*pi*k*(t-t0)/par(0)]
    392 //|                + Sum[par(2k+1)*sin(2*pi*k*(t-t0)/par(0)]
    393 //|  la somme Sum porte sur l'indice k qui varie de [1,NHarm()+1]
    394 //|  avec la convention   k=1  pour le fondamental
    395 //|                       k>1  pour le (k-1)ieme harmonique
    396 //--
    397 //++
    398 //|  par(0) = periode
    399 //|  par(1) = terme constant
    400 //|  par(2), par(3) = termes devant le cosinus et le sinus
    401 //|                   du fondamental
    402 //|  par(2(m+1)), par(2(m+1)+1) = termes devant le cosinus
    403 //|                   et le sinus de l'harmonique m (m>=1).
    404 //|  NHarm() = nombre d'harmoniques a fitter.
    405 //|  T0() = centrage des temps, ce n'est pas un parametre du fit.
    406 //--
    407 /////////////////////////////////////////////////////////////////
    408 
    409 //++
     344/*!
     345  \class SOPHYA::HarmonieT
     346  \ingroup NTools
     347  \anchor HarmonieT
     348  \verbatim
     349    Analyse harmonique:
     350     f(t) = par(1) + Sum[par(2k)  *cos(2*pi*k*(t-t0)/par(0)]
     351                   + Sum[par(2k+1)*sin(2*pi*k*(t-t0)/par(0)]
     352     la somme Sum porte sur l'indice k qui varie de [1,NHarm()+1]
     353     avec la convention   k=1  pour le fondamental
     354                          k>1  pour le (k-1)ieme harmonique
     355     par(0) = periode
     356     par(1) = terme constant
     357     par(2), par(3) = termes devant le cosinus et le sinus
     358                      du fondamental
     359     par(2(m+1)), par(2(m+1)+1) = termes devant le cosinus
     360                      et le sinus de l'harmonique m (m>=1).
     361     NHarm() = nombre d'harmoniques a fitter.
     362     T0() = centrage des temps, ce n'est pas un parametre du fit.
     363  \endverbatim
     364*/
    410365HarmonieT::HarmonieT(unsigned int nharm,double t0)
    411 //
    412 //      Createur.
    413 //--
    414366: GeneralFunction(1,4+2*nharm), NHarm(nharm), T0(t0)
    415367{
     
    455407
    456408/////////////////////////////////////////////////////////////////
    457 //++
    458 // Module       Classes de fonctions 2D
    459 // Lib  Outils++
    460 // include      fct1dfit.h
    461 //--
    462 /////////////////////////////////////////////////////////////////
    463 
    464 /////////////////////////////////////////////////////////////////
    465 //++
    466 // Titre        Polyn2D
    467 // \index{Polyn2D}
    468 //
    469 //| polynome 2D de degre total degre:
    470 //|  NDegPol = degre du polynome (note N dans la suite)
    471 //|  x = x - X_Center,  y = y - Y_Center
    472 //|  f(x,y) = p[0] +sum(k=1,n){ sum(i=0,k){ p[ki]*x^i*y^(k-i) }}
    473 //|  Il y a k+1 termes de degre k  (ex: x^i*y^(k-i))
    474 //|  terme de degre k avec x^i: p[ki] avec  ki = k*(k+1)/2 + i
    475 //| C'est a dire:
    476 //| deg0:   p0
    477 //| deg1: + p1*y + p2*x
    478 //| deg2: + p3*y^2 + p4*x*y + p5*x^2
    479 //| deg3: + p6*y^3 + p7*x*y^2 + p8*x^2*y + p9*x^3
    480 //| deg4: + p10*y^4 + p11*x*y^3 + p12*x^2*y^2 + p13*x^3*y + p14*x^4
    481 //| deg5: + p15*y^5 + ...                       ... + ... + p20*x^5
    482 //| ...
    483 //| degk: + p[k*(k+1)/2]*y^k + ...           ... + p[k*(k+3)/2]*x^k
    484 //| ...
    485 //| degn: + p[n*(n+1)/2]*y^n + ...           ... + p[n*(n+3)/2]*x^n
    486 //--
    487 /////////////////////////////////////////////////////////////////
    488 
    489 //++
     409/*!
     410  \class SOPHYA::Polyn2D
     411  \ingroup NTools
     412  \anchor Polyn2D
     413  \verbatim
     414    polynome 2D de degre total degre:
     415     NDegPol = degre du polynome (note N dans la suite)
     416     x = x - X_Center,  y = y - Y_Center
     417     f(x,y) = p[0] +sum(k=1,n){ sum(i=0,k){ p[ki]*x^i*y^(k-i) }}
     418     Il y a k+1 termes de degre k  (ex: x^i*y^(k-i))
     419     terme de degre k avec x^i: p[ki] avec  ki = k*(k+1)/2 + i
     420    C'est a dire:
     421    deg0:   p0
     422    deg1: + p1*y + p2*x
     423    deg2: + p3*y^2 + p4*x*y + p5*x^2
     424    deg3: + p6*y^3 + p7*x*y^2 + p8*x^2*y + p9*x^3
     425    deg4: + p10*y^4 + p11*x*y^3 + p12*x^2*y^2 + p13*x^3*y + p14*x^4
     426    deg5: + p15*y^5 + ...                       ... + ... + p20*x^5
     427    ...
     428    degk: + p[k*(k+1)/2]*y^k + ...           ... + p[k*(k+3)/2]*x^k
     429    ...
     430    degn: + p[n*(n+1)/2]*y^n + ...           ... + p[n*(n+3)/2]*x^n
     431  \endverbatim
     432*/
    490433Polyn2D::Polyn2D(unsigned int ndegpol,double x0,double y0)
    491 //
    492 //      Createur.
    493 //--
    494434: GeneralFunction(2,ndegpol*(ndegpol+3)/2+1), NDegPol(ndegpol), X_Center(x0), Y_Center(y0)
    495435{
Note: See TracChangeset for help on using the changeset viewer.