s="";
k++;
}
}
}
//------------------------------------------------------------
// Формирование массива конечных условий
//------------------------------------------------------------
S=Edit4->Text;
s="";
k=0;
double *xf;
xf=new double[FiniConditionNum];
for (i=1; i<=S.Length(); i++)
{
if ((S[i]!=' ')&(S[i]!='[')&(S[i]!=']'))
{
s+=S[i];
}
else
{
if (!s.IsEmpty())
{
xf[k]=StrToFloat(s);
s="";
k++;
}
}
}
//------------------------------------------------------------
// Вычисляем коэффициенты терминального управления
//------------------------------------------------------------
// Указатель на массив коэффициентов
double *C;
C=CoeffC(xo, InitConditionNum, xf, FiniConditionNum, T);
for (i=0; i<InitConditionNum+FiniConditionNum; i++)
{
ListBox1->Items->Add("C["+IntToStr(i)+"] = "
+FloatToStrF(C[i], ffFixed, 7, 5));
}
//------------------------------------------------------------
// Вычисляем управляющую функцию u(t)
//------------------------------------------------------------
double dT, t=0.0;
dT=StrToFloat(Edit6->Text);
int N=(int)T/dT;
StringGrid1->RowCount=N+3;
double u, sum=0.0;
for(i=0; i<=N+1; i++)
{
StringGrid1->Cells[0][i+1]=FloatToStrF(t, ffFixed, 7, 5);
for (k=0; k<InitConditionNum+FiniConditionNum; k++)
{
if (k==0)
{
sum+=C[k];
}
else
{
sum+=C[k]*pow(t, k);
}
}
Series1->AddXY(t, sum, "", clTeeColor);
Application->ProcessMessages();
StringGrid1->Cells[1][i+1]=FloatToStrF(sum, ffFixed, 5, 3);
sum=0.0;
t+=dT;
}
//------------------------------------------------------------
delete[] C;
delete[] xo;
delete[] xf;
}
//--------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
StringGrid1->Cells[0][0]="Время [сек]";
StringGrid1->Cells[1][0]="U(t)";
}
//--------------------------------------------------------------
void __fastcall TForm1::bbSaveClick(TObject *Sender)
{
ofstream out;
int i;
if (SaveDialog1->Execute())
{
out.open(SaveDialog1->FileName.c_str(), 0);
out<<"Файл протокола от "<<DateToStr(Now()).c_str()<<"\n";
for (i=0; i<ListBox1->Count; i++)
{
out<<"C["<<i<<"] = "<<ListBox1->Items->Strings[i].c_str()<<"\n";
}
for (i=0; i<StringGrid1->RowCount; i++)
{
out<<StringGrid1->Cells[0][i].c_str()<<"\t"<<StringGrid1->Cells[1][i].c_str()<<"\n";
}
out.close();
}
}
//--------------------------------------------------------------
void __fastcall TForm1::bbSendClick(TObject *Sender)
{
String S="@";
int i;
//------------------------------------------------------------
// Формируем пакет для передачи информации
//------------------------------------------------------------
for (i=0; i<ListBox1->Count; i++)
{
S+=ListBox1->Items->Strings[i]+"%";
}
S+="#";
//------------------------------------------------------------
// Вводим IP-адрес
//------------------------------------------------------------
UDP->Host=MaskEdit1->Text;
//------------------------------------------------------------
// Пересылка данных
//------------------------------------------------------------
try
{
UDP->Send(S);
}
catch(...)
{
ShowMessage("Не удалось передать информационный пакет!");
}
//------------------------------------------------------------
}
//--------------------------------------------------------------
void __fastcall TForm1::bbAboutClick(TObject *Sender)
{
FormAbout->ShowModal();
}
//--------------------------------------------------------------