/** @(#) functionnd/functionnd_1d.h */
#ifndef FUNCTIONND_1D_H
#define FUNCTIONND_1D_H
//----------------------------------------------------------------------------
#include "../matrixdouble/vectordouble.h"
#include "../mathpos/mathpos.h" //MACHEPS
#include <iostream>
#include <stdexcept> // runtime_exception
using namespace std;
/**
* Interfaz de funciones de varias dimensiones a una dimension. R^n -> R.
* @author Omar Posada Villarreal
* @version 1.0, 12/03/2002
*/
class FunctionND_1D {
public:
// Constructor predeterminado
// Destructor predeterminado
/** Interfaz para evaluar funcion en n dimensiones.
* Logica uno.
* Uso:
* inicio de ejemplo
/** Evalua una funcion R^n -> R.
class Function1 : public FunctionND_1D {
public:
// No se checa las dimensiones de xc y Fc.
double evaluate(VectorDouble &xc) {
xc.setLogic(1);
// Funcion del usuario
return 2.0*pow(xc[1]+xc[2], 2.0) + pow(xc[1]-xc[2], 2.0)- 8.0;
}
}; // No olvidar ";"
* fin de ejemplo
* @param xc Punto donde se evaluara.
* @return Evaluacion de la funcion. f(x1, x2, ..., xn).
* @see Algoritmo FN pagina 296. */
virtual double evaluate(VectorDouble &xc) = 0;
private:
};
//----------------------------------------------------------------------------
#endif
// Fin------------------------------------------------------------------------