Статистический анализ технологической системы с использованием методов регрессионного анализа

Автор работы: Пользователь скрыл имя, 02 Февраля 2014 в 22:36, курсовая работа

Краткое описание

Целью курсовой работы является:
- построить имитационную модель функционирования торгового предприятия;
- сформировать план проведения эксперимента;
- построить регрессионную функцию, адекватно описывающую модель торгового предприятия;
- сделать выводы, провести анализ уравнения.

Содержание

1. Цель работы 7
2. Постановка задания 7
3. Спецификация процедур и функций 7
Список используемых источников 8
Приложение А Теоретические расчеты 9
Приложение Б Контрольный пример 12
Приложение В Текст программы 13

Прикрепленные файлы: 1 файл

отчет.docx

— 136.19 Кб (Скачать документ)

 

Приложение В

Текст программы

//---------------------------------------------------------------------------

 

#include <vcl.h>

//---------------------------------------------------------------------------

 

#include <vcl.h>

#pragma hdrstop

#include<stdio.h>

#include <math.h>

#include "Unit1.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

int mas1[8][4]={1,-1,-1,-1,

                1,1,-1,-1,

                1,-1,1,-1,

                1,1,1,-1,

                1,-1,-1,1,

                1,1,-1,1,

                1,-1,1,1,

                1,1,1,1};

int mas1_1[8][4]={1,1,1,-1,

                  -1,-1,1,1,

                  -1,1,-1,1,

                  1,-1,-1,-1,

                  1,-1,-1,1,

                  -1,1,-1,-1,

                  -1,-1,1,-1,

                   1,1,1,1};

float mas2[8][3];

float mast[8];

float mas3_mx[8],mas4_dx[8],mas5_B[4],mas5_B2[4],XXX[8];

float Yj[8],Yj1[8];

float G=0,Svospr=0,fvospr=0;

int N=8,l=3;

float Fras=0,Sad=0,Sbi=0,Sad2=0,Fras2=0;

float Ftab=3.0,ttab=2.12,Ftab2=4.68;

float __fastcall TForm1::NormZakon(float M,float d)

{

 float r,z=0,X;

 for(int i=0;i<12;i++)

{

  r=rand()%10000;

  r/=10000;

  z+=r;

}

 z-=6;

X=M+d*z;

 return X;

}

 

float __fastcall TForm1::RavnZakon(float a,float b)

{

 float r,X;

r=rand()%10000;

 r/=10000;

X=a+r*(b-a);

 return X;

}

 

float __fastcall TForm1::ExpZakon(float L)

{

 float r,X;

r=rand()%10000;

 r/=10000;

X=(-1/L)*log(1-r);

 return X;

}

void __fastcall TForm1::Immod(void)

{

 randomize();

 int i1,j1;

   int i,j,N=100,a,b,pred,strax,Fl,p,Kol=0,Kol1;

 float prib,M,d,L,T,t,time=0,I=0,D=0;

 float a1,b1,c;

 pred=1000;

a=1;

b=3;

d=0;

a1=50;

b1=10;

c=40;

for(i1=0;i1<8;i1++)

  for(j1=0;j1<3;j1++)

  {

  if(i1==0){ strax=110;

             M=5,5;

             L=6;

              }

  if(i1==1){ strax=110;

             M=5,5;

             L=14;

              }

  if(i1==2){ strax=140;

             M=5,5;

             L=6;

              }

  if(i1==3){ strax=140;

             M=5,5;

             L=14;

              }

  if(i1==4){ strax=110;

             M=8,5;

             L=6;

              }

  if(i1==5){ strax=110;

             M=8,5;

             L=14;

              }

  if(i1==6){ strax=140;

             M=8,5;

             L=6;

              }

 

  if(i1==7){ strax=140;

             M=8,5;

             L=14;

              }

 for(i=0;i<N;i++)

{

  Kol1=0;

  Kol=Kol+pred;

  while(Kol>strax)

  {

   time+=ExpZakon(L);

   p=(int)RavnZakon(a,b);

   Kol-=p;

   Kol1+=p;

  }

  T=NormZakon(M,d);

  t=0;

  Fl=0;

  while(t<T)

  {

   if(Kol<=0)

   {

    D++; Fl=1; break;

   }

   t+=ExpZakon(L);

   p=(int)RavnZakon(a,b);

   Kol-=p;

   Kol1+=p;

  }

  if(!Fl)

  {

   I++;

   prib+=Kol1*a1-(pred-Kol1)*b1;

  }

  else prib+=pred*a1-(Kol1-pred)*c;

 time+=t;

}

 mas2[i1][j1]=prib;

 prib=0;

}

}

 

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

        : TForm(Owner)

{

 int i,j;

 for(i=1;i<9;i++)

StringGrid1->Cells[0][i]=i;

StringGrid1->Cells[1][0]="X0";

StringGrid1->Cells[2][0]="X1";

StringGrid1->Cells[3][0]="X2";

StringGrid1->Cells[4][0]="X3";

StringGrid1->Cells[5][0]="Y_mx";

StringGrid1->Cells[6][0]="Dx";

StringGrid1->Cells[7][0]="Yj";

StringGrid1->Cells[8][0]="X1X2";

StringGrid1->Cells[9][0]="X1X3";

StringGrid1->Cells[10][0]="X2X3";

StringGrid1->Cells[11][0]="X1X2X3";

StringGrid1->Cells[12][0]="Y_mx";

StringGrid1->Cells[13][0]="Ym";

//*************

StringGrid2->Cells[0][1]="B0";

StringGrid2->Cells[0][2]="B1";

StringGrid2->Cells[0][3]="B2";

StringGrid2->Cells[0][4]="B3";

StringGrid2->Cells[0][5]="B12";

StringGrid2->Cells[0][6]="B13";

StringGrid2->Cells[0][7]="B23";

StringGrid2->Cells[0][8]="B123";

//*************

StringGrid3->Cells[0][1]="t0";

StringGrid3->Cells[0][2]="t1";

StringGrid3->Cells[0][3]="t2";

StringGrid3->Cells[0][4]="t3";

StringGrid3->Cells[0][5]="t12";

StringGrid3->Cells[0][6]="t13";

StringGrid3->Cells[0][7]="t23";

StringGrid3->Cells[0][8]="t123";

//*************

 for(i=0;i<8;i++)

  for(j=0;j<4;j++)

   if(mas1[i][j]==-1) StringGrid1->Cells[j+1][i+1]="-";

    else StringGrid1->Cells[j+1][i+1]="+";

 

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1::Button1Click(TObject *Sender)

{

 Immod();

 int i,j;

 for(i=0;i<8;i++)

  for(j=0;j<3;j++)

   mas3_mx[i]+=mas2[i][j];

 for(i=0;i<8;i++)

  mas3_mx[i]/=3;

 for(i=0;i<8;i++)

  for(j=0;j<3;j++)

  mas4_dx[i]+=pow((mas2[i][j]-mas3_mx[i]),2);

 for(i=0;i<8;i++) mas4_dx[i]/=2;

  for(i=0;i<8;i++)

   {

    StringGrid1->Cells[5][i+1]=mas3_mx[i];

    StringGrid1->Cells[6][i+1]=mas4_dx[i];

   }

  Button1->Enabled=false;

  Button2->Enabled=true;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)

{

int i;

 float sdx,max_dx=0;

    for(i=0;i<8;i++)

     {

      if(max_dx<mas4_dx[i]) max_dx=mas4_dx[i];

       sdx+=mas4_dx[i];

     }

   G=max_dx/sdx;

  Edit1->Text=FloatToStr(G);

  Svospr=sdx/N;

  Edit2->Text=FloatToStr(Svospr);

  fvospr=N*(l-1);

  Edit3->Text=FloatToStr(fvospr);

  Button2->Enabled=false;

  Button3->Enabled=true;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button3Click(TObject *Sender)

{

 int i,j,h=4;

  mas3_mx;

  float Sad1;

   for(i=0;i<4;i++)

    for(j=0;j<8;j++)

     {

      mas5_B[i]+=mas1[j][i]*mas3_mx[j];

     }

     for(i=0;i<4;i++)

      mas5_B[i]/=8;

 for(i=0;i<4;i++)

  StringGrid2->Cells[1][i+1]=mas5_B[i];

 

  Edit4->Text=FloatToStr(mas5_B[0]);

  Edit5->Text=FloatToStr(mas5_B[1]);

  Edit6->Text=FloatToStr(mas5_B[2]);

  Edit7->Text=FloatToStr(mas5_B[3]);

 for(i=0;i<8;i++)

  for(j=0;j<4;j++)

   {

    Yj[i]+=mas5_B[j]*mas1[i][j];

   }

 for(i=0;i<8;i++)

  StringGrid1->Cells[7][i+1]=Yj[i];

//

 for(i=0;i<8;i++)

  {

   Sad1+=pow((mas3_mx[i]-Yj[i]),2);

  }

Sad=Sad1*l/(N-h);

  Edit8->Text=FloatToStr(Sad);

 Fras=Sad/Svospr;

  Edit9->Text=FloatToStr(Fras);

 if(Fras>Ftab) {Label12->Caption=">";Button4->Enabled=true;  ShowMessage("Fras>Ftab  продолжаем расчет");}

  else Label12->Caption="<";

  Button3->Enabled=false;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button4Click(TObject *Sender)

{

 int i,j;

 for(i=0;i<8;i++)

  for(j=0;j<4;j++)

   if(mas1_1[i][j]==-1) StringGrid1->Cells[j+8][i+1]="-";

    else StringGrid1->Cells[j+8][i+1]="+";

 

    for(i=0;i<4;i++)

    for(j=0;j<8;j++)

     {

      mas5_B2[i]+=mas1_1[j][i]*mas3_mx[j];

     }

     for(i=0;i<4;i++)

      mas5_B2[i]/=8;

 for(i=0;i<4;i++)

  StringGrid2->Cells[1][i+5]=mas5_B2[i];

 

  Sbi=sqrt(Svospr/(l*N));

   Edit10->Text=FloatToStr(Sbi);

 

 for(i=0;i<4;i++)

  mast[i]=fabs(mas5_B[i])/Sbi;

 for(i=0;i<4;i++)

  mast[i+4]=fabs(mas5_B2[i])/Sbi;

 for(i=0;i<8;i++)

  StringGrid3->Cells[1][i+1]=mast[i];

 

 for(i=0;i<8;i++)

  if(i<4)

  {

   if(mast[i]>ttab) XXX[i]=mas5_B[i];

    else XXX[i]=0;

  }

   else

   {

    if(mast[i]>ttab) XXX[i]=mas5_B2[i-4];

    else XXX[i]=0;

   }

 

  Edit11->Text=FloatToStr(XXX[0]);

  Edit12->Text=FloatToStr(XXX[1]);

  Edit13->Text=FloatToStr(XXX[2]);

  Edit14->Text=FloatToStr(XXX[3]);

  Edit15->Text=FloatToStr(XXX[4]);

  Edit16->Text=FloatToStr(XXX[5]);

  Edit17->Text=FloatToStr(XXX[6]);

  Edit18->Text=FloatToStr(XXX[7]);

 

 for(i=0;i<8;i++)

  for(j=0;j<4;j++)

   if(XXX[j]!=0)

     Yj1[i]+=XXX[j]*mas1[i][j];

 

 for(i=0;i<8;i++)

  for(j=0;j<4;j++)

   if(XXX[j+4]!=0)

       Yj1[i]+=XXX[j+4]*mas1_1[i][j];

 

 for(i=0;i<8;i++)

  StringGrid1->Cells[13][i+1]=Yj1[i];

 

Button4->Enabled=false;

Button5->Enabled=true;

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1::Button5Click(TObject *Sender)

{

 int i,j,h=6;

  float Sad1;

 for(i=0;i<8;i++)

  {

   Sad1+=pow((mas3_mx[i]-Yj1[i]),2);

  }

Sad2=Sad1*l/(N-h);

  Edit19->Text=FloatToStr(Sad2);

Fras2=Sad2/Svospr;

 if(Fras2>Ftab2) {Label26->Caption=">";}

  else Label26->Caption="<";

  Edit20->Text=FloatToStr(Fras2);

  Button5->Enabled=false;

  ShowMessage("Fras<Ftab полученное уравнение приблеженной регрессии адекватно описывает исследуемые процессы, т.е. математическая модель хорошо согласуется с эксперементальными данными");

 Button6->Enabled=true;

 

 

}

//---------------------------------------------------------------------------

 

 

 

void __fastcall TForm1::Button6Click(TObject *Sender)

{

int i;

 for(i=0;i<8;i++)

{mast[i]=0;

mas3_mx[i]=0;

mas4_dx[i]=0;

XXX[i]=0;

 Yj[i]=0;

 Yj1[i]=0;

}

 for(i=0;i<4;i++)

{

mas5_B[i]=0;mas5_B2[i]=0;

}

G=0,Svospr=0,fvospr=0;

Fras=0;Sad=0;Sbi=0;Sad2=0;Fras2=0;

Button1->Enabled=true;

Button6->Enabled=false;

}

 

//---------------------------------------------------------------------------




Информация о работе Статистический анализ технологической системы с использованием методов регрессионного анализа