Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабы / С++Builder / Laba5 / task1 / Unit1

.cpp
Скачиваний:
13
Добавлен:
17.04.2013
Размер:
2.56 Кб
Скачать
//---------------------------------------------------------------------------

#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;
}
//---------------------------------------------------------------------------
Соседние файлы в папке task1