Changeset 508 in Sophya for trunk/SophyaLib/NTools/poly.cc
- Timestamp:
- Oct 25, 1999, 12:36:22 PM (26 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaLib/NTools/poly.cc
r490 r508 13 13 //++ 14 14 // Links Parents 15 // Vector15 // OVector 16 16 //-- 17 17 … … 29 29 30 30 Poly::Poly(int degre) 31 : Vector(degre+1), dirty(0), deg(0)31 : OVector(degre+1), dirty(0), deg(0) 32 32 { 33 33 END_CONSTRUCTOR … … 99 99 100 100 //++ 101 int Poly::Roots( Vector& roots) const101 int Poly::Roots(OVector& roots) const 102 102 // 103 103 // Retourne dans roots les racines réelles, si on sait … … 167 167 { 168 168 if (this == &a) return *this; 169 Vector::operator=(a);169 OVector::operator=(a); 170 170 171 171 UpdateDeg(); … … 324 324 #endif 325 325 326 Vector::ReadSelf(s);326 OVector::ReadSelf(s); 327 327 328 328 #ifdef DEBUG … … 341 341 ((Poly*)(this))->Realloc(deg, true); 342 342 s << deg; 343 Vector::WriteSelf(s);343 OVector::WriteSelf(s); 344 344 } 345 345 … … 375 375 376 376 //++ 377 double Poly::Fit( Vector const& x,Vector const& y, int degre)377 double Poly::Fit(OVector const& x, OVector const& y, int degre) 378 378 // 379 379 // Ajustement polynomial par moindre carrés. Un polynôme de … … 387 387 Realloc(degre); 388 388 389 Matrix a(degre+1, n);389 OMatrix a(degre+1, n); 390 390 391 391 for (int c=0; c<n; c++) { … … 397 397 } 398 398 399 double rc = LinFit(a,y,( Vector&)*this);399 double rc = LinFit(a,y,(OVector&)*this); 400 400 UpdateDeg(); 401 401 return rc; … … 403 403 404 404 //++ 405 double Poly::Fit( Vector const& x, Vector const& y,Vector const& erry2, int degre,406 Vector& errCoef)405 double Poly::Fit(OVector const& x, OVector const& y, OVector const& erry2, int degre, 406 OVector& errCoef) 407 407 // 408 408 // Ajustement polynomial par moindre carrés. Un polynôme de … … 419 419 errCoef.Realloc(degre+1); 420 420 421 Matrix a(degre+1, n);421 OMatrix a(degre+1, n); 422 422 423 423 for (int c=0; c<n; c++) { … … 429 429 } 430 430 431 double rc = LinFit(a,y,erry2,( Vector&)*this,errCoef);431 double rc = LinFit(a,y,erry2,(OVector&)*this,errCoef); 432 432 UpdateDeg(); 433 433 return rc; … … 482 482 //++ 483 483 // Links Parents 484 // Vector484 // OVector 485 485 //-- 486 486 … … 494 494 // Crée un polynôme de degrés partiels degreX et degreY. 495 495 //-- 496 : Vector((degreX+1)*(degreY+1)), dirty(0),496 :OVector((degreX+1)*(degreY+1)), dirty(0), 497 497 maxDegX(degreX), maxDegY(degreY), degX(0), degY(0), deg(0) 498 498 { … … 506 506 // de deux polynômes à une variable, p2(x,y)=px(x)py(y) 507 507 //-- 508 : Vector((polX.Degre()+1)*(polY.Degre()+1)), dirty(0),508 :OVector((polX.Degre()+1)*(polY.Degre()+1)), dirty(0), 509 509 maxDegX(polX.Degre()), maxDegY(polY.Degre()), 510 510 degX(polX.Degre()), degY(polY.Degre()), deg(degX+degY) … … 521 521 // Constructeur par copie. 522 522 //-- 523 : Vector(a), dirty(a.dirty),523 :OVector(a), dirty(a.dirty), 524 524 maxDegX(a.maxDegX), maxDegY(a.maxDegY), 525 525 degX(a.degX), degY(a.degY), deg(a.deg) … … 561 561 UpdateDegIfDirty(); 562 562 Poly2 tmp(*this); 563 Vector::Realloc((degreX+1)*(degreY+1));563 OVector::Realloc((degreX+1)*(degreY+1)); 564 564 Zero(); 565 565 maxDegX = degreX; … … 631 631 632 632 //++ 633 double Poly2::Fit( Vector const& x, Vector const& y,Vector const& z,633 double Poly2::Fit(OVector const& x, OVector const& y, OVector const& z, 634 634 int degreX, int degreY) 635 635 // … … 643 643 Realloc(degreX, degreY); 644 644 645 Matrix a((degreX+1)*(degreY+1), n);645 OMatrix a((degreX+1)*(degreY+1), n); 646 646 647 647 for (int c=0; c<n; c++) { … … 657 657 } 658 658 659 double rc = LinFit(a,z,( Vector&)*this);659 double rc = LinFit(a,z,(OVector&)*this); 660 660 UpdateDeg(); 661 661 return rc; … … 664 664 665 665 //++ 666 double Poly2::Fit( Vector const& x, Vector const& y,Vector const& z,667 Vector const& errz2, int degreX, int degreY,668 Vector& errCoef)666 double Poly2::Fit(OVector const& x, OVector const& y, OVector const& z, 667 OVector const& errz2, int degreX, int degreY, 668 OVector& errCoef) 669 669 // 670 670 // Ajustement par moindre carrés z = P(x,y), degrés partiels imposés, … … 680 680 errCoef.Realloc((degreX+1)*(degreY+1)); 681 681 682 Matrix a((degreX+1)*(degreY+1), n);682 OMatrix a((degreX+1)*(degreY+1), n); 683 683 684 684 for (int c=0; c<n; c++) { … … 694 694 } 695 695 696 double rc = LinFit(a,z,errz2,( Vector&)*this,errCoef);696 double rc = LinFit(a,z,errz2,(OVector&)*this,errCoef); 697 697 UpdateDeg(); 698 698 return rc; … … 700 700 701 701 //++ 702 double Poly2::Fit( Vector const& x, Vector const& y,Vector const& z,702 double Poly2::Fit(OVector const& x, OVector const& y, OVector const& z, 703 703 int degre) 704 704 // … … 712 712 Realloc(degre, degre); // certains vaudront 0, impose. 713 713 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); 716 716 #define C_INDEX(i,j) ((i) + (j)*(2*degre+3-(j))/2) 717 717 … … 744 744 745 745 //++ 746 double Poly2::Fit( Vector const& x, Vector const& y,Vector const& z,747 Vector const& errz2, int degre,748 Vector& errCoef)746 double Poly2::Fit(OVector const& x, OVector const& y, OVector const& z, 747 OVector const& errz2, int degre, 748 OVector& errCoef) 749 749 // 750 750 // Ajustement par moindre carrés z = P(x,y), degré total imposé, … … 761 761 #define C_INDEX(i,j) ((i) + (j)*(2*degre+3-(j))/2) 762 762 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); 766 766 767 767 for (int c=0; c<n; c++) { … … 806 806 #endif 807 807 808 Vector::ReadSelf(s);808 OVector::ReadSelf(s); 809 809 810 810 #ifdef DEBUG … … 817 817 { 818 818 s << maxDegX << maxDegY; 819 Vector::WriteSelf(s);819 OVector::WriteSelf(s); 820 820 } 821 821
Note:
See TracChangeset
for help on using the changeset viewer.