Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Министерство образования и науки Российской Федерации
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
Новосибирский государственный технический университет
Кафедра электротехнических комплексов
РАСЧЕТНО-ГРАФИЧЕСКАЯ РАБОТА
по дисциплине «Программирование и алгоритмизация»
На тему: «Разложение функции в ряд Фурье»
Выполнил:
Макаричев.П.А
Студент ФМА гр. ЭМА-21
Проверил:
к.т.н. Мятеж А.В.
г. Новосибирск, 2013 год.
//---------------------------------------------------------------------------
#include <vcl.h>
#include <math.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int X1, Y1, X0=50, Y0=300;
float XX,YY,F0=0;
float A1=0, B1=0, A2=0, B2=0, A3=0, B3=0, A4=0, B4=0, A5=0, B5=0;
float A6=0, B6=0, A7=0, B7=0, A8=0, B8=0, A9=0,B9=0, A10=0, B10=0;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormActivate(TObject *Sender)
{
///--- Построение осей
int h,k;
Form1->Image1->Canvas->Pen->Color=clBlack;
Form1->Image1->Canvas->Pen->Width=1;
Form1->Image1->Canvas->MoveTo(30,300);
Form1->Image1->Canvas->LineTo(570,300);
Form1->Image1->Canvas->MoveTo(50,30);
Form1->Image1->Canvas->LineTo(50,570);
Form1->Image1->Canvas->TextOutA(53,303,0);
////---- Рисование разметки на осях (x,y)
for (k=1;k<=8;k++)
{
///---Ось Х
Form1->Image1->Canvas->MoveTo(60+k*62.5,30);
Form1->Image1->Canvas->LineTo(60+k*62.5,570);
Form1->Image1->Canvas->TextOutA(46+k*62.5,305,k*0.7854);
}
for (h=1;h<=10;h++)
{
///---Ось Y
Form1->Image1->Canvas->MoveTo(48,300-h*25);
Form1->Image1->Canvas->LineTo(570,300-h*25);
Form1->Image1->Canvas->TextOutA(53,295-h*25,h*0.1);
Form1->Image1->Canvas->MoveTo(48,300+h*25);
Form1->Image1->Canvas->LineTo(570,300+h*25);
Form1->Image1->Canvas->TextOutA(53,295+h*25,-h*0.1);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift,
int X, int Y)
{
X1=X;
Y1=Y;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image1Click(TObject *Sender)
{
////-----рисование линий
Form1->Image1->Canvas->Pen->Color=clRed;
Form1->Image1->Canvas->Pen->Width=3;
if (X1>X0)
{
Form1->Memo1->Clear();
Form1->Memo2->Clear();
Form1->Image1->Canvas->MoveTo(X0,Y0);
Form1->Image1->Canvas->LineTo(X1,Y1);
///---Вычисление значения F0
for (XX=X0;XX<X1;XX++)
{
YY=Y0+(XX-X0)*((Y1-Y0)/(1.0*(X1-X0)));
F0=F0+((300-YY)/250.0);
A1=A1+cos(1*((XX-50)*6.2831/500.0))*(300-YY)/250.0;
B1=B1+sin(1*((XX-50)*6.2831/500.0))*(300-YY)/250.0;
A2=A2+cos(2*((XX-50)*6.2831/500.0))*(300-YY)/250.0;
B2=B2+sin(2*((XX-50)*6.2831/500.0))*(300-YY)/250.0;
A3=A3+cos(3*((XX-50)*6.2831/500.0))*(300-YY)/250.0;
B3=B3+sin(3*((XX-50)*6.2831/500.0))*(300-YY)/250.0;
A4=A4+cos(4*((XX-50)*6.2831/500.0))*(300-YY)/250.0;
B4=B4+sin(4*((XX-50)*6.2831/500.0))*(300-YY)/250.0;
A5=A5+cos(5*((XX-50)*6.2831/500.0))*(300-YY)/250.0;
B5=B5+sin(5*((XX-50)*6.2831/500.0))*(300-YY)/250.0;
A6=A6+cos(6*((XX-50)*6.2831/500.0))*(300-YY)/250.0;
B6=B6+sin(6*((XX-50)*6.2831/500.0))*(300-YY)/250.0;
A7=A7+cos(7*((XX-50)*6.2831/500.0))*(300-YY)/250.0;
B7=B7+sin(7*((XX-50)*6.2831/500.0))*(300-YY)/250.0;
A8=A8+cos(8*((XX-50)*6.2831/500.0))*(300-YY)/250.0;
B8=B8+sin(8*((XX-50)*6.2831/500.0))*(300-YY)/250.0;
A9=A9+cos(9*((XX-50)*6.2831/500.0))*(300-YY)/250.0;
B9=B9+sin(9*((XX-50)*6.2831/500.0))*(300-YY)/250.0;
A10=A10+cos(10*((XX-50)*6.2831/500.0))*(300-YY)/250.0;
B10=B10+sin(10*((XX-50)*6.2831/500.0))*(300-YY)/250.0;
}
Form1->Edit1->Text=FloatToStrF(F0/(X1-50.0),ffFixed,2,4);
Form1->Memo1->Lines->Add(FloatToStrF(2*A1/(X1-50),ffFixed,2,4));
Form1->Memo2->Lines->Add(FloatToStrF(2*B1/(X1-50),ffFixed,2,4));
Form1->Memo1->Lines->Add(FloatToStrF(2*A2/(X1-50),ffFixed,2,4));
Form1->Memo2->Lines->Add(FloatToStrF(2*B2/(X1-50),ffFixed,2,4));
Form1->Memo1->Lines->Add(FloatToStrF(2*A3/(X1-50),ffFixed,2,4));
Form1->Memo2->Lines->Add(FloatToStrF(2*B3/(X1-50),ffFixed,2,4));
Form1->Memo1->Lines->Add(FloatToStrF(2*A4/(X1-50),ffFixed,2,4));
Form1->Memo2->Lines->Add(FloatToStrF(2*B4/(X1-50),ffFixed,2,4));
Form1->Memo1->Lines->Add(FloatToStrF(2*A5/(X1-50),ffFixed,2,4));
Form1->Memo2->Lines->Add(FloatToStrF(2*B5/(X1-50),ffFixed,2,4));
Form1->Memo1->Lines->Add(FloatToStrF(2*A6/(X1-50),ffFixed,2,4));
Form1->Memo2->Lines->Add(FloatToStrF(2*B6/(X1-50),ffFixed,2,4));
Form1->Memo1->Lines->Add(FloatToStrF(2*A7/(X1-50),ffFixed,2,4));
Form1->Memo2->Lines->Add(FloatToStrF(2*B7/(X1-50),ffFixed,2,4));
Form1->Memo1->Lines->Add(FloatToStrF(2*A8/(X1-50),ffFixed,2,4));
Form1->Memo2->Lines->Add(FloatToStrF(2*B8/(X1-50),ffFixed,2,4));
Form1->Memo1->Lines->Add(FloatToStrF(2*A9/(X1-50),ffFixed,2,4));
Form1->Memo2->Lines->Add(FloatToStrF(2*B9/(X1-50),ffFixed,2,4));
Form1->Memo1->Lines->Add(FloatToStrF(2*A10/(X1-50),ffFixed,2,4));
Form1->Memo2->Lines->Add(FloatToStrF(2*B10/(X1-50),ffFixed,2,4));
X0=X1;
Y0=Y1;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
float U;
Form1->Image1->Canvas->Pen->Color=clBlue;
Form1->Image1->Canvas->Pen->Width=2;
Form1->Image1->Canvas->MoveTo(50,300);
for (XX=50;XX<550;XX++)
{
U=0;
U=U+A1*2/500*cos(1*((XX-50)*6.2831/500.0))+B1*2/500*sin(1*((XX-50)*6.2831/500.0))+A2*2/500*cos(2*((XX-50)*6.2831/500.0))+B2*2/500*sin(2*((XX-50)*6.2831/500.0))+A3*2/500*cos(3*((XX-50)*6.2831/500.0))+B3*2/500*sin(3*((XX-50)*6.2831/500.0))+A4*2/500*cos(4*((XX-50)*6.2831/500.0))+B4*2/500*sin(4*((XX-50)*6.2831/500.0))+A5*2/500*cos(5*((XX-50)*6.2831/500.0))+B5*2/500*sin(5*((XX-50)*6.2831/500.0))+A6*2/500*cos(6*((XX-50)*6.2831/500.0))+B6*2/500*sin(6*((XX-50)*6.2831/500.0))+A7*2/500*cos(7*((XX-50)*6.2831/500.0))+B7*2/500*sin(7*((XX-50)*6.2831/500.0))+A8*2/500*cos(8*((XX-50)*6.2831/500.0))+B8*2/500*sin(8*((XX-50)*6.2831/500.0))+A9*2/500*cos(9*((XX-50)*6.2831/500.0))+B9*2/500*sin(9*((XX-50)*6.2831/500.0))+A10*2/500*cos(10*((XX-50)*6.2831/500.0))+B10*2/500*sin(10*((XX-50)*6.2831/500.0));
Form1->Image1->Canvas->LineTo(XX,300-250*(F0/500+U));
Form1->Image1->Canvas->MoveTo(XX,300-250*(F0/500+U));
}
}
//---------------------------------------------------------------------------