Скачиваний:
17
Добавлен:
02.05.2014
Размер:
1.8 Кб
Скачать
//---------------------------------------------------------------------------

#include <vcl.h>
#include <math.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "CSPIN"
#pragma resource "*.dfm"
TForm1 *Form1;
 float a;
 float b;
 float c;
 float d;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------



void __fastcall TForm1::btnRunClick(TObject *Sender)
{
    a = cseA->Value;
    b = StrToFloat(edB->Text);
    c = StrToFloat(edC->Text);
    d = StrToFloat(edD->Text);

    float x0 = cseX->Value;
    float y0 = cseY->Value;

    float x1,y1;

    double E = pow(10,StrToFloat(cbE->Text));
    float a0 = cseA0->Value;

    do{
        x1 = x0 - a0*dfdx(x0,y0);
        y1 = y0 - a0*dfdy(x0,y0);
        if(f(x1,y1)>f(x0,y0))
            a0=a0/2;
        else
        {
            a0=a0*2;
            x0=x1; y0=y1;
        }
    }while(fabs(dfdx(x1,y1))>E/2&&fabs(dfdy(x1,y1))>E/2);
    edX->Text = x1;
    edY->Text = y1;
    edZ->Text = f(x1,y1);

    
}

double TForm1::dfdy(float x,float y)
{
    return(b+2*d*y*pow(M_E,c*x*x+d*y*y));
}

double TForm1::dfdx(float x,float y)
{
    return(a+2*c*x*pow(M_E,c*x*x+d*y*y));
}

double TForm1::f(float x,float y)
{
    return(a*x+b*y+pow(M_E,c*x*x+d*y*y));
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    Close();
}
//---------------------------------------------------------------------------

Соседние файлы в папке Экстремум функции