#include "machdefs.h" #include #include "cvector.h" #include "generalfit.h" #include "tvector.h" //++ // Class OVector // Lib Outils++ // include cvector.h // // Vecteur colonne, en fait une matrice avec une seule colonne, pour faire // des opérations matricielles. //-- //++ // Links Parents // OMatrix //-- //++ // Titre Constructeurs //-- //++ OVector::OVector(int n) // // Constructeur, n = nombre d'éléments. //-- : OMatrix(n, 1) {END_CONSTRUCTOR} //++ OVector::OVector(int n, double* values) // // Constructeur, à partir des valeurs. Pas d'allocation. //-- : OMatrix(n, 1, values) {END_CONSTRUCTOR} //++ OVector::OVector(const OVector& v) // // Constructeur par copie. //-- : OMatrix(v) {END_CONSTRUCTOR} //++ OVector::OVector(const OMatrix& a) // // Constructeur par "copie" à partir d'une matrice, qui doit avoir une seule colonne. // // *Exceptions :* // sizeMismatchErr si la matrice a plus d'une colonne //-- : OMatrix(a.nr,1) // OMatrix(a) ne marche pas, pourquoi ???? bug gcc ??? { if (a.nc != 1) THROW(sizeMismatchErr); memcpy(data, a.data, a.nr * sizeof(double)); END_CONSTRUCTOR } //++ OVector::OVector(const TVector& v) // // Constructeur par "copie" a partir d'un TVector. // Attention, les donnees sont partagees. //-- : OMatrix(v) { } //++ // Titre Opérateurs //-- //++ // double& operator()(int n) // double const& operator()(int n) const // Accès aux éléments. //-- //++ OVector& OVector::operator = (double x) // // Affectation à partir d'un scalaire. Tous les éléments prennent cette valeur. //-- { for (int i=0; i x = xorg + i*dx //-- { if(NElts()<=0) throw(SzMismatchError("OVector::FitResidus: size mismatch\n")); GeneralFunction* f = gfit.GetFunction(); if(f==NULL) throw(NullPtrError("OVector::FitResidus: NULL pointer\n")); OVector par = gfit.GetParm(); OVector v(*this); for(int i=0;iValue(&x,par.Data()); } return v; } //++ OVector OVector::FitFunction(GeneralFit& gfit,double xorg,double dx) // // Retourne une classe contenant la fonction du fit ``gfit''. // La coordonnee de l'element (i) est -> x = xorg + i*dx //-- { if(NElts()<=0) throw(SzMismatchError("OVector::FitResidus: size mismatch\n")); GeneralFunction* f = gfit.GetFunction(); if(f==NULL) throw(NullPtrError("OVector::FitResidus: NULL pointer\n")); OVector par = gfit.GetParm(); OVector v(*this); for(int i=0;iValue(&x,par.Data()); } return v; }