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


Ignore:
Timestamp:
Oct 25, 1999, 12:36:22 PM (26 years ago)
Author:
ansari
Message:

Vector/Matrix OVector/OMatrix cmv 25/10/99

File:
1 edited

Legend:

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

    r490 r508  
    1313//++
    1414// Links        Parents
    15 // Vector
     15// OVector
    1616//--
    1717
     
    2929
    3030Poly::Poly(int degre)
    31 : Vector(degre+1), dirty(0), deg(0)
     31: OVector(degre+1), dirty(0), deg(0)
    3232{
    3333  END_CONSTRUCTOR
     
    9999
    100100//++
    101 int Poly::Roots(Vector& roots) const
     101int Poly::Roots(OVector& roots) const
    102102//
    103103//      Retourne dans roots les racines réelles, si on sait
     
    167167{
    168168  if (this == &a) return *this;
    169   Vector::operator=(a);
     169  OVector::operator=(a);
    170170
    171171  UpdateDeg();
     
    324324#endif
    325325
    326   Vector::ReadSelf(s);
     326  OVector::ReadSelf(s);
    327327
    328328#ifdef DEBUG
     
    341341  ((Poly*)(this))->Realloc(deg, true);
    342342  s << deg;
    343   Vector::WriteSelf(s);
     343  OVector::WriteSelf(s);
    344344}
    345345
     
    375375
    376376//++
    377 double Poly::Fit(Vector const& x, Vector const& y, int degre)
     377double Poly::Fit(OVector const& x, OVector const& y, int degre)
    378378//
    379379//      Ajustement polynomial par moindre carrés. Un polynôme de
     
    387387  Realloc(degre);
    388388
    389   Matrix a(degre+1, n);
     389  OMatrix a(degre+1, n);
    390390
    391391  for (int c=0; c<n; c++) {
     
    397397  }
    398398
    399   double rc = LinFit(a,y,(Vector&)*this);
     399  double rc = LinFit(a,y,(OVector&)*this);
    400400  UpdateDeg();
    401401  return rc;
     
    403403
    404404//++
    405 double Poly::Fit(Vector const& x, Vector const& y, Vector const& erry2, int degre,
    406                  Vector& errCoef)
     405double Poly::Fit(OVector const& x, OVector const& y, OVector const& erry2, int degre,
     406                 OVector& errCoef)
    407407//
    408408//      Ajustement polynomial par moindre carrés. Un polynôme de
     
    419419  errCoef.Realloc(degre+1);
    420420
    421   Matrix a(degre+1, n);
     421  OMatrix a(degre+1, n);
    422422
    423423  for (int c=0; c<n; c++) {
     
    429429  }
    430430
    431   double rc = LinFit(a,y,erry2,(Vector&)*this,errCoef);
     431  double rc = LinFit(a,y,erry2,(OVector&)*this,errCoef);
    432432  UpdateDeg();
    433433  return rc;
     
    482482//++
    483483// Links        Parents
    484 // Vector
     484// OVector
    485485//--
    486486
     
    494494//      Crée un polynôme de degrés partiels degreX et degreY.
    495495//--
    496 :Vector((degreX+1)*(degreY+1)), dirty(0),
     496:OVector((degreX+1)*(degreY+1)), dirty(0),
    497497 maxDegX(degreX), maxDegY(degreY), degX(0), degY(0), deg(0)
    498498{
     
    506506//      de deux polynômes à une variable, p2(x,y)=px(x)py(y)
    507507//--
    508 :Vector((polX.Degre()+1)*(polY.Degre()+1)), dirty(0),
     508:OVector((polX.Degre()+1)*(polY.Degre()+1)), dirty(0),
    509509 maxDegX(polX.Degre()), maxDegY(polY.Degre()),
    510510 degX(polX.Degre()), degY(polY.Degre()), deg(degX+degY)
     
    521521//      Constructeur par copie.
    522522//--
    523 :Vector(a), dirty(a.dirty),
     523:OVector(a), dirty(a.dirty),
    524524 maxDegX(a.maxDegX), maxDegY(a.maxDegY),
    525525 degX(a.degX), degY(a.degY), deg(a.deg)
     
    561561  UpdateDegIfDirty();
    562562  Poly2 tmp(*this);
    563   Vector::Realloc((degreX+1)*(degreY+1));
     563  OVector::Realloc((degreX+1)*(degreY+1));
    564564  Zero();
    565565  maxDegX = degreX;
     
    631631
    632632//++
    633 double Poly2::Fit(Vector const& x, Vector const& y, Vector const& z,
     633double Poly2::Fit(OVector const& x, OVector const& y, OVector const& z,
    634634                  int degreX, int degreY)
    635635//
     
    643643  Realloc(degreX, degreY);
    644644
    645   Matrix a((degreX+1)*(degreY+1), n);
     645  OMatrix a((degreX+1)*(degreY+1), n);
    646646
    647647  for (int c=0; c<n; c++) {
     
    657657  }
    658658
    659   double rc = LinFit(a,z,(Vector&)*this);
     659  double rc = LinFit(a,z,(OVector&)*this);
    660660  UpdateDeg();
    661661  return rc;
     
    664664
    665665//++
    666 double Poly2::Fit(Vector const& x, Vector const& y, Vector const& z,
    667                   Vector const& errz2, int degreX, int degreY,
    668                   Vector& errCoef)
     666double Poly2::Fit(OVector const& x, OVector const& y, OVector const& z,
     667                  OVector const& errz2, int degreX, int degreY,
     668                  OVector& errCoef)
    669669//
    670670//      Ajustement par moindre carrés z = P(x,y), degrés partiels imposés,
     
    680680  errCoef.Realloc((degreX+1)*(degreY+1));
    681681
    682   Matrix a((degreX+1)*(degreY+1), n);
     682  OMatrix a((degreX+1)*(degreY+1), n);
    683683
    684684  for (int c=0; c<n; c++) {
     
    694694  }
    695695
    696   double rc = LinFit(a,z,errz2,(Vector&)*this,errCoef);
     696  double rc = LinFit(a,z,errz2,(OVector&)*this,errCoef);
    697697  UpdateDeg();
    698698  return rc;
     
    700700
    701701//++
    702 double Poly2::Fit(Vector const& x, Vector const& y, Vector const& z,
     702double Poly2::Fit(OVector const& x, OVector const& y, OVector const& z,
    703703                  int degre)
    704704//
     
    712712  Realloc(degre, degre);   // certains vaudront 0, impose.
    713713
    714   Matrix a((degre+1)*(degre+2)/2, n);
    715   Vector cf((degre+1)*(degre+2)/2);
     714  OMatrix a((degre+1)*(degre+2)/2, n);
     715  OVector cf((degre+1)*(degre+2)/2);
    716716#define C_INDEX(i,j) ((i) + (j)*(2*degre+3-(j))/2)
    717717
     
    744744
    745745//++
    746 double Poly2::Fit(Vector const& x, Vector const& y, Vector const& z,
    747                   Vector const& errz2, int degre,
    748                   Vector& errCoef)
     746double Poly2::Fit(OVector const& x, OVector const& y, OVector const& z,
     747                  OVector const& errz2, int degre,
     748                  OVector& errCoef)
    749749//
    750750//      Ajustement par moindre carrés z = P(x,y), degré total imposé,
     
    761761#define C_INDEX(i,j) ((i) + (j)*(2*degre+3-(j))/2)
    762762
    763   Matrix a((degre+1)*(degre+2)/2, n);
    764   Vector cf((degre+1)*(degre+2)/2);
    765   Vector ecf((degre+1)*(degre+2)/2);
     763  OMatrix a((degre+1)*(degre+2)/2, n);
     764  OVector cf((degre+1)*(degre+2)/2);
     765  OVector ecf((degre+1)*(degre+2)/2);
    766766
    767767  for (int c=0; c<n; c++) {
     
    806806#endif
    807807
    808   Vector::ReadSelf(s);
     808  OVector::ReadSelf(s);
    809809
    810810#ifdef DEBUG
     
    817817{
    818818  s << maxDegX << maxDegY;
    819   Vector::WriteSelf(s);
     819  OVector::WriteSelf(s);
    820820}
    821821
Note: See TracChangeset for help on using the changeset viewer.