Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторные работы / Экстремум функции / Unit1
.cpp//---------------------------------------------------------------------------
#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();
}
//---------------------------------------------------------------------------