Скачиваний:
20
Добавлен:
02.05.2014
Размер:
4.16 Кб
Скачать
#ifndef frmmainH
#define frmmainH
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include "RzEdit.hpp"
#include "RzSpnEdt.hpp"
#include <Mask.hpp>
#include "RzCmboBx.hpp"
#include "RzPanel.hpp"
#include <ExtCtrls.hpp>
#include "RzButton.hpp"
#include <Grids.hpp>

typedef double __fastcall (__closure *FunctionValue)(double &x);
typedef double __fastcall (__closure *FunctionDerivative)(int n, double &x);
typedef void __fastcall (__closure *ItitializeParams)();
class IntegrableFunction {
public:
    FunctionValue m_Function;
    FunctionDerivative m_Derivative;
    ItitializeParams m_Initialize;
    __fastcall IntegrableFunction(FunctionValue value, FunctionDerivative derivative, ItitializeParams init);
    void __fastcall Initialize() { if (m_Initialize) m_Initialize(); }
};

typedef double __fastcall (__closure *IntegralValue)(double h);
class IntegrationMethod {
public:
    IntegralValue m_Integral;
    int m_K; int m_Mdiv;
    __fastcall IntegrationMethod(IntegralValue integral, int k, int mdiv);
};

class TMainForm : public TForm {
__published:
    TRzGroupBox *InputGroupBox;
    TRzComboBox *FunctionList;
    TLabel *FunctionLabel;
    TRzSpinEdit *AParamEdit;
    TLabel *ParamsLabel;
    TLabel *AParamLabel;
    TLabel *BParamLabel;
    TRzSpinEdit *BParamEdit;
    TLabel *Label5;
    TRzSpinEdit *CParamEdit;
    TLabel *DParamLabel;
    TRzSpinEdit *DParamEdit;
    TRzComboBox *MethodList;
    TLabel *MethodLabel;
    TRzGroupBox *OutputGroupBox;
    TLabel *IntervalLabel;
    TRzSpinEdit *XMinEdit;
    TRzSpinEdit *XMaxEdit;
    TRzSpinEdit *NMaxEdit;
    TLabel *Label9;
    TLabel *XMaxLabel;
    TLabel *XMinLabel;
    TLabel *JExactLabel;
    TRzSpinEdit *JExactEdit;
    TRzButton *EvaluateExactButton;
    TLabel *ValuesLabel;
    TRzButton *IntegrateFunctionButton;
    TStringGrid *OutputGrid;
    TLabel *EpsLabel;
    TRzSpinEdit *EpsEdit;
    TLabel *ErrorLabel;
    TLabel *AuthorLabel;
    void __fastcall NMaxEditButtonClick(TObject *Sender,
          TSpinButtonType Button);
    void __fastcall NMaxEditExit(TObject *Sender);
    void __fastcall XMinEditChange(TObject *Sender);
    void __fastcall XMaxEditChange(TObject *Sender);
    void __fastcall FormCreate(TObject *Sender);
    void __fastcall FunctionListChange(TObject *Sender);
    void __fastcall EvaluateExactButtonClick(TObject *Sender);
    void __fastcall EpsEditChange(TObject *Sender);
    void __fastcall IntegrateFunctionButtonClick(TObject *Sender);
    void __fastcall FormKeyDown(TObject *Sender, WORD &Key,
          TShiftState Shift);
    void __fastcall FormKeyUp(TObject *Sender, WORD &Key,
          TShiftState Shift);
private:
    double m_A, m_B, m_C, m_D;
    double m_XMin, m_XMax;
    double m_JExact;
    long m_NMax;
    double m_Eps;
    double m_DerEps;
    int m_K;
    int m_Mdiv;
    FunctionValue m_Function;
    FunctionDerivative m_Derivative;
    IntegralValue m_Integral;
    void __fastcall PrepareData();
    void __fastcall ValidateData();
    double __fastcall PowerFunction(double &x);
    double __fastcall PowerDerivative(int n, double &x);
    void __fastcall PowerInitialize();
    double __fastcall SinAddCosFunction(double &x);
    double __fastcall SinAddCosDerivative(int n, double &x);
    void __fastcall SinAddCosInitialize();
    double __fastcall SinMulCosFunction(double &x);
    double __fastcall SinMulCosDerivative(int n, double &x);
    void __fastcall SinMulCosInitialize();
    double __fastcall PowKorFunction(double &x);
    double __fastcall PowKorDerivative(int n, double &x);
    void __fastcall PowKorInitialize();
    double __fastcall IntegralLeftRect(double h);
    double __fastcall IntegralRightRect(double h);
    double __fastcall IntegralCenterRect(double h);
    double __fastcall IntegralTrapezium(double h);
    double __fastcall IntegralParabola(double h);
    double __fastcall DefDerivative(int n, double x);
public:
    __fastcall TMainForm(TComponent* Owner);
};
extern PACKAGE TMainForm *MainForm;
#endif
Соседние файлы в папке term3.vmath.work4d