#include "machdefs.h" #include #include "cvector.h" #include "generalfit.h" #include "tvector.h" //++ // Class Vector // Lib Outils++ // include cvector.h // // Vecteur colonne, en fait une matrice avec une seule colonne, pour faire // des opérations matricielles. //-- //++ // Links Parents // Matrix //-- //++ // Titre Constructeurs //-- //++ Vector::Vector(int n) // // Constructeur, n = nombre d'éléments. //-- : Matrix(n, 1) {END_CONSTRUCTOR} //++ Vector::Vector(int n, double* values) // // Constructeur, à partir des valeurs. Pas d'allocation. //-- : Matrix(n, 1, values) {END_CONSTRUCTOR} //++ Vector::Vector(const Vector& v) // // Constructeur par copie. //-- : Matrix(v) {END_CONSTRUCTOR} //++ Vector::Vector(const Matrix& a) // // Constructeur par "copie" à partir d'une matrice, qui doit avoir une seule colonne. // // *Exceptions :* // sizeMismatchErr si la matrice a plus d'une colonne //-- : Matrix(a.nr,1) // Matrix(a) ne marche pas, pourquoi ???? bug gcc ??? { if (a.nc != 1) THROW(sizeMismatchErr); memcpy(data, a.data, a.nr * sizeof(double)); END_CONSTRUCTOR } //++ Vector::Vector(const TVector& v) // // Constructeur par "copie" a partir d'un TVector. // Attention, les donnees sont partagees. //-- : Matrix(v) { } //++ // Titre Opérateurs //-- //++ // double& operator()(int n) // double const& operator()(int n) const // Accès aux éléments. //-- //++ Vector& Vector::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("Vector::FitResidus: size mismatch\n")); GeneralFunction* f = gfit.GetFunction(); if(f==NULL) throw(NullPtrError("Vector::FitResidus: NULL pointer\n")); Vector par = gfit.GetParm(); Vector v(*this); for(int i=0;iValue(&x,par.Data()); } return v; } //++ Vector Vector::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("Vector::FitResidus: size mismatch\n")); GeneralFunction* f = gfit.GetFunction(); if(f==NULL) throw(NullPtrError("Vector::FitResidus: NULL pointer\n")); Vector par = gfit.GetParm(); Vector v(*this); for(int i=0;iValue(&x,par.Data()); } return v; }