//---------------------------------------------------------------------------
#include <vcl.h>
#include <math.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
float f(float x)
{
return ( 1.2*log(x) - 3/3,14 * sin(3.14*x) ); }
float f2(float x)
{
return ( 2 * x*x*x/3 + cos(4*x)/4 +3 ); }
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
float a=6, b=7;
float x0,x1,delt,eps,xz;
float t;
eps=0.001;
delt=(b-a)/4;
x0=a;
while (true)
{
A: x1=x0+delt;
if ( f(x0) > f(x1) )
{
x0=x1;
if (x0>a && x0<b) goto A;
else goto B;
}
B: if (delt > eps ) { x0=x1; delt= -delt/4; }
else { xz=x0; break; }
}
Form1->Memo1->Lines->Add(xz);
if ( f(xz)> f(xz+0.001)) Form1->Memo1->Lines->Add("max");
else Form1->Memo1->Lines->Add("min");
t=a;
Form1->Chart1->Series[0]->Clear();
while (t<b)
{
t=t+eps;
Form1->Chart1->Series[0]->AddXY(t,f(t),clRed);
}
//////////////////
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
float a=0, b=1;
float x0,x1,delt,eps,xz;
float t;
eps=0.001;
delt=(b-a)/4;
x0=a;
//while (true)
//{
A2: x1=x0+delt;
if ( f2(x0) > f2(x1) ) goto A4;
else goto A5;
A4: x0=x1;
if (x0 >= a && x0 <= b) goto A2;
else goto A5;
A5: if (delt < eps ) { xz=x0; }
else { x0=x1, delt=-delt/4; goto A2; }
//}
Form1->Memo1->Lines->Add(xz);
if ( f2(xz)> f2(xz+0.001)) Form1->Memo1->Lines->Add("max");
else Form1->Memo1->Lines->Add("min");
t=a;
Form1->Chart1->Series[0]->Clear();
while (t<b)
{
t=t+eps;
Form1->Chart1->Series[0]->AddXY(t,f2(t),clRed);
}
Form1->Memo1->Lines->Add(f2(0));
Form1->Memo1->Lines->Add(f2(0.5625));
Form1->Memo1->Lines->Add(f2(0.5625+eps*57));
Form1->Memo1->Lines->Add(f2(1));
//----------
float x1,x2,x3,f1,f2,f3;
float xs,fxs;
x1=a;
x2=(a+b)/2;
x3=b;
f1=f2(x1);
f2=f2(x2);
f3=f2(x3);
xs=1/2 * (x1+x2- (f2-f1)*(x3-x2)/(x2-x1)/( (f3-f1)/(x3-x1)-(f2-f1)/(x2-x1) );
fxs=f2(xs);
}
//---------------------------------------------------------------------------
[свернуть]