Задумал я реализовать поиск минимум функции одной методом золотого сечения и функции 2х переменных методом координатного спуска (используя метод золотого сечения по каждой из переменной). В реализации этого всего решил использовать классы. Переменная функция описана в виде типа. Если хочу описать тип функция пишу:
| Код | typedef double (__closure *TFunc)(double x);
|
| Код | type TFunc = function(X: Double): Double of object;
|
Вопрос: как это дело описать в MinGW (если правильно понял, то это он используется в wxDev-C++)
P.S. Привожу хеадер билдеровского файла
| Код | //---------------------------------------------------------------------------
#ifndef SearchPlaneH #define SearchPlaneH //---------------------------------------------------------------------------
#include <vector>
//using namespace std;
typedef struct _T3DPoint{ double X, Y, Z, T; } T3DPoint;
typedef std::vector<T3DPoint> T3DPointArray;
typedef double (__closure *Func)(double x);
#define GOLD 0.38196601125010515180 #ifndef M_PI #define M_PI 3.14159265358979323846 #endif #define DegToRad(a) (a*M_PI/180.) #define RadToDeg(a) (a*180./M_PI)
class TGoldSection{ public: double Min(double a, double b, Func func, double Error=0.001); };
class SearchAngles{ private: T3DPointArray P; double FTheta, FPhi, FD; double FError, FMaxIter, FNumIter; double EvalL(double Theta, double Phi, double D); double Func1(double Theta){return EvalL(Theta, FPhi, FD);}; double Func2(double Phi){return EvalL(FTheta, Phi, FD);}; double Func3(double D){return EvalL(FTheta, FPhi, D);}; double EvalD(double Theta, double Phi); public: SearchAngles(const T3DPointArray Points, double Error=0.001, double MaxIter=1000); bool Down(double &Theta, double &Phi); int GetNumIter(void) const {return FNumIter;}; }; #endif
|
|