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

Лабораторная работа №2

.doc
Скачиваний:
9
Добавлен:
02.05.2014
Размер:
148.99 Кб
Скачать

Министерство Образования Российской Федерации

Уфимский Государственный Авиационный Технический Университет

Кафедра ТК

Отчет по лабораторной работе №1

по предмету «Теоретические основы автоматизации управления»

на тему: Структурно-топологические характеристики систем и их применение

Выполнили: студент

Проверила: Валеева Р.Г.

Уфа 2005

Структурно-топологические характеристики систем и их применение

Цель работы

Изучить виды структурно-топологических характеристик систем и способы их вычислений; проанализировать качество предложенных вариантов структур и их элементов с позиций системного подхода.

Исходные данные системы

Листинг программы:

Unit1.h

#ifndef Unit1H

#define Unit1H

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

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

#include <Dialogs.hpp>

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

class TfrmMain : public TForm

{

__published: // IDE-managed Components

TEdit *edtR;

TLabel *Label1;

TEdit *edtE;

TLabel *Label2;

TEdit *edtQ;

TLabel *Label3;

TEdit *edtB;

TLabel *Label4;

TEdit *edtQrel;

TLabel *Label5;

TEdit *edtQmin;

TLabel *Label6;

TEdit *edtD;

TLabel *Label7;

TEdit *edtZmax;

TLabel *Label8;

TEdit *edtN;

TLabel *Label9;

TButton *btnLoad;

TOpenDialog *OpenDialog;

void __fastcall btnLoadClick(TObject *Sender);

private: // User declarations

public: // User declarations

__fastcall TfrmMain(TComponent* Owner);

};

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

extern PACKAGE TfrmMain *frmMain;

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

#endif

Unit1.cpp

#include <vcl.h>

#pragma hdrstop

#include "Unit1.h"

#include "stdio.h"

#include "math.h"

#pragma package(smart_init)

#pragma resource "*.dfm"

class Data

{

public:

int **A;

int **d;

int N;

Data(AnsiString data_filename, AnsiString param_string)

{

data_file = fopen(data_filename.c_str(),param_string.c_str());

fscanf(data_file,"%i",&N);

FILE *f = fopen("out.txt","wt");

A = new int *[N+1];

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

A[i] = new int[N+1];

d = new int *[N+1];

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

d[i] = new int[N+1];

int K;

for (int i=1; i<=N; i++)

for (int j=1; j<=N; j++)

{

fscanf(data_file,"%i",&K);A[i][j] = K;

}

for (int i=1; i<=N; i++)

for (int j=1; j<=N; j++)

{

fscanf(data_file,"%i",&K);d[i][j] = K;

}

fclose(data_file);

}

~Data()

{

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

{

delete A[i];

delete d[i];

}

delete d;

delete A;

}

private:

FILE *data_file;

};

class Calculator

{

public:

Calculator (Data *datum)

{

data=datum;

N = data->N;

}

float GetR()

{

float R=0;

for (int i=1;i<=N;i++)

for (int j=1;j<=N;j++)

R+=data->A[i][j];

R=R/(2*N-2)-1;

return R;

}

float GetE()

{

float E=0;

float m = 0;

for (int i=1;i<=N;i++)

for (int j=1;j<=N;j++)

if (data->A[i][j]==0)m++;

m=m/2;

for (int i=1;i<=N;i++)

{

float q=0;

for (int j=1;j<=N;j++)

if (data->A[i][j]==0)q++;

q=q*q;

E+=q;

}

E=E-4*m*m/N;

return E;

}

float GetQ()

{

float Q=0;

for (int i=1;i<=N;i++)

for (int j=1;j<=N;j++)

Q+=data->d[i][j];

return Q;

}

float GetQmin()

{

float Qmin=N*(N-1);

return Qmin;

}

float GetQrel()

{

float Qrel=GetQ()/GetQmin()-1;

return Qrel;

}

float Getd()

{

float d=data->A[1][1];

for (int i=2;i<=N;i++)

for (int j=1;j<=N;j++)

if (d<data->d[i][j]) d = data->d[i][j];

return d;

}

float GetN()

{

return N;

}

float GetZmax()

{

float *Z = new float [N+1];

for (int i=1;i<=N;i++)

{

Z[i]=0;

for (int j=1;j<=N;j++)

if(i!=j)

{

Z[i]+=data->d[i][j];

}

Z[i] = GetQ()/(2*Z[i]);

}

float Zmax=Z[1];

for (int i=2;i<=N;i++)

if (Zmax<Z[i]) Zmax = Z[i];

return Zmax;

}

float Getb()

{

float b=0;

b=(N-1)*(2*GetZmax()-N)/(GetZmax()*(N-2));

return b;

}

private:

int N;

Data *data;

};

TfrmMain *frmMain;

__fastcall TfrmMain::TfrmMain(TComponent* Owner)

: TForm(Owner)

{

}

void __fastcall TfrmMain::btnLoadClick(TObject *Sender)

{

Data *data;

if (OpenDialog->Execute()&&FileExists(OpenDialog->FileName))

{

data = new Data(OpenDialog->FileName,"rt");

}

Calculator *Calc = new Calculator(data);

edtR->Text=FloatToStr(Calc->GetR());

edtE->Text=FloatToStr(Calc->GetE());

edtQ->Text=FloatToStr(Calc->GetQ());

edtQmin->Text=FloatToStr(Calc->GetQmin());

edtQrel->Text=FloatToStr(Calc->GetQrel());

edtD->Text=FloatToStr(Calc->Getd());

edtN->Text=FloatToStr(Calc->GetN());

edtZmax->Text=FloatToStr(Calc->GetZmax());

edtB->Text=FloatToStr(Calc->Getb());

}

Входные данные

Результат

Вывод

В проделанной лабораторной работе были изучены структурно-топологические характеристики систем и способы их вычислений; проанализировано качество предложенных вариантов структур и их элементов с позиций системного подхода.

6