⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.cpp

📁 该软件用于研究周期信号的混沌检测
💻 CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
#include <math.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
void Euler(float *x,float *y);

double  X[20000],Y[20000],Xf[20000],Zs[20000],s[20000];


 double  Pli[20000],Pli2[20000],Pli3[20000];
 int ti=0;
 float pi=3.1415926;
 float h=0.025;  //振动频率
 float k=0.5;  //阻尼系数
 double f=0.497658062565;  //策动力  f=0.49765814842;  f=0.49765814843;
 double a=0.00000000001,fk=0.000000000001,Zk=0.0001;
 int i,x0,y0,jj=0;
 float e1,e2,e3,e4,e5,e6;
 float  w=1,t=0;

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{

     Edit9->Text=h;
     Edit10->Text=k;
     Edit11->Text=f;
     Edit12->Text=a;
     Edit13->Text=0;//-0.21;
     Edit14->Text=0;//0.02;
     Edit15->Text=1.0;
     Edit18->Text=Zk;
     Edit19->Text=fk;
     h=StrToFloat(Edit9->Text);
   k=StrToFloat(Edit10->Text);
   f=StrToFloat(Edit11->Text);
   fk=StrToFloat(Edit19->Text);
   a=StrToFloat(Edit12->Text);
   w=StrToFloat(Edit15->Text);
   X[0]=StrToFloat(Edit13->Text);
   Y[0]=StrToFloat(Edit14->Text);
   Zk=StrToFloat(Edit18->Text);

   

}
//---------------------------------------------------------------------------

void __fastcall TForm1::Timer1Timer(TObject *Sender)
{

 int  cy=0,cys=3000;
 int kh=0;
 float t1,t2,t11,t22;



 while(cy<cys){
           i=cy;
        //t=cy/31.415926;
           t=cy/62.831852;    //ok!
         //   t=cy/15.707963;
                s[cy]=cos(w*t);  //sin(w*t);
                Zs[cy]=1-(rand()%1000)/500.0;  //  // Zs[cy]=rand()/10000.0;//
             if( Zs[cy]>=1) Zs[cy]=1;
             if( Zs[cy]<=-1) Zs[cy]=-1;
              Xf[cy]=cos(w*t); // t=0,step 0.001 50*pi      157079.63
              X[i+1]=h*Y[i]+X[i];
               t1=h*Y[i]+X[i];
           //    t11=h*((-k)*Y[i]+X[i]-pow(X[i],3))+Y[i];  //  +a*s[i]+Zs[i]+Y[i]    +f*cos(2*pi*500*cy
              t11=h*((-k)*Y[i]+X[i]-pow(X[i],3)+f*Xf[i]+a*s[i]+Zk*Zs[i])+Y[i];
             //  Y[i+1]=h*((-k)*Y[i]+X[i]-pow(X[i],3)+f*Xf[i]+a*s[i]+Zs[i]+Y[i]);
             t2=h*t11+X[i];
              t22=h*((-k)*t11+t1-pow(t1,3)+f*Xf[i+1]+a*s[i+1]+Zk*Zs[i+1])+Y[i];  //  +f*cos(2*pi*500*(cy+1))


              
              X[i+1]=(t1+t2)/2.0;
              Y[i+1]=(t11+t22)/2.0 ;

    x0=X[i]*100+200;y0=-Y[i]*100+200;
  Canvas->Pixels[x0][y0] = clRed;
   //  f+=0.00001;
     Edit1->Text=e1;
     Edit2->Text=e2;
     Edit3->Text=e3;
     Edit4->Text=e4;
     Edit5->Text=h;
     Edit6->Text=x0;
     Edit7->Text=y0;
//-----------------------------------------------------------------
                 cy++;
   }


   Canvas->MoveTo(0,200);
   Canvas->LineTo(400,200);
   Canvas->MoveTo(200,0);
   Canvas->LineTo(200,400);

   Canvas->MoveTo(100,0);
   Canvas->LineTo(100,400);
    Canvas->MoveTo(300,0);
   Canvas->LineTo(300,400);
//========================================
     Series1->Clear();
     Series2->Clear();
     Series3->Clear();
   //   Series4->Clear();
       for(kh=0;kh<3000;kh++){
       if(CheckBox3->Checked==true){Series1->Add(X[kh]*10,1,clRed);}          //显示立压
       if(CheckBox4->Checked==true){Series2->Add(Y[kh]*10,1,clBlue);}          //显示套压
       if(CheckBox5->Checked==true){Series3->Add(2*Zs[kh],1,clYellow);}      //显示相位差
     //   if(CheckBox6->Checked==true){Series4->Add(Zs[kh]*10,1,clGreen);}
      }


        ti++;

     if(ti>3000) {ti=0;      }

      if(jj==0){  f+=0;           if(f>2) {f=2;} }
      if(jj==1){  f-=fk; if(f<0.2) {f=0.2;} }
      if(jj==2){  f+=fk; if(f>2) {f=2;} }



          Edit16->Text=f;
          Edit17->Text=Zk*Zs[3000];

 Refresh();


}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Timer1->Enabled =true;  //hkljnkjln        
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{
Timer1->Enabled =false;        
}

//---------------------------------------------------------------------------
// 对于应用改进的Euler方法求系统输出的前三点值的C代码
//(h,k,f,a为已知系统参数):
 
void Euler(float *x,float *y){
int i;
float t1,t2,t11,t22;
 for(i=0;i<3;i++){
    t1=h*y[i]+x[i];         //x=wy
    t11=h*((-k)*y[i]+x[i]-pow(x[i],3)+f*Xf[i]+a*s[i]+Zs[i]+y[i]);
    t2=h*t11+x[i];
    t22=y[i]+h*((-k)*t11+t1-pow(t1,3)+f*Xf[i+1]+a*s[i+1]+Zs[i+1]);
    x[i+1]=(t1+t2)/2;
    y[i+1]=(t11+t22)/2;
   }
   e1=x[0];     e2=y[0];
   e3=x[1];     e4=y[1];
   e5=x[2];     e6=y[2];
 }




/*
void Euler(float *x,float *y){
int i;
float t1,t2,t11,t22;
 for(i=0;i<3;i++){
    t1=h*y[i]+x[i];         //x=wy
    t11=h*((-k)*y[i]+x[i]-pow(x[i],3)+f*Xf[i]+a*s[i]+Zs[i]+y[i]);
    t2=h*t11+x[i];
    t22=y[i]+h*((-k)*t11+t1-pow(t1,3)+f*Xf[i+1]+a*s[i+1]+Zs[i+1]);
    x[i+1]=(t1+t2)/2;
    y[i+1]=(t11+t22)/2;
   }
 }

*/

void __fastcall TForm1::Button3Click(TObject *Sender)
{



   h=StrToFloat(Edit9->Text);
   k=StrToFloat(Edit10->Text);
   f=StrToFloat(Edit11->Text);
   fk=StrToFloat(Edit19->Text);
   a=StrToFloat(Edit12->Text);
   w=StrToFloat(Edit15->Text);

   X[0]=StrToFloat(Edit13->Text);
   Y[0]=StrToFloat(Edit14->Text);
   Zk=StrToFloat(Edit18->Text);




}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button4Click(TObject *Sender)
{

  h=0.29;  //振动频率
  k=0.5;  //阻尼系数
  f=7.5;  //策动力
  a=0.01;
  w=0.2;
   X[0]=-0.21;
   Y[0]=0.02;


   Edit9->Text=h;
     Edit10->Text=k;
     Edit11->Text=f;
     Edit12->Text=a;
     Edit13->Text=-0.21;
     Edit14->Text=0.02;






}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button5Click(TObject *Sender)
{
    Refresh();        
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button6Click(TObject *Sender)
{
jj=0;        
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button7Click(TObject *Sender)
{
  jj=1;        
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button8Click(TObject *Sender)
{
 jj=2;        
}
//---------------------------------------------------------------------------




⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -