Changeset 938 in Sophya for trunk/SophyaLib/NTools/poly.cc
- Timestamp:
- Apr 14, 2000, 6:14:31 PM (25 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaLib/NTools/poly.cc
r805 r938 31 31 32 32 Poly::Poly(int degre) 33 : Vector(degre+1), dirty(0), deg(0)33 : TVector<r_8>(degre+1), dirty(0), deg(0) 34 34 { 35 35 END_CONSTRUCTOR … … 41 41 // Constructeur par copie. 42 42 //-- 43 : Vector(a), dirty(a.dirty), deg(a.deg)43 :TVector<r_8>(a), dirty(a.dirty), deg(a.deg) 44 44 { 45 45 END_CONSTRUCTOR … … 111 111 112 112 //++ 113 int Poly::Roots( Vector& roots) const113 int Poly::Roots(TVector<r_8>& roots) const 114 114 // 115 115 // Retourne dans roots les racines réelles, si on sait … … 179 179 { 180 180 if (this == &a) return *this; 181 Vector::operator=(a);181 TVector<r_8>::operator=(a); 182 182 183 183 UpdateDeg(); … … 275 275 276 276 //++ 277 double Poly::Fit( Vector const& x, Vectorconst& y, int degre)277 double Poly::Fit(TVector<r_8> const& x, TVector<r_8> const& y, int degre) 278 278 // 279 279 // Ajustement polynomial par moindre carrés. Un polynôme de … … 287 287 Realloc(degre); 288 288 289 Matrixa(degre+1, n);289 TMatrix<r_8> a(degre+1, n); 290 290 291 291 for (int c=0; c<n; c++) { … … 297 297 } 298 298 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); 301 301 UpdateDeg(); 302 302 return rc; … … 304 304 305 305 //++ 306 double Poly::Fit( Vector const& x, Vector const& y, Vector const& erry2, int degre,307 Vector& errCoef)306 double Poly::Fit(TVector<r_8> const& x, TVector<r_8> const& y, 307 TVector<r_8> const& erry2, int degre,TVector<r_8>& errCoef) 308 308 // 309 309 // Ajustement polynomial par moindre carrés. Un polynôme de … … 320 320 errCoef.Realloc(degre+1); 321 321 322 Matrixa(degre+1, n);322 TMatrix<r_8> a(degre+1, n); 323 323 324 324 for (int c=0; c<n; c++) { … … 330 330 } 331 331 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); 334 334 UpdateDeg(); 335 335 return rc; … … 371 371 is >> dg; 372 372 dobj->Realloc(dg,true); 373 is >> *(( Vector*) dobj);373 is >> *((TVector<r_8> *) dobj); 374 374 dobj->UpdateDeg(); 375 375 } … … 381 381 dobj->Realloc(dobj->deg,true); 382 382 os << dobj->deg; 383 os << *(( Vector*) dobj);383 os << *((TVector<r_8> *) dobj); 384 384 } 385 385 … … 417 417 // Crée un polynôme de degrés partiels degreX et degreY. 418 418 //-- 419 : Vector((degreX+1)*(degreY+1)), dirty(0),419 :TVector<r_8>((degreX+1)*(degreY+1)), dirty(0), 420 420 maxDegX(degreX), maxDegY(degreY), degX(0), degY(0), deg(0) 421 421 { … … 429 429 // de deux polynômes à une variable, p2(x,y)=px(x)py(y) 430 430 //-- 431 : Vector((polX.Degre()+1)*(polY.Degre()+1)), dirty(0),431 :TVector<r_8>((polX.Degre()+1)*(polY.Degre()+1)), dirty(0), 432 432 maxDegX(polX.Degre()), maxDegY(polY.Degre()), 433 433 degX(polX.Degre()), degY(polY.Degre()), deg(degX+degY) … … 444 444 // Constructeur par copie. 445 445 //-- 446 : Vector(a), dirty(a.dirty),446 :TVector<r_8>(a), dirty(a.dirty), 447 447 maxDegX(a.maxDegX), maxDegY(a.maxDegY), 448 448 degX(a.degX), degY(a.degY), deg(a.deg) … … 484 484 UpdateDegIfDirty(); 485 485 Poly2 tmp(*this); 486 Vector::Realloc((degreX+1)*(degreY+1));486 TVector<r_8>::Realloc((degreX+1)*(degreY+1)); 487 487 DataBlock().Reset(); 488 488 maxDegX = degreX; … … 554 554 555 555 //++ 556 double Poly2::Fit( Vector const& x, Vector const& y, Vector const& z,557 int degreX, int degreY)556 double Poly2::Fit(TVector<r_8> const& x, TVector<r_8> const& y, 557 TVector<r_8> const& z, int degreX, int degreY) 558 558 // 559 559 // Ajustement par moindre carrés z = P(x,y), degrés partiels imposés. … … 566 566 Realloc(degreX, degreY); 567 567 568 Matrixa((degreX+1)*(degreY+1), n);568 TMatrix<r_8> a((degreX+1)*(degreY+1), n); 569 569 570 570 for (int c=0; c<n; c++) { … … 580 580 } 581 581 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); 584 584 UpdateDeg(); 585 585 return rc; … … 588 588 589 589 //++ 590 double Poly2::Fit( Vector const& x, Vector const& y, Vectorconst& z,591 Vectorconst& errz2, int degreX, int degreY,592 Vector& errCoef)590 double 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) 593 593 // 594 594 // Ajustement par moindre carrés z = P(x,y), degrés partiels imposés, … … 604 604 errCoef.Realloc((degreX+1)*(degreY+1)); 605 605 606 Matrixa((degreX+1)*(degreY+1), n);606 TMatrix<r_8> a((degreX+1)*(degreY+1), n); 607 607 608 608 for (int c=0; c<n; c++) { … … 618 618 } 619 619 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); 622 622 UpdateDeg(); 623 623 return rc; … … 625 625 626 626 //++ 627 double Poly2::Fit( Vector const& x, Vector const& y, Vector const& z,628 int degre)627 double Poly2::Fit(TVector<r_8> const& x, TVector<r_8> const& y, 628 TVector<r_8> const& z, int degre) 629 629 // 630 630 // Ajustement par moindre carrés z = P(x,y), degré total imposé. … … 637 637 Realloc(degre, degre); // certains vaudront 0, impose. 638 638 639 Matrixa((degre+1)*(degre+2)/2, n);640 Vectorcf((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); 641 641 #define C_INDEX(i,j) ((i) + (j)*(2*degre+3-(j))/2) 642 642 … … 654 654 } 655 655 656 LinFitter lf;656 LinFitter<r_8> lf; 657 657 double rc = lf.LinFit(a,z,cf); 658 658 … … 670 670 671 671 //++ 672 double Poly2::Fit( Vector const& x, Vector const& y, Vector const& z,673 Vector const& errz2, int degre,674 Vector& errCoef)672 double 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) 675 675 // 676 676 // Ajustement par moindre carrés z = P(x,y), degré total imposé, … … 687 687 #define C_INDEX(i,j) ((i) + (j)*(2*degre+3-(j))/2) 688 688 689 Matrixa((degre+1)*(degre+2)/2, n);690 Vectorcf((degre+1)*(degre+2)/2);691 Vectorecf((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); 692 692 693 693 for (int c=0; c<n; c++) { … … 704 704 } 705 705 706 LinFitter lf;706 LinFitter<r_8> lf; 707 707 double rc = lf.LinFit(a,z,errz2,cf,ecf); 708 708 … … 875 875 is >> dgx >> dgy; 876 876 dobj->Realloc(dgx,dgy); 877 is >> *(( Vector*) dobj);877 is >> *((TVector<r_8> *) dobj); 878 878 dobj->UpdateDeg(); 879 879 } … … 883 883 if(dobj == NULL) return; 884 884 os << dobj->maxDegX << dobj->maxDegY; 885 os << *(( Vector*) dobj);885 os << *((TVector<r_8> *) dobj); 886 886 } 887 887
Note:
See TracChangeset
for help on using the changeset viewer.