Добавил:
korayakov
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабы / С++Builder / Laba5 / task1 / Unit1
.cpp//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <math.h>
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int n=0;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
for (int i=00; i<100;i++)
{
double x,y;
x=i/100.*2*3.14159-3.14159;
y=(0.5+sin(pow(x,2))/2)*.92+.08;
Chart1->Series[0]->AddXY(x-2*3.14159,y);
}
for (int i=00; i<100;i++)
{
double x,y;
x=i/100.*2*3.14159-3.14159;
y=(0.5-sin(pow(x,2))/2)*.92+.08;
Chart3->Series[0]->AddXY(x,y);
}
for (int i=00; i<100;i++)
{
double x,y;
x=i/100.*2*3.14159-3.14159;
y=(0.5+cos(pow(x,2))/2)*.92+.08;
Chart2->Series[0]->AddXY(x-2*3.14159,y);
}
for (int i=00; i<100;i++)
{
double x,y;
x=i/100.*2*3.14159-3.14159;
y=(0.5+cos(pow(x,2))/2)*.92+.08;
Chart4->Series[0]->AddXY(x,y);
}
}
//--------------------------------------------------------
double TForm1::Convolution(int n)
{
double Re=0,Im=0;
if (n<=99)
for (int i=0; i<=n; i++)
{
Re+=Chart1->Series[0]->XValue[99-i]*Chart3->Series[0]->XValue[n-i]-Chart2->Series[0]->XValue[99-i]*Chart4->Series[0]->XValue[n-i];
Im+=Chart2->Series[0]->XValue[99-i]*Chart3->Series[0]->XValue[n-i]+Chart1->Series[0]->XValue[99-i]*Chart4->Series[0]->XValue[n-i];
}
if(n>=100)
for (int i=99; i>=n-100; i--)
{
Re+=Chart1->Series[0]->XValue[i-n+100]*Chart3->Series[0]->XValue[i]-Chart2->Series[0]->XValue[i-n+100]*Chart4->Series[0]->XValue[i];
Im+=Chart2->Series[0]->XValue[i-n+100]*Chart3->Series[0]->XValue[i]+Chart1->Series[0]->XValue[i-n+100]*Chart4->Series[0]->XValue[i];
}
return sqrt(Re*Re+Im*Im);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
for (int i=0;i<100;i++)
{
Chart1->Series[0]->XValue[i]+=1/100.*2*3.14159;
Chart2->Series[0]->XValue[i]+=1/100.*2*3.14159;
}
Chart5->Series[0]->AddXY(n,Convolution(n));
n++;
if (n==200) Timer1->Enabled=false;
}
//---------------------------------------------------------------------------