Changeset 938 in Sophya for trunk/SophyaLib/NTools/poly.cc


Ignore:
Timestamp:
Apr 14, 2000, 6:14:31 PM (25 years ago)
Author:
ansari
Message:

Vector,Matrix -> TVector,TMatrix<r_8> cmv 14/4/00

File:
1 edited

Legend:

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

    r805 r938  
    3131
    3232Poly::Poly(int degre)
    33 : Vector(degre+1), dirty(0), deg(0)
     33: TVector<r_8>(degre+1), dirty(0), deg(0)
    3434{
    3535  END_CONSTRUCTOR
     
    4141//      Constructeur par copie.
    4242//--
    43 :Vector(a), dirty(a.dirty), deg(a.deg)
     43:TVector<r_8>(a), dirty(a.dirty), deg(a.deg)
    4444{
    4545  END_CONSTRUCTOR
     
    111111
    112112//++
    113 int Poly::Roots(Vector& roots) const
     113int Poly::Roots(TVector<r_8>& roots) const
    114114//
    115115//      Retourne dans roots les racines réelles, si on sait
     
    179179{
    180180  if (this == &a) return *this;
    181   Vector::operator=(a);
     181  TVector<r_8>::operator=(a);
    182182
    183183  UpdateDeg();
     
    275275
    276276//++
    277 double Poly::Fit(Vector const& x, Vector const& y, int degre)
     277double Poly::Fit(TVector<r_8> const& x, TVector<r_8> const& y, int degre)
    278278//
    279279//      Ajustement polynomial par moindre carrés. Un polynôme de
     
    287287  Realloc(degre);
    288288
    289   Matrix a(degre+1, n);
     289  TMatrix<r_8> a(degre+1, n);
    290290
    291291  for (int c=0; c<n; c++) {
     
    297297  }
    298298
    299   LinFitter lf;
    300   double rc = lf.LinFit(a,y,(Vector&)*this);
     299  LinFitter<r_8> lf;
     300  double rc = lf.LinFit(a,y,(TVector<r_8>&)*this);
    301301  UpdateDeg();
    302302  return rc;
     
    304304
    305305//++
    306 double Poly::Fit(Vector const& x, Vector const& y, Vector const& erry2, int degre,
    307                  Vector& errCoef)
     306double Poly::Fit(TVector<r_8> const& x, TVector<r_8> const& y,
     307       TVector<r_8> const& erry2, int degre,TVector<r_8>& errCoef)
    308308//
    309309//      Ajustement polynomial par moindre carrés. Un polynôme de
     
    320320  errCoef.Realloc(degre+1);
    321321
    322   Matrix a(degre+1, n);
     322  TMatrix<r_8> a(degre+1, n);
    323323
    324324  for (int c=0; c<n; c++) {
     
    330330  }
    331331
    332   LinFitter lf;
    333   double rc = lf.LinFit(a,y,erry2,(Vector&)*this,errCoef);
     332  LinFitter<r_8> lf;
     333  double rc = lf.LinFit(a,y,erry2,(TVector<r_8>&)*this,errCoef);
    334334  UpdateDeg();
    335335  return rc;
     
    371371is >> dg;
    372372dobj->Realloc(dg,true);
    373 is >> *((Vector *) dobj);
     373is >> *((TVector<r_8> *) dobj);
    374374dobj->UpdateDeg();
    375375}
     
    381381dobj->Realloc(dobj->deg,true);
    382382os << dobj->deg;
    383 os << *((Vector *) dobj);
     383os << *((TVector<r_8> *) dobj);
    384384}
    385385
     
    417417//      Crée un polynôme de degrés partiels degreX et degreY.
    418418//--
    419 :Vector((degreX+1)*(degreY+1)), dirty(0),
     419:TVector<r_8>((degreX+1)*(degreY+1)), dirty(0),
    420420 maxDegX(degreX), maxDegY(degreY), degX(0), degY(0), deg(0)
    421421{
     
    429429//      de deux polynômes à une variable, p2(x,y)=px(x)py(y)
    430430//--
    431 :Vector((polX.Degre()+1)*(polY.Degre()+1)), dirty(0),
     431:TVector<r_8>((polX.Degre()+1)*(polY.Degre()+1)), dirty(0),
    432432 maxDegX(polX.Degre()), maxDegY(polY.Degre()),
    433433 degX(polX.Degre()), degY(polY.Degre()), deg(degX+degY)
     
    444444//      Constructeur par copie.
    445445//--
    446 :Vector(a), dirty(a.dirty),
     446:TVector<r_8>(a), dirty(a.dirty),
    447447 maxDegX(a.maxDegX), maxDegY(a.maxDegY),
    448448 degX(a.degX), degY(a.degY), deg(a.deg)
     
    484484  UpdateDegIfDirty();
    485485  Poly2 tmp(*this);
    486   Vector::Realloc((degreX+1)*(degreY+1));
     486  TVector<r_8>::Realloc((degreX+1)*(degreY+1));
    487487  DataBlock().Reset();
    488488  maxDegX = degreX;
     
    554554
    555555//++
    556 double Poly2::Fit(Vector const& x, Vector const& y, Vector const& z,
    557                   int degreX, int degreY)
     556double Poly2::Fit(TVector<r_8> const& x, TVector<r_8> const& y,
     557                 TVector<r_8> const& z, int degreX, int degreY)
    558558//
    559559//      Ajustement par moindre carrés z = P(x,y), degrés partiels imposés.
     
    566566  Realloc(degreX, degreY);
    567567
    568   Matrix a((degreX+1)*(degreY+1), n);
     568  TMatrix<r_8> a((degreX+1)*(degreY+1), n);
    569569
    570570  for (int c=0; c<n; c++) {
     
    580580  }
    581581
    582   LinFitter lf;
    583   double rc = lf.LinFit(a,z,(Vector&)*this);
     582  LinFitter<r_8> lf;
     583  double rc = lf.LinFit(a,z,(TVector<r_8>&)*this);
    584584  UpdateDeg();
    585585  return rc;
     
    588588
    589589//++
    590 double Poly2::Fit(Vector const& x, Vector const& y, Vector const& z,
    591                   Vector const& errz2, int degreX, int degreY,
    592                   Vector& errCoef)
     590double Poly2::Fit(TVector<r_8> const& x, TVector<r_8> const& y, TVector<r_8> const& z,
     591                  TVector<r_8> const& errz2, int degreX, int degreY,
     592                  TVector<r_8>& errCoef)
    593593//
    594594//      Ajustement par moindre carrés z = P(x,y), degrés partiels imposés,
     
    604604  errCoef.Realloc((degreX+1)*(degreY+1));
    605605
    606   Matrix a((degreX+1)*(degreY+1), n);
     606  TMatrix<r_8> a((degreX+1)*(degreY+1), n);
    607607
    608608  for (int c=0; c<n; c++) {
     
    618618  }
    619619
    620   LinFitter lf;
    621   double rc = lf.LinFit(a,z,errz2,(Vector&)*this,errCoef);
     620  LinFitter<r_8> lf;
     621  double rc = lf.LinFit(a,z,errz2,(TVector<r_8>&)*this,errCoef);
    622622  UpdateDeg();
    623623  return rc;
     
    625625
    626626//++
    627 double Poly2::Fit(Vector const& x, Vector const& y, Vector const& z,
    628                   int degre)
     627double Poly2::Fit(TVector<r_8> const& x, TVector<r_8> const& y,
     628                              TVector<r_8> const& z, int degre)
    629629//
    630630//      Ajustement par moindre carrés z = P(x,y), degré total imposé.
     
    637637  Realloc(degre, degre);   // certains vaudront 0, impose.
    638638
    639   Matrix a((degre+1)*(degre+2)/2, n);
    640   Vector cf((degre+1)*(degre+2)/2);
     639  TMatrix<r_8> a((degre+1)*(degre+2)/2, n);
     640  TVector<r_8> cf((degre+1)*(degre+2)/2);
    641641#define C_INDEX(i,j) ((i) + (j)*(2*degre+3-(j))/2)
    642642
     
    654654  }
    655655
    656   LinFitter lf;
     656  LinFitter<r_8> lf;
    657657  double rc = lf.LinFit(a,z,cf);
    658658
     
    670670
    671671//++
    672 double Poly2::Fit(Vector const& x, Vector const& y, Vector const& z,
    673                   Vector const& errz2, int degre,
    674                   Vector& errCoef)
     672double Poly2::Fit(TVector<r_8> const& x, TVector<r_8> const& y,
     673               TVector<r_8> const& z,TVector<r_8> const& errz2,
     674                              int degre, TVector<r_8>& errCoef)
    675675//
    676676//      Ajustement par moindre carrés z = P(x,y), degré total imposé,
     
    687687#define C_INDEX(i,j) ((i) + (j)*(2*degre+3-(j))/2)
    688688
    689   Matrix a((degre+1)*(degre+2)/2, n);
    690   Vector cf((degre+1)*(degre+2)/2);
    691   Vector ecf((degre+1)*(degre+2)/2);
     689  TMatrix<r_8> a((degre+1)*(degre+2)/2, n);
     690  TVector<r_8> cf((degre+1)*(degre+2)/2);
     691  TVector<r_8> ecf((degre+1)*(degre+2)/2);
    692692
    693693  for (int c=0; c<n; c++) {
     
    704704  }
    705705
    706   LinFitter lf;
     706  LinFitter<r_8> lf;
    707707  double rc = lf.LinFit(a,z,errz2,cf,ecf);
    708708
     
    875875is >> dgx >> dgy;
    876876dobj->Realloc(dgx,dgy);
    877 is >> *((Vector *) dobj);
     877is >> *((TVector<r_8> *) dobj);
    878878dobj->UpdateDeg();
    879879}
     
    883883if(dobj == NULL) return;
    884884os << dobj->maxDegX << dobj->maxDegY;
    885 os << *((Vector *) dobj);
     885os << *((TVector<r_8> *) dobj);
    886886}
    887887
Note: See TracChangeset for help on using the changeset viewer.